一个完整的TCP连接

Posted 朱根民

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个完整的TCP连接相关的知识,希望对你有一定的参考价值。

什么是TCP连接?

为实现数据的可靠传输,TCP要在应用进程间建立传输连接。它是在两个传输用户之间建立一种逻辑联系,使得通信双方都确认对方为自己的传输连接端点。

建立连接

建立连接前,服务器端首先被动打开其熟知的端口,对端口进行侦听。当客户端要和服务器端建立连接时,发起一个主动打开端口的请求(该端口一般为临时端口);然后进入三次握手的过程。

 

 

① A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为1,并选择序号 x,表明传送数据时的第一个数据字节的序号是 x(设置初始段序号SEQ = x ,例如SEQ = 26 500)。

② B 的 TCP 收到连接请求报文段后,如同意,则发回确认。
B 在确认报文段中应将 SYN 置为 1,其确认号ACK应为 x + 1(ACK 26 501),同时也给出自己的选择序号 y(设置初始段序号SEQ = y ,例如SEQ = 29 010)。

③ A 收到此报文段后,向 B 给出确认,其确认号应为 y + 1(ACK = 29011)。
A 的 TCP 通知上层应用进程,连接已经建立。
当运行服务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,连接已经建立。

由于客户对报文段进行了编号,它知道哪些序号是期待的,哪些序号是过时的。当客户发现报文段的序号是一个过时的序号时,就会拒绝该报文段,这样就不会造成重复连接。

 

释放连接

数据传输结束后,通信双方都可以释放连接。

四次分手的过程:

 

过程① 结束时,从 A 到 B 的连接就释放了,连接处于半关闭状态。
相当于 A 向 B 说:“我已经没有数据要发送了。但你如果还发送数据,我仍接收。”

过程② 结束后,至此,整个连接已全部释放。

 

 
 
 

以上是关于一个完整的TCP连接的主要内容,如果未能解决你的问题,请参考以下文章

TCP和UDP的最完整的区别

TCP和UDP的最完整的区别

一次完整的HTTP请求所经历的7个步骤

TCP和UDP最完整的区别

TCP和UDP的最完整的区别

为什么TCP连接需要三次握手分开需要四次握手?