TCP 为什么三次握手而不是两次握手(正解版)
创作时间:
作者:
@小白创作中心
TCP 为什么三次握手而不是两次握手(正解版)
引用
CSDN
1.
https://blog.csdn.net/lengxiao1993/article/details/82771768
TCP三次握手是网络通信中的一个基础概念,但你真的理解为什么需要三次握手而不是两次吗?本文将为你揭示这个看似简单却蕴含深刻原理的通信机制。
参考文章
Why do we need a 3-way handshake? Why not just 2-way
大部分网络博客的错误解读
首先需要声明的是, 百度搜索到的大部分网络博客关于这个问题的解答都是不清晰或者不准确的。 讨论这个问题的大部分博客都会引用《计算机网络》的内容:
- 防止已失效的连接请求又传送到服务器端,因而产生错误
不幸的是, 这种解释是不准确的, TCP 采用三次握手的原因其实非常简单, 远没有大部分博客所描述的那样云山雾绕。
这里先给出结论:
- 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤
- 如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认
先修知识
TCP 通信流程
TCP 的通信流程
上图中的每一个箭头都代表着一次 TCP数据包的发送
- 需要注意的是, 上图中出现的 ACK = x +1 的写法很容易让人误以为数据包中的 ACK 域的数据值被填成了 x+1 。 ACK = x+1 的实际含义是:
- TCP 包的 ACK 标志位(1 bit) 被置成了 1
- TCP 包的确认号(acknowledgement number ) 的值为 x+1
- 类似的, TCP 数据包中的 SYN 标志位, 也容易与序号(sequence number) 混淆, 这点需要读者注意
TCP 数据包结构图
为什么 TCP 需要握手这个操作
在解答为什么 TCP 需要三次握手, 而不是两次之前, 首先需要回答的问题是:
- 为什么需要握手这个操作, 能不能不握手?
如果读者对比一下 UDP 的通信流程和 TCP 的通信流程, 可以发现, 在 UDP 协议中, 是没有握手这个操作的。
这里就引出了 TCP 与 UDP 的一个基本区别, TCP 是可靠通信协议, 而 UDP 是不可靠通信协议。 - TCP 的可靠性含义: 接收方收到的数据是完整, 有序, 无差错的。
- UDP 不可靠性含义: 接收方接收到的数据可能存在部分丢失, 顺序也不一定能保证。
UDP 和 TCP 协议都是基于同样的互联网基础设施, 且都基于 IP 协议实现, 互联网基础设施中对于数据包的发送过程是会发生丢包现象的, 为什么 TCP 就可以实现可靠传输, 而 UDP 不行?
TCP 协议为了实现可靠传输, 通信双方需要判断自己已经发送的数据包是否都被接收方收到, 如果没收到, 就需要重发。 为了实现这个需求, 很自然地就会引出序号(sequence number)和确认号(acknowledgement number)的使用。
发送方在发送数据包(假设大小为 10 byte)时, 同时送上一个序号( 假设为 500),那么接收方收到这个数据包以后, 就可以回复一个确认号(510 = 500 + 10) 告诉发送方 “我已经收到了你的数据包, 你可以发送下一个数据包, 序号从 510 开始” 。
这样发送方就可以知道哪些数据被接收到,哪些数据没被接收到, 需要重发。
为什么需要三次握手,而非两次
正如上文所描述的,为了实现可靠传输,发送方和接收方始终需要同步(SYNchronize )序号。 需要注意的是, 序列号并不是从 0 开始的, 而是由发送方随机选择的初始序列号 ( Initial Sequence Number, ISN )开始 。 由于 TCP 是一个双向通信协议, 通信双方都有能力发送信息, 并接收响应。 因此, 通信双方都需要随机产生一个初始的序列号, 并且把这个起始值告诉对方。
于是, 这个过程就变成了下面这样。
下面这个流程图描述的和上面一样, 但是更加清楚的展示了 TCP 数据包标志位, 以及数据域的命名来源。
值得注意的是, 如上图所说, 最后一次握手在默认不携带数据的情况下, 由于SYN 不是 1 , 是不消耗序列号的。 所以三次握手结束后,客户端下一个发送的报文中seq 依旧是 x+1, 示意图如下
注意到, 上图第四步发送的 seq 和第三次握手的 seq 是一样的, 体现了最后一次握手, 默认不消耗序列号的特点。
本文原文来自CSDN
热门推荐
客厅吸顶灯怎么安装—客厅吸顶灯怎么安装图解视频教程
三支一扶考试的挑战与机遇:深入解析录取比例与备考策略
王汉伦:五四新女性的典范
‘王炸’对决:斗地主游戏中的智谋较量与心理博弈
基于GIS的地质灾害危险性评估与风险管理决策
这种独特蚂蚁每天只工作10分钟,而且为了不被热死,它们不择手段
中央空调维护全攻略:日常操作与故障排查指南
人民日报献礼国庆科技盘点:鸿蒙NEXT的自主崛起之路
Excel财税管理设置指南:从模板创建到数据可视化
如何提升“心理弹性”
面对同事间的利益竞争,如何处理关系
财富的捆绑:为什么“财务自由”并不等于心理自由?
罗汉果过期了还能泡水喝吗?为啥罗汉果会让咽炎加重?
枸橘长什么样子?都有哪些形态特征呢?
福外20年 | 古厝有“福”——用脚步丈量历史 用实践保护文化
铠甲勇士的历史与未来展望
iPhone 来电如何拒接、挂断电话不被发现?用这7 个方法拒接电话更好
马蜂窝2024春节旅游数据报告:先团圆再旅行,年轻人热衷合家错峰出游
退休后,想安安稳稳的度过晚年,就要逼自己做好这4件事
与梅西相比,C罗更具球王气质——基于数据与职业生涯的客观分析
新型“Kedr”导弹系统引发的国际争议与军事影响分析
哪些高效沟通的说话方法适合公众演讲?
飞机经停是什么意思?经停时可以下飞机吗?详细解析飞机经停的含义与流程
盖碗茶具:从历史到现代的茶文化传承
从“非主流”理发师到直播间粤语歌王——他在时代的浪尖怀旧
山东老农自称宋江后人,拿出族谱和“宋江阴阳刀”证明
创业过程中,如何有效利用大数据分析来优化决策与增长?
光伏储能系统原理详解
正史与小说中的赵云:“辉煌过,整整一部《三国演义》”
人工智能如何出计算题