一文详解TCP的三次握手:为什么偏偏是三次

news/2024/5/18 16:08:53 标签: tcp/ip, udp, 网络, 经验分享, 网络协议

解答这个问题之前,要先解答为什么需要握手这个操作, 能不能不握手?

如果对比一下 UDP 的通信流程和 TCP 的通信流程, 可以发现, 在 UDP 协议中, 是没有握手这个操作的。

这里就引出了 TCP 与 UDP 的一个基本区别, TCP 是可靠的通信协议, 而 UDP 是不可靠的通信协议。

TCP 为什么可靠? 接收方收到的数据是完整, 有序, 无差错的。

UDP 为什么不可靠? 接收方接收到的数据可能存在部分丢失, 顺序也不一定能保证。

TCP 协议是为了实现可靠传输, 通信双方需要判断自己已经发送的数据包是否都被接收方收到, 如果没收到, 就需要重发,为了实现这个需求, 所以引出序号(sequence ) 和 确认号(ack) 的使用。

如上图为TCP三次握手的过程。

由TCP连接发起方(图中Clinent),发送第一个SYN位置1的TCP报文。初始序列号J为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为无。

接收方(图中Server)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。初始序列号K为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为J+1;

PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文确认序列号为K+1。PC2收到之后,TCP双向连接建立。

那么为什么TCP需要三次握手,而非两次?

正如上文所描述的,为了实现可靠传输,发送方和接收方始终需要同步( SYN)序号。 需要注意的是, 序号并不是从 0 开始的, 而是由发送方随机选择的初始序列号 ( Sequence Number, )开始 。 由于 TCP 是一个双向通信协议, 通信双方都有能力发送信息, 并接受响应。 因此, 通信双方都需要随机产生一个初始的序列号, 并且把这个起始值告诉对方。

为了实现可靠的数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。


http://www.niftyadmin.cn/n/1524712.html

相关文章

python dialogflow_用Flask+dialogflow+Facebook搭建聊天机器人

谷歌提供的dialogflow接口可以非常方便地提供自然语言处理,并很大程度的让使用者可以自行DIY。这个项目就是尝试用这个接口,来非常简单地实现一个聊天机器人。首先前端直接采用了Facebook提供的聊天窗口,既节省了前端开发的时间和精力&#x…

从网络工程专业到进入大厂实习,我是如何提升自己的

授人以鱼仅供一饭之需,授人以渔则终身受用无穷。希望可以帮到各位同学! 我的经历现在回想起来还蛮有意思的。高考的时候我报的就是网络工程专业,当然那个时候也不了解这个专业是干什么的,只是觉得像网络游戏之类的网络应用比较有意…

python实现logistic人口预测_【转】python实现logistic增长模型拟合2019-nCov确诊人数...

背景:众志成城抗疫情。今天是2020年1月28日,2019-nCov确诊人数一直在增长趋势,如何更好的对确诊人数进行拟合和预测,需要我们用python来实现。注意,本文模型为logistic增长模型,并非最佳预测模型&#xff0…

赶紧收藏起来,一文详解MPLS基础和工作原理

MPLS是一种在IP骨干网上利用标签来指导数据报文高速转发的协议,相较于传统的IP路由方式,MPLS提供了一种类似于交换机转发的新的网络交换方式,它将IP地址映射为简短且长度固定、只具有本地意义的标签,以标签交换替代IP查表&#xf…

.a文件转换为.lib文件_Aiseesoft Mac PDF Converter Ultimate(PDF文件转换器)

Aiseesoft PDF Converter for Mac 可以轻松的帮你将DPF转换为Word / Excel / Powerpoint /图像/文本/ EPUB等。此外,您可以使用它作为PDF阅读器,在转换前预览PDF文件。Aiseesoft PDF Converter Ultimate是一款专业的PDF文件转换工具,它包含了…

程序员工资一般多少_一般程序员真实工资 程序员工资薪酬大起底

工资是个有趣的话题。每个人对这个话题都有自己的想法。它同时也是同在打工的人们之间一个独特的禁忌。一般的程序员真是工资是多少?想必这是很多程序员想问而又问而不得的问题,下面小编从几个大公司和一些小公司的程序员工资来做个简单对比!…

普通的网络工程专业学生,我是如何考取HCIP进入大厂的

我之所以毕业能进大厂实习,技术和证书缺一不可。 先说下我的简历,我的简历与一般实习生不同的是我有专业技术,虽然他们也上了很多专业课但是都没有听明白,我自己是有实践的技术和专业的证书,而且我的在校经历是非常引起…

测试公众号修改名称_微信公众号认证后如何修改名称

微信公众号认证后,需要在下次年审的时候才可以改名。1.微信公众号中的个人订阅号类型不支持微信认证,因此不能修改名字。2.其他类型公众号,如果没有进行微信认证,也不能修改名字。3.服务号、认证的微信公众号,每年需要…