码迷,mamicode.com
首页 > 其他好文 > 详细

一个完整的TCP连接

时间:2019-11-25 23:33:40      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:syn   序号   打开   图片   tcp   log   ack   nts   联系   

什么是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连接

标签:syn   序号   打开   图片   tcp   log   ack   nts   联系   

原文地址:https://www.cnblogs.com/zhugenmin/p/11931490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!