码迷,mamicode.com
首页 > 其他好文 > 详细

TCP 连接为什么需要 3 次握手和 4 次挥手

时间:2020-06-28 15:19:58      阅读:45      评论:0      收藏:0      [点我收藏+]

标签:可靠传输   serve   效率   技术   目的   资源   server   请求   nbsp   

  技术图片

 

1、为什么需要 3 次握手

  目的:为了防止 已失效的连接请求报文段 突然又传送到了服务端,因而产生错误。主要防止资源的浪费。

  额外补充:TCP作为一种可靠传输控制协议,其核心思想:既要保证数据可靠传输,又要提高传输的效率,而用三次恰恰可以满足以上两方面的需求!两次无法保证数据可靠,四次及以上无法保证效率。

   详解过程:

    当客户端发出第一个连接请求报文段时并没有丢失,而是在某个网络节点出现了长时间的滞留,以至于延误了连接请求,然后在某个时间之后才到达服务器。

    这应该是一个早已失效的报文段。

    但是服务器在收到此失效的连接请求报文段后,以为是客户端的一个新请求,于是就响应客户端发出了确认报文段,同意建立连接。

    假设不采用三次握手,那么只要服务器发出确认后,新的连接就可以建立了。但是由于客户端没有发出建立连接的请求,因此不会管服务器的确认,也不会向服务器发送数据,但服务器却以为新的运输连接已经建立,一直在等待,所以,服务器的资源就白白浪费掉了。

    采用 “三次握手” 的办法可以防止上述现象发生,例如上面提到的这种情况,client 不会像 server 的确认发出确认。server 由于收不到确认,就知道 client 并没有要求建立连接。

2、为什么断开连接需要 4 次挥手

  目的:防止 “已失效的连接请求报文” 出现在连接中,在释放连接的过程中会有一些无效的滞留报文,这些报文在经过2MSL的时间内就可以发送到目的地,不会滞留在网络中。这样就可以避免在下一个连接中出现上一个连接的滞留报文了

  详解过程:

    为了保证在最后断开的时候,客户端能够发送最后一个ACK报文段能够被服务器接收到

    如果客户端在收到服务器给它的断开连接的请求之后,回应完服务器就直接断开连接的话,若服务器没有收到回应就无法进入CLOSE状态,所以客户端要等待两个最长报文段寿命的时间,以便于服务器没有收到请求之后重新发送请求。

 

TCP 连接为什么需要 3 次握手和 4 次挥手

标签:可靠传输   serve   效率   技术   目的   资源   server   请求   nbsp   

原文地址:https://www.cnblogs.com/liang1101/p/13202738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!