您的位置:首页 > 科技 > 能源 > 网络营销的有形层_公众号公众平台_网站建设费用多少钱_线上销售平台都有哪些

网络营销的有形层_公众号公众平台_网站建设费用多少钱_线上销售平台都有哪些

2025/4/23 4:37:23 来源:https://blog.csdn.net/Se7en0728/article/details/147233626  浏览:    关键词:网络营销的有形层_公众号公众平台_网站建设费用多少钱_线上销售平台都有哪些
网络营销的有形层_公众号公众平台_网站建设费用多少钱_线上销售平台都有哪些

通过一些问题来讨论 TCP 的四次挥手断开连接

  • 说一下四次挥手的过程?
  • 为什么需要四次呢?
  • time-wait干嘛的,close-wait干嘛的,在哪一个阶段?
  • 状态CLOSE_WAIT在什么时候转换成下一个状态呢?
  • 为什么 TIME-WAIT 状态必须等待 2MSL 的时间呢?
  • 服务端主动发起关闭还是客户端主动发起关闭TCP?

1. 说一下四次挥手的过程?

首先要说明,通信双发都可以主动断开连接,下面以客户端主动断开连接为例(后面几个问题照样):

第一次挥手,客户端发送 FIN 报文给服务端,表示不再发送数据了,但还能接收数据,报文中会指定一个序列号,客户端处于 FIN-WAIT-1 状态

第二次挥手,服务端在接收到客户端的 FIN 包后,会把客户端的序列号值 +1 作为 ACK 并发送,表示收到,此时服务端处于 CLOSE-WAIT状态。但服务端可能还有数据要发送,所以不会立即关闭发送通道

之后客户端接收到服务端发送的 ACK,进入 FIN-WAIT-2状态

第三次挥手,服务端将剩余数据发送完成后,会发送一份携带 FIN 的报文给客户端,且指定一个序列号,告诉客户端自己也不再发送数据了,服务端处于 LAST-ACK 阶段

第四次握手,客户端收到 FIN 后,就会将服务端的序列号值 +1 作为 ACK 报文回应,表示收到。客户端此时还处于 TIME-WAIT 阶段,要等待 2MSl 才会进入关闭状态,至此客户端完成连接的关闭。

服务端在收到客户端发来的 ACK报文后,就会进入关闭状态,不再接收和发送数据,至此服务端完成连接d

2. 为什么需要四次呢?

主要原因在于 TCP 是全双工通信,双方需要独立关闭各自的发送和接收通道

为什么不能和连接一样进行三次握手?

因为在客户端断开发送通道后,服务端可能还需要发送数据,不能立即关闭,所以 ACK 和 FIN 必须分开发送

3. time-wait干嘛的,close-wait干嘛的,在哪一个阶段?

需要 TIME-WAIT 状态简单说就两个原因:一个是优雅的关闭 TCP 连接,也就是尽量保证被动关闭的一端能够收到它自己发出去 FIN 报文的 ACK 确认报文。另一个是处理延迟的重复报文,避免连续两个使用相同四元组的连接,前一个的报文干扰后一个连接。以上两个目的都是由主动断开的一方在 TIME-WAIT 状态等待 2MSL 时间来保证的

第一个目的比较好理解,理论上 1MSL 的时间就足够确定被动关闭端已经接收到了 ACK 值。第二个目的的话,先等第一个 MSL 确保主动关闭端发出的最后一个 ACK 值从网络消失,再等第二个 MSL 是为了防止对端在收到这个 ACK 前的一刹那时间可能触发重传机制,等这个重传的 FIN 报文消失的时间也需要 1MSL,总共就是 2MSL

CLOSE-WAIT 状态需要的原因就是 TCP 为什么需要四次握手而不是三次握手的原因,主要就是在一二次握手后,服务端可能还有遗留的数据需要处理,也就是需要确保数据的完整性。在处理完之后会主动向客户端发送 FIN 报文,进入 LAST-ACK 状态

4. 状态CLOSE_WAIT在什么时候转换成下一个状态呢?

在服务端向客户端发送 FIN 包的时候,就会进入到 LAST-ACK状态

5. 为什么 TIME-WAIT 状态必须等待 2MSL 的时间呢?

MSL 是最长分段寿命,TIME-WAIT 状态等待 2MSL的原因有许多

因为客户端在发送完 ACK 报文后,不能确定是否到达了服务端,所以要等待 2MSL 的时间确保 ACK 可以到达服务端。如果在这个时间内 ACK 没有到达的话,则接收方会重新发送 FIN 报文

其次还能确保当前连接的所有报文都已经过期

6. 服务端主动发起关闭还是客户端主动发起关闭TCP?

都可以,主动关闭的一段会有 TIME-WAIT 状态,被动关闭的一段有 CLOSE-WAIT 状态


诚恳欢迎大家提出意见

......(待续未完

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com