礼貌地说你好——TCP协议三次握手
创始人
2025-06-30 12:10:10
0

沟通的艺术

我们在与他人沟通的时候,最基础的最重要的是什么?

是好的沟通方式?是恰到好处的时机?是能够设身处地地为他人着想?

是,但不完全是,沟通的第一步当然是先要礼貌地问好啦。

等一下,我们现在在做什么,心理学知识普及?这不是我们的目的,也不是我们的强项。

我们只是想来介绍一下,网络中的计算机之间是如何礼貌问好地,TCP协议是如何建立连接的。

TCP协议三次握手

TCP协议报文详解一文中,已经详细介绍了TCP报文的内容,那么TCP协议中,主机和主机之间,是如何建立连接的?

首先,请求建立连接的主机我们叫做客户端,被连接的主机叫做服务端。

第一次握手

客户端向服务端请求建立连接的时候,会发送带有序号为j(seq=j),并且控制位为SYN=1的数据包发送给服务端,此时客户端状态为SYN_SENT。

第二次握手

服务端接受到数据包后,则会在未连接队列中为客户端的SYN包(seq=j)新增一个条目,表明已收到客户端的数据包。并且服务端会向客户端发送带有序号为k(seq=k),确认号为j+1(ack=j+1),并且控制位为SYN=1,ACK=1的数据包发送给客户端,等待客户端确认,此时服务端状态则为SYN_RECV。

第三次握手

客户端收到服务端的 SYN=1, ACK=1, ack=j+1, seq=k 的数据包后,则会响应一个ACK=1, seq=j+1, ack=k+1的数据包给服务端,表示客户端已收到服务端的数据包,并进入ESTABLISHED的状态,表示连接已建立。服务端收到ACK数据包后,则会将对应的未连接队列中对应的条目删除,并进入并进入ESTABLISHED的状态,表示连接已建立。

重试与容错

为什么TCP协议一定要进行3次握手,2次不行吗?

首先假设只进行两次握手,即服务端收到SYN数据包后马上建立连接,并开始传输数据,会有什么问题呢?

如果服务端接受到SYN数据后,立马为相应的客户端建立连接,但是,客户端如果因为某些原因(比如网络中断等),未收到客户端的ACK数据包,请求重新建立连接,并向服务端重新发送SYN数据包。此时在服务端又需要重新创建连接资源,但是旧的的连接实际是无效连接,反而浪费了系统资源。如果大量的客户端长时间超时重试,则会导致服务器的资源的严重浪费。

总结

TCP协议中,为了保证互联网中连接的可靠性,采用了3次握手的机制。为了防止因为建立连接中断时,而导致频繁建立无效连接,浪费服务器资源。服务端在第一次握手时则先维持一个未连接记录表,最后连接建立成功,再将未连接记录表中的数据删除。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...