TCP为什么四次挥手?而不是三次?
-
正常流程:服务接收到 客户端的 FIN请求后,会发送一个ACK响应,等待系统资源释放后,再发送FIN 请求给客户端,客户端再发送一个ACK响应。
-
若为三次:就是将2和3合并为一次,这就会出现问题,这一次发送就会等到LAST_ACK 的时候发送,这期间就有个时间差,服务器要等待资源释放,大概在2-5分钟,而TCP默认等待30秒后 ,要保证可靠,就会不断再次发送,造成资源浪费。
-
所以,需要先回一个ACK响应,等资源释放后,再发送FIN请求。
例子”:
-
“我准备断开了,你那边咋样”
-
“我知道了,马上”
-
“我也准备断开了,你咋样”
-
“好的,拜拜了您”
TCP为什么三次握手?而不是两次,四次?
-
正常流程:服务器响应后,客户端也要发一个再次确定,双方才正式建立了连接。
-
若为两次:服务器响应后,服务器就认为建立了连接,那么很可能客户端只是发着玩,后面就不管了,而服务器认为连接已经建立,这样就造成了资源的浪费。
-
若为四次:完全没必要,会造成资源的浪费。
例子:
-
”你在不在?我要过来。“
-
”我在的,你现在过来吗?“
-
”是的,我来了。“