为什么不能用两次握手进行连接?

Posted 今天付出是为明天回报

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么不能用两次握手进行连接?相关的知识,希望对你有一定的参考价值。

我们知道,3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
    现在把三次握手改成仅需要两次握手,死锁是可能发生的

 

  作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。

 

校评:这个解释也值得商榷,这里指说S超时重传,难道C没有收到S的ACK信号,不会重新发送SYN信号么? 只要重新发送SYN,S端自然也会发送确认应答分组,这样就不会导致死锁。

 

以上是关于为什么不能用两次握手进行连接?的主要内容,如果未能解决你的问题,请参考以下文章

经典面试题—在浏览器中输入URL之后发生了什么?

TCP为什么要有三次握手,而不是四次五次

详解TCP为什么不能是两次握手

TCP到底有多厉害?

6 张图带你搞懂 TCP 为啥是三次握手,而不是两次或四次?

对TCP协议握手的理解(转)