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

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

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

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

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

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

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

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

posted @ 2018-02-27 12:56  瀧思葉  阅读(140)  评论(0编辑  收藏  举报