首页 > 其他 > 详细

三次握手和四次挥手(二)

时间:2018-02-27 13:02:31      阅读:218      评论:0      收藏:0      [点我收藏+]

(一)为什么要三次握手而不是两次握手

①:原因--->会造成服务器端资源浪费(因为当碰上网络延时的时候,服务器端会给失效的报文建立连接,然后客户端又不会发送数据)。

(二)为什么连接的时候是三次握手,关闭的时候却要四次挥手?

①:原因--->建立连接时:当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的

                    关闭连接时:当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

(三)为什么TIME_WAIT状态需要经过2MSL(最大报文生存时间)才能返回到CLOSE状态

①:原因-->因为我们必须假象网络使不可靠的,有可能最后一个ACK报文丢失TIME_WAIT状态就是用来重发丢失的ACK报文的。

三次握手和四次挥手(二)

原文:https://www.cnblogs.com/not-alone/p/8478273.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!