关于TCP三次握手?二次握手为什么不行?

  • 三次握手
  • 客户端发请求给服务端
  • 服务端做了确认
  • 客户端对确认做确认
  • 此后,双方才开始收发数据
  • 现在,如果去掉第三次
  • 那么,如果客户端 的 建立链接请求 延迟到到达服务端
  • 客户端没收到服务端ack,以为超时了,所以认为链接不成功。
  • 这个时候服务器又收到了,发ack给客户端
  • 客户端发现自己么有建立链接请求,认为ack无效。
  • 所以客户端不会收发数据。
  • 而服务端以为客户端请求自己ack了,链接就建立了,所以一直等待与客户端通信中。
  • 浪费了服务端的资源。

【zz】关于TCP三次握手?二次握手为什么不行?

  • 转载
  • 建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。

(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。

(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。

(3)采用两次握手不行,原因就是上面说的失效的连接请求的特殊情况。

谢希仁版《计算机网络》中的例子:

"已失效的连接请求报文段”的产生在这样一种情况下:

client发出的第一个连接请求报文

你可能感兴趣的:(网络服务入门与实战)