TCP协议连接建立和终止详解(三次握手/四次挥手)

计算机网络 TOMORROW 4个月前 (06-02) 193次浏览 0个评论 扫描二维码

三次握手

       TCP连接通常是由客户端发起建立,服务器监听接受。

TCP 协议连接建立和终止详解(三次握手/四次挥手)

 

  • 首先由客户端发送连接建立的请求数据报,其中 SYN 标志位置一,表示是请求建立连接。初始序号为 x,该数据报不能携带数据,但要消耗一个序号。

 

  • 服务器接收到客户端的 SYN 请求后,如同意建立连接则开辟接收缓存,并回复确认。回复确认的报文中,SYN 标志位同样置一,表示请求建立另一个方向的连接;序号为 y;确认序号为 x+1,表示已经收到序号 x 的数据报;ACK 置一,表示确认序号有效。该数据报同样不可携带数据,但要消耗一个序号。

 

  • 客户端收到服务器的确认报文后,也开辟出接收缓存,并回复确认。回复确认报文中,SYN 标志为置 0;序号为 x+1;确认序号为 y+1;ACK 标志位置 1。该数据报可以携带数据。

 

       完成以上三步,TCP连接已经成功建立,已经可以开始全双工通信。

       TCP协议允许同时打开的情况,此时无客户端和服务器。

 

四次挥手

       TCP连接的终止可由双方各自发起。此处假设有客户端首先发起。

TCP 协议连接建立和终止详解(三次握手/四次挥手)

 

  • 首先客户端向服务器发送请求终止连接的报文,FIN 标志位置 1,表示此报文是连接终止报文;序号为 u;确认序号未知。该报文是可以携带数据的,因为此时连接尚未释放。

 

  • 服务器收到客户端的终止请求后,处理完接收到的数据后,释放缓存空间,释放连接,并回复确认。回复确认报文中,序号为 v;确认序号为 u+1;ACK 标志位置 1。此报文告知客户端,客户端->服务器方向的连接已经释放,服务器不能再接收数据。此时连接处于半关闭状态。另外,此报文是可以附带数据的。

 

  • 服务器将需要发送的数据发送完成并收到确认后,发起终止连接请求。此报文中,FIN 置 1;序号为 w;确认序号仍为 u+1;ACK 置 1。此报文也可携带数据。

 

  • 客户端接收到服务器的终止请求后,释放缓存,释放连接,并回复确认。确认报文中,序号为 u+1;确认序号为 w+1;ACK 置 1。此报文不可携带数据。发送完此报文后,客户端等待 2MSL 后如果没收到服务器重传的 FIN 报文则可彻底关闭连接;如果收到,则需要重传 FIN 的确认报文,再等待 2MSL 时间。

 

完成以上四步,TCP连接已经完全释放。

TCP协议允许同时关闭的情况。

 

如果希望加深对 TCP 协议的理解,可以通过抓取 TCP 协议连接建立和终止的实际报文进行分析解读来加深理解,详情参考:

从抓取到的 TCP 报文理解三次握手四次挥手(详解)

 


TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:TCP 协议连接建立和终止详解(三次握手/四次挥手)
喜欢 (2)
TOMORROW
关于作者:
一个从石头坑掉到泥坑里的攻城狮。
酷酷的哑铃发表我的评论  请填写正确的 个人信息
取消评论
表情 加粗 斜体 签到