你需要知道的 TCP 四次挥手

和 TCP 三次握手不同。TCP 关闭连接的挥手足足有四次。这是因为第二次挥手和第三次挥手之间可能有一些服务端需要发送的处理比较慢的数据要返回,所以没有将这两次挥手合并。

和 TCP 三次握手不同。TCP 关闭连接的挥手足足有四次。这是因为第二次挥手和第三次挥手之间可能有一些服务端需要发送的处理比较慢的数据要返回,所以没有将这两次挥手合并。

你需要知道的 TCP 四次挥手

大家好,我是前端西瓜哥。今天给大家说说 TCP 的四次挥手。

建立 TCP 连接一段时间后,如果要断开 TCP 连接,就会进行 TCP 四次挥手过程完成断开操作。

TCP 四次的过程有点像 TCP 建立连接的三次握手。

下图为 TCP 头部的结构,我们的 TCP 四次挥手主要用到其中的标黄的部分。

你需要知道的 TCP 四次挥手

和三次握手的发起者必须是客户端不同,断开 TCP 连接的发起方可以是任何一方。为了方便讲解,下面我们以客户端作为发起者进行描述。

TCP 四次挥手过程

我们先看示意图。

你需要知道的 TCP 四次挥手

第一次挥手,客户端向服务端发送 TCP 请求,将 TCP 头部中的。

  1. FIN 设置为 1。
  2. seq 设置为一个随机数 x。

FIN 是一个标志位,表示结束(finish)的意思,1 等同于 true。

seq 是个序列号,一个装数据的地方,我们这里给他设置为一个随机数,用于给服务端做确认,好对应上这个 TCP 请求。

第二次挥手,服务端发送 TCP,并将 TCP 头部中的。

  1. ACK 设置为 1(acknowledge,表示 “收到” 的意思)。
  2. ack 确认号设置为 x+1(x 来自第一次挥手)。

当客户端收到这个 TCP 请求时,表示从客户端到服务端的通道已经关闭,你不能再向服务端发正常的数据请求了。

此时服务端到客户端还是可以发送数据的。如果服务端有一些之前的 TCP 请求没来得及响应,在第二次挥手和第三次挥手期间还是可以去返回的。

第三次挥手,服务端向客户端发送 TCP 请求:

  1. FIN 设置为 1。
  2. seq 设置为一个随机数 y。

类似第一次挥手,只是这次发送方为服务端。

第四次挥手,客户端向服务端发送 TCP 请求:

  1. ACK 设置为 1。
  2. ack 确认号设置为 y+1。

服务端接收到这个请求后,服务端就能成功变成关闭(CLOSE)状态。客户端则会等一段时间再进入关闭状态,因为第四次挥手不一定能成功发给服务端,所以要等一下,看看服务端会不会因为没收到第四次挥手,而重发第三次挥手。

结尾

和 TCP 三次握手不同。TCP 关闭连接的挥手足足有四次。这是因为第二次挥手和第三次挥手之间可能有一些服务端需要发送的处理比较慢的数据要返回,所以没有将这两次挥手合并。

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月6日 10:03
下一篇 2023年5月6日 10:03

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信