TCP的三次握手与四次挥手

图示TCP验证码发送


三次挥手:

    1.客户端主动向服务器发送SYN=1,seq = x(确认号4字节)

    2. 服务器发送SYN=1,seq = y (确认号),ACK = 1,ack= x+1;

回复四个信息,以确认收到请求。

    3.客户端再次发送请求 ACK = 1,ack= x+1

    其中有一个经典的问题:为什么需要等待客户端回复第三次消息呢?

原因是:服务器无法判断接收到的请求是否在网络滞留,需要客户端在发送一次请求,以防浪费资源。

四次挥手:

    1.客户端发送报文段  FIN 

    2.服务器收到后回应报文段 ack =  m+1,表示同意断开连接。发送剩下的数据。

    3.然后发送 FIN 码,等待回应。

    4.客户端收到FIN 码后,发送ACK 码,等待2个最长报文时间后关闭连接。

    5.服务器收到最后的ACK码后关闭连接。

 其中有两个经典的问题:为什么客户端最后还要等待2MSL?

因为:防止服务器因网络原因没有收到最后的ACK码,所以等待2MSL,或许服务器没有收到最后的ACK码,重新再发FIN码。

为什么建立连接是三次握手,关闭连接确是四次挥手呢?

因为:服务器的ACK码和FIN码是分开发送的,期间还有数据传输的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容