计算机网络

UDP特点:

    1.UDP是无连接的,直接进行连接传输数据,不需要建立三次握手。

    2.UDP是面向报文的

    3.UDP没有拥塞控制

TCP特点:

    1.面向连接,传输通信之前需要建立连接。

     2.每一条tcp连接只能是点对点

     3.tcp提供全双工通信,双方可以同时发送和接收数据。

     4.tcp提供可靠交付,可靠有序,不丢不重

     5.tcp面向字节流

TCP如何实现可靠传输:

  1.流量控制:控制发送方的发送速率,让接收方能来得及接收。

          实现方法:利用滑动窗口机制,接收方根据接收数据的大小,动态调整发送方的发送窗口的大小,通过设置ack中窗口大小来通知发送方。

   2.拥塞控制:防止过多的数据注入到网络中造成拥塞情况。

TCP三次握手与四次挥手:

  三次握手:

      第一次握手:客户端发送syn以及seq数据包,表示想建立连接。客户端进入syn_sent状态。

      第二次握手:服务端收到syn包后,发送ack确认包(syn+1),表示收到连接请求信息,服务端进入syn_rcvd状态。

      第三次握手:客户端收到ack确认信息后,发送数据,两边进入establelish状态。

  四次挥手:

    客户端发送FIN包,表示断开连接,客户端进入time_wait_1状态。

    服务端收到FIN包后,发送ack确认包,表示收到断开连接请求,服务端进入close_wait状态。客户端接收到进入time_wait_2状态

    过一会后

   服务端发送FIN包,表示断开连接,服务端进入last_ack状态。

  客户端发送ack确认包,表示收到断开信息,进入time_wait状态。服务端收到ack确认包后,就会关闭连接。客户端需要等待2MSL之后,没有收到任何信息,则说明服务端已经关闭连接。就会关闭连接。

为什要三次握手?

    如果客户端发送的连接请求在网络中延迟了,知道连接建立后才到服务端,服务端会认为是一个新的请求,会发送应答信息到客户端,但是客户端此时并没有发送信息,因此不会应答,服务端收不到则会一直发送,造成浪费。三次握手,则服务端没有收到确认信息的话,就认为客户端没有发送请求。

为什么四次握手?

   服务端发送确认断开请求后,会继续发送没有发送完的数据到客户端,发送完成后会发送FIN断开请求信息,因此需要四次握手。

为什么等待2SML时间?

   1.保证全双工通信的连接能够可靠关闭。当server端没有收到客户端发送的ack确认断开连接信息,会在超时之后重新发送FIN包,那么如果不等待2MSL时间,关闭连接的话,会收不到server端发送的数据。造成server端一直重传,不能关闭的状态。因此要等待2MSL时间,这个时间内,如果server端发送数据的话,client端会响应。

 

   

上一篇:CSP2021-J2/S2


下一篇:P5016 [NOIP2018 普及组] 龙虎斗(C语言)