TCP三次握手四次挥手

TCP 三次握手与四次挥手

三次握手(建立连接)

  1. 客户端发送 SYN=1, seq=x,进入 SYN_SENT 状态。
  2. 服务端回复 SYN=1, ACK=1, seq=y, ack=x+1,进入 SYN_RCVD 状态。
  3. 客户端发送 ACK=1, seq=x+1, ack=y+1,双方进入 ESTABLISHED 状态。

为什么是三次?主要是为了防止失效的连接请求报文段突然传到服务端,同时让双方都能确认彼此的收发能力。

四次挥手(释放连接)

  1. 主动方发送 FIN=1, seq=u,进入 FIN_WAIT_1。
  2. 被动方回复 ACK=1, ack=u+1,进入 CLOSE_WAIT。
  3. 被动方发送 FIN=1, seq=w,进入 LAST_ACK。
  4. 主动方回复 ACK=1, ack=w+1,进入 TIME_WAIT。

为什么四次?因为 TCP 是全双工的,一方关闭只表示不再发送数据,另一方可能还要继续发送,所以 FIN 和 ACK 需要分开。

TIME_WAIT 为什么是 2MSL?

确保最后一个 ACK 能到达对端(若丢失对端会重传 FIN),并让旧连接的所有报文在网络中消失,避免干扰新连接。

评论(0)

还没有评论,来抢沙发吧~