MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上存在的最长的最长时间,超过这个时间报文将被丢弃。我们都知道IP头部中有个TTL字段,TTL是time to live的缩写,可译为“生存时间”,这个生存时间是由源主机设置设置初始值但不是但不是存在的具体时间,而是一个IP数据报可以经过的最大路由数,每经过一个路由器,它的值就减1,当此值为0则数据报被丢弃,同时发送ICMP报文通知源主机。RFC793中规定MSL为2分钟,但这完全是从工程上来考虑,对于现在的网络,MSL=2分钟可能太长了一些。因此TCP允许不同的实现可根据具体情况使用更小的MSL值。TTL与MSL是有关系的但不是简单的相等关系,MSL要大于TTL。

下面我们来看一张TCP连接释放的图:

(此图摘自谢希任计算机网络第六版)

从上图我们注意到,在TCP连接释放的过程中,从TIME_WAIT状态到CLOSED状态有一个超时设置,这个超时设置是2MSL(RFC793定义MSL为2分钟),那么为什么在TIME_WAIT后必须等待2MSL时间呢?主要原因有两点(在我的上一篇博客中有讲,我们再来说下吧):

1.为了保证客户端(我们记为A端)发送的最后一个ACK报文段能够到达服务器端。这个ACK报文段有可能丢失,因而使处在LASK—ACK端的服务器端(我们记为B端)收不到对已发送的FIN+ACK报文段。B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传的FIN+ACK报文段。接着A重传一次确认,重新启动2MSL计时器。最后,A和B都正常进入到CLOSED状态。如果A在TIME_WAIT状态不等待一段时间,而是在发送完ACK确认后立即释放连接,那么就无法收到B重传的FIN+ACK报文段,因而也不会再发送一次确认报文段,这样,B就无法正常进入CLOSED状态。

2.我们都知道,假如A发送的第一个请求连接报文段丢失而未收到确认,A就会重传一次连接请求,后来B收到了确认,建立了连接。数据传输完毕后,就释放了连接。A共发送了两个连接请求报文段,其中第一个丢失,第二个到达了B。假如现在A发送的第一个连接请求报文段没有丢失,而是在某些网络节点长时间都留了,以至于延误到连接释放后的某个时间才到达B,这本来是已失效的报文段,但B并不知道,就会又建立一次连接。而等待的这2MSL就是为了解决这个问题的,A在发送完最后一个确认报后,在经过时间2MSL,就可以使本链接持续时间内所产生的所有报文段都从网络中消失,这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

我们回到MSL,在2MSL时间内,该地址上的连接(客户端地址,端口和服务器的端口地址)不能被使用,比如我们在建立一个连接后关闭连接然后迅速重启连接,那么就会出现端口不可用的情况。

转载于:https://blog.51cto.com/10706198/1775555

TCP/IP中MSL详解相关推荐

  1. TCP/IP五层模型详解

    TCP/IP五层模型详解 应用层 HTTP:简单的明文传输的请求--响应协议 HTTP数据结构: 首行 头部 空行 正文 浏览器的控制 HTTPS 定义 CA认证 SSL加密流程: 混合对称加密过程: ...

  2. 前端基础-TCP/IP 不完全详解

    TCP/IP 不完全详解 TCP/IP是通信协议的统称.首先,我们先认识一下OSI参考模型 OSI 参考模型 OSI 参考模型中各个分层的作用如下: 概括的说: 应用层:为应用程序提供服务并规定应用程 ...

  3. TCP/IP概述和详解--一篇就够

    OSI(Open System Interface)模型属于理论的,主要看TCP/IP的实现. 先来个图 协议解释 TCP/IP模型分成:物理层(网络接口层).数据链路层.网络层.传输层.应用层 5层 ...

  4. TCP协议中报文详解

    TCP协议中报文SYN.ACK.FIN.RST.PSH.URG详解 1. SYN:同步连接序号,TCP SYN报文就是把这个标志设置为1,来请求建立连接: 2. ACK:请求/应答状态.0为请求,1为 ...

  5. tcp/ip协议知识详解

    一.TCP/IP参考模型 ISO制定的OSI参考模型的过于庞大.复杂招致了许多批评.与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用.如图2-1所示,是TCP/IP参考模型和OSI ...

  6. 【1】TCP/IP协议族详解-概述

    声明:本博客参考<TCP/IP详解卷一:协议> 1.背景介绍 TCP/IP起源于6 0年代末美国政府资助的一个分组交换网络研究项目,到 9 0年代已发展成为计算机之间最常应用的组网形式.它 ...

  7. 【4】TCP/IP协议族详解-ARP协议和RARP协议

    声明:本博客参考<TCP/IP协议详解卷一:协议> 1.概述 在以太网中一台主机将数据帧从一台主机发送到另一台主机时,是根据48bit的以太网地址确定目的接口的.设备驱动程序从不检查IP数 ...

  8. TCP/IP网络协议详解

    一. 计算机网络体系结构分层 一图看完本文 计算机网络体系结构分层 计算机网络体系结构分层 Frame:   物理层的数据帧概况 Ethernet II: 数据链路层以太网帧头部信息 Internet ...

  9. TCP/IP协议模型详解六数据传输过程

    2.4.数据传输流程 2.4.1.发送方 当我们在window系统或unix系统中使用应用程序发送一个"你好"文本数据时,是怎样传输出去并让对方接收的的? 1.在传输层,将&quo ...

  10. TCP/IP协议族详解

    目录 网络层 1.IP协议 1.1.IP地址 1.2.IP协议头 2.ARP及RARP协议 3.ICMP协议 传输层 1.TCP和UDP协议 2.TCP和UDP协议的一些应用 3.TCP"三 ...

最新文章

  1. PE文件和COFF文件格式分析——导出表的应用——通过导出表隐性加载DLL
  2. 2020-12-06
  3. shell实例第20讲:linux shell date的用法
  4. 在C++中调用DLL中的函数(2)
  5. 003Java语言环境搭建
  6. java泛型程序设计——翻译泛型表达式+翻译泛型方法
  7. WindowsXP命令行修改服务启动选项
  8. python输出字体的大小_Python密码学编程:文件的加密与解密
  9. NUS 联合 Sea AI Lab 发表 Multi-view Pose Transformer,完全端到端学习,超强可扩展性...
  10. matlab中回归系数,最小一乘回归系数估计及其MATLAB实现
  11. 使用 Eclipse 插件部署 Java 应用
  12. tcp下载窗口太小的问题_面试官:换人!他连 TCP 这几个参数都不懂(二)
  13. 将子节点中含子节点的json数据转换成ztree适合的json数据格式
  14. MCSA Server 2012 R2 IPV6
  15. java后台生成内嵌logo的二维码图片以及添加文字
  16. 数据结构——树-基本知识点(第六章)
  17. 【什么是Cookie、Session】
  18. 电脑鼠标不管用但键盘可以用怎么办
  19. 快速排序详解(图解实例)
  20. 【Java Web 安全】常见安全漏洞及解决方案

热门文章

  1. 高薪职位不少,这个行业为什么如此缺人才?
  2. Java深入理解深拷贝和浅拷贝区别
  3. 在虚拟机中安装雨林木风XP镜像的正确步骤
  4. 骨传导式耳机推荐,2021骨传导耳机排行榜
  5. Python入门-网络编程
  6. H5多点触控原理以及对多点触控的追踪
  7. 【EXLIBRIS】随笔记 012
  8. 我的毕业设计历程——基于Unity3D的MOBA游戏设计(二)
  9. Unity3D项目之游戏场景小地图制作
  10. SecureCRT键盘无法输入