TCP的三次握手与四次挥手

2018-07-31  本文已影响0人  Aaron_1fc9
图示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码是分开发送的,期间还有数据传输的。

上一篇下一篇

猜你喜欢

热点阅读