对TCP三次握手的思考

Posted lector

tags:

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

  从第一次了解到TCP的连接方式到现在有一年半了,但好像一直没有把三次握手的由来弄透彻,解释上总有一些瑕疵在,现在来说说昨晚的思考。

  对于一个通信链路,由于种种原因发送方发送的消息未必能传达到接收方,所以一条消息发送出去了,但没人回,有两种情况:一是数据没有传送成功,二是传送成功但对方没有立即回应。当我们规定在试探链路时,发送的消息必须回应,这样如果发送方依然没有收到回应,则可以判断是链路出了问题,如果收到回应说明链路可通,可以安心发送了。(所以叫你一声你要答应才礼貌)

  但这只是单向发送,作为被接收的一方只是发送了一个应答,站在它的角度,它能接收对面来的消息说明来路可通,但并不知道去路是否可通。而如果发送方收到应答后,此时该方知道来去路都是通的(establish),所以它还需要把这个消息告诉对方,让对方也放心。

  所以三次握手的本质是在一开始确立全双工的关系。同样四次挥手也是如此,只不过分解成了两次应答,让先发送完的一方先告知对方自己已发完,但对方未必发完,所以只好分开确认。如果两边速度完全一样则也可以合并成三次挥手。

  除此之外还有双方默认消息在一定时间内没有回应为此时链路不通,重新改送,多次发送不通则失败,所以收到对方的重复消息说明我方刚才的消息没有送到,需重发。(与三次握手的思想不冲突,柔和在一起形成基本通信协议)

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

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

Wireshark浅析Tcp三次握手

TCP三次握手,四次挥手原因

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

TCP三次握手与四次挥手

TCP的三次握手和四次挥手