当前位置:首页 >焦点 >礼貌地说你好——TCP协议三次握手 TCP协议是协议如何建立连接的

礼貌地说你好——TCP协议三次握手 TCP协议是协议如何建立连接的

2024-06-25 22:14:39 [百科] 来源:避面尹邢网

礼貌地说你好——TCP协议三次握手

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

沟通的次握艺术

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

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

礼貌地说你好——TCP协议三次握手 TCP协议是协议如何建立连接的

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

礼貌地说你好——TCP协议三次握手 TCP协议是协议如何建立连接的

等一下,次握我们现在在做什么,礼貌心理学知识普及?这不是地说我们的目的,也不是协议我们的强项。

礼貌地说你好——TCP协议三次握手 TCP协议是协议如何建立连接的

我们只是次握想来介绍一下,网络中的礼貌计算机之间是如何礼貌问好地,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次握手的机制。为了防止因为建立连接中断时,而导致频繁建立无效连接,浪费服务器资源。服务端在第一次握手时则先维持一个未连接记录表,最后连接建立成功,再将未连接记录表中的数据删除。

责任编辑:赵宁宁 来源: FrenziedJavaLand 网络TCP协议

(责任编辑:综合)

    推荐文章
    热点阅读