TCP三次握手四次挥手
TCP 三次握手与四次挥手
三次握手(建立连接)
- 客户端发送
SYN=1, seq=x,进入 SYN_SENT 状态。 - 服务端回复
SYN=1, ACK=1, seq=y, ack=x+1,进入 SYN_RCVD 状态。 - 客户端发送
ACK=1, seq=x+1, ack=y+1,双方进入 ESTABLISHED 状态。
为什么是三次?主要是为了防止失效的连接请求报文段突然传到服务端,同时让双方都能确认彼此的收发能力。
四次挥手(释放连接)
- 主动方发送
FIN=1, seq=u,进入 FIN_WAIT_1。 - 被动方回复
ACK=1, ack=u+1,进入 CLOSE_WAIT。 - 被动方发送
FIN=1, seq=w,进入 LAST_ACK。 - 主动方回复
ACK=1, ack=w+1,进入 TIME_WAIT。
为什么四次?因为 TCP 是全双工的,一方关闭只表示不再发送数据,另一方可能还要继续发送,所以 FIN 和 ACK 需要分开。
TIME_WAIT 为什么是 2MSL?
确保最后一个 ACK 能到达对端(若丢失对端会重传 FIN),并让旧连接的所有报文在网络中消失,避免干扰新连接。


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