全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  应聘面试  >  wlw物联网面试题

四次挥手释放连接时,等待2MSL的意义?

发布时间:2022-10-27 17:10:01
发布人:wjy

  MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

  为了保证客户端发送的最后一个ACK报文段能够到达服务器。

  因为这个ACK有可能丢失,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传一次确认,重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL,而是在发送完ACK之后直接释放关闭,一但这个ACK丢失的话,服务器就无法正常的进入关闭连接状态。

四次挥手释放连接时,等待2MSL的意义?

  两个理由:

  1. 保证客户端发送的最后一个ACK报文段能够到达服务端。

  这个ACK报文段有可能丢失,使得处于LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认,服务端超时重传FIN+ACK报文段,而客户端能在2MSL时间内收到这个重传的FIN+ACK报文段,接着客户端重传一次确认,重新启动2MSL计时器,最后客户端和服务端都进入到CLOSED状态,若客户端在TIME-WAIT状态不等待一段时间,而是发送完ACK报文段后立即释放连接,则无法收到服务端重传的FIN+ACK报文段,所以不会再发送一次确认报文段,则服务端无法正常进入到CLOSED状态。

  2. 防止“已失效的连接请求报文段”出现在本连接中。

  客户端在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失,使下一个新的连接中不会出现这种旧的连接请求报文段。

  为什么TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态?

  理论上,四个报文都发送完毕,就可以直接进入CLOSE状态了,但是可能网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

相关文章

物联网公司面试题:边缘计算是什么,与传统云计算的区别

2023-07-28

物联网公司面试题:保障物联网安全的措施有哪些?

2023-07-26

物联网公司面试题:如何确保设备之间的通信安全性和数据的保密性?

2023-07-24

物联网公司面试题:介绍CoAP协议的特点及其在物联网中的应用

2023-07-21

请列举几个物联网安全威胁,解释如何提高物联网系统的安全性

2023-07-18

物联网中的边缘计算是什么?请解释其优势和应用场景

2023-07-18
在线咨询 免费试学 教程领取