三次握手和四次挥手

Posted 瀧思葉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三次握手和四次挥手相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

以上是关于三次握手和四次挥手的主要内容,如果未能解决你的问题,请参考以下文章

三次握手和四次挥手

一文搞懂TCP的三次握手和四次挥手

图解TCP的三次握手和四次挥手(简单明了)

TCP的三次握手和四次挥手

三次握手&&四次挥手

三次挥手?说好的四次挥手呢?(顺带解释三次握手和四次挥手)