阅读 16

四次挥手👋👋👋👋

TCP断开连接,需要四次挥手。话不多说,先上图。

图片摘自《趣谈网络协议》侵删

注释:主动方用A表示 被动方用B表示

第一次挥手:A向B发出了FIN标志位的包,表示A想断开连接了。此时A进入FIN-WAIT-1状态。【此时A不再发送数据包了,但是B的事情还不知道是否结束,可能B还在向A发送数据,所以这个时候,A还不能直接就断开,不管B;如果B不管A收到FIN包后,直接断开,A就处于不知所措的情况,也不行】

第二次挥手:B收到A的FIN包后,回复一个ACK包,表示B已经收到断开连接的请求了。此时B进入CLOSED-WAIT状态。A收到ACK包后,进入FIN-WAIT2状态。

第三次挥手:B发出ACK包后,B如果觉得自己的事情办完了的话,就可以把发送FIN包给A,表示自己也要断开连接了。此时B进入LAST_ACK状态。

第四次挥手:A接收到B的断开连接FIN包后,发出一个ACK包给B,等待2MSL(2个报文最大生存时间)后,就断开连接。【此时A收到FIN包后,直接断开的话,A的端口被空出来了,B原来发过来的包还可能在路上,空出来的A的端口被别的应用占用的话,B的后续的包可能会发给新的应用,这样,就有可能导致混乱,所以要等一段时间,确认B发的包都丢弃或者没有了,才会断开连接】

以上是自己的学习笔记,如有错误,还请大家指出,及时纠正。


参考致谢:《趣谈网络协议》《网络是怎样连接的》

关注下面的标签,发现更多相似文章
评论