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

对TCP三次握手的思考

时间:2018-11-24 14:05:07      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:角度   多次   连接   由来   全双工   lis   挥手   通信协议   问题   

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

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

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

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

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

对TCP三次握手的思考

标签:角度   多次   连接   由来   全双工   lis   挥手   通信协议   问题   

原文地址:https://www.cnblogs.com/lector/p/10011429.html

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