TCP的三次握⼿与四次挥⼿过程,各个状态名称与含义,TIMEWAIT的作⽤

浏览量:309
时间: 2024-01-30 15:45:20

三次握⼿

第⼀次握⼿:客户机⾸先向服务器的TCP发送⼀个连接请求报文段,这个特殊的报文段不含应⽤层数据, 其⾸部中同步位SYN被设置为1。另外,客户机会随机选择⼀个起始序号seq=x(连接请求报文不携带数 据,但要消耗⼀个序号).

第⼆次握⼿:服务器的TCP收到连接请求报文段后,如果同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,SYNACK位都被设置为1,确认号字段值为ack=x+1,并 且服务器随机产⽣起始序号seq=y. 确认包同样不包含应⽤层数据。

 第三次握⼿:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变 量。这个报文段的确认为ACK被设置为1,序号段被设置为seq=x+1,确认号字段ack=y+1. 该报文段可以 携带数据,如果不携带数据则不消耗序号。 理想状态下,TCP连接⼀旦建立,在通信双⽅中的任何⼀⽅ 主动关闭连接之前,TCP 连接都将被⼀直保持下去。因为TCP提供全双⼯通信,因此双⽅任何时候都可以 发送数据。四次挥⼿第⼀次挥⼿:客户机打算关闭连接,就向其TCP发送⼀个连接释放报文,并停⽌再发送数据,主动关闭TCP连接。该报文段的FIN标志位被设置为1seq=u,它等于前⾯已经发送过的数据的最后⼀个字节的序号 加1第⼆次挥⼿:服务器收到连接释放报文段后即发出确认,确认号是ack=u+1,序号为v,等于它前⾯已经发 送过的数据的最后⼀个字节序号加1.此时客户机到服务器这个⽅向的连接就释放了,TCP处于半关闭状 态。ACK=1seq=v,ack=u+1第三次挥⼿:若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时发出FIN=1,确认号ack= u+1,序号seq =w,已经发送过的数据最后⼀个字节加1。确认为ACK=1. (FIN = 1, ACK=1,seq = w, ack


四次挥⼿

第⼀次挥⼿:客户机打算关闭连接,就向其TCP发送⼀个连接释放报文,并停⽌再发送数据,主动关闭TCP连接。该报文段的FIN标志位被设置为1seq=u,它等于前⾯已经发送过的数据的最后⼀个字节的序号 加1

第⼆次挥⼿:服务器收到连接释放报文段后即发出确认,确认号是ack=u+1,序号为v,等于它前⾯已经发 送过的数据的最后⼀个字节序号加1.此时客户机到服务器这个⽅向的连接就释放了,TCP处于半关闭状 态。ACK=1seq=v,ack=u+1

第三次挥⼿:若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时发出FIN=1,确认号ack= u+1,序号seq =w,已经发送过的数据最后⼀个字节加1。确认为ACK=1. (FIN = 1, ACK=1,seq = w, ack=u+1) 

第四次挥⼿:客户机收到连接释放报文段后,必须发出确认。在确认报文段中,确认位ACK=1序号seq=u+1,确认号ack=w+1. 此时连接还没有释放掉,必须经过实践等待计时器设置的时间2MSL(Max Segment Lifetime),后,客户机才进入连接关闭状态。 (ACK=1,seq=u+1,ack=w+1) 如下图所⽰: 

image.png

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。侵权投诉
相关推荐HOT