A:FIN+ACK(发起断开连接)
B:ACK(对断开连接进行确认)
B:FIN+ACK(发起断开连接)
A:ACK(对断开连接进行确认)
之前开辟的资源销毁
为什么需要四次挥手?
TCP是全双工模式,需要双方都发出FIN信号
CLOSING
双方同时发送FIN,这样两次挥手就可以断开连接了
TIME-WAIT
关闭主动方需等待一段时间(一般是MSL的两倍)后才能真正关闭
MSL:Maximum Segment Lifetime(最大分段生存期)
为啥不能立马关闭?
可能由于网络原因,最后一次ACK无法发送到另一方,另一方就会再次发送FIN+ACK,而此时新的进程占用原来的端口,这样新的进行还没有和服务器建立连接就发起了断开连接的请求。
将第二次、第三次合并
当一方收到另一方的关闭FIN后,同时也没有数据要给另一方发送了,这时可以即那个第二次和第三次合并,直接发送FIN+ACK,这样三次挥手就可以断开连接了。
为什么不能前三次挥手之后就直接断开?
客户端或服务器需要对自己发出的请求进行确认。
网友评论