才子佳人博客

我的故事我讲述

再谈TCP为什么要三次握手,而不能二次握手?
 
来源:《计算机网络》  编辑:xjh  2017-11-16

谢希仁版《计算机网络》中的答案是这样的,主要是为了防止“已失效的连接请求报文段”突然又传送到了B,因而产生错误。所谓“已失效的连接请求报文段”产生在这样一种情况下:

client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段,但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是,就向client发出确认报文段,同意建立连接。

假设不采用“三次握手”,那么只要server发出确认,server端新的连接就建立了。但是,由于现在的client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ack包。

但server却以为新的传输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。

然而,若采用“三次握手”则可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接,因此server也就无法建立连接,当然也不会为其分配资源,可见,通过三次握手完全可以消除误会。

来源参考:
谢希仁,《计算机网络第五版》,电子工业出版社,p217


分类:网络日志| 查看评论
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: