TCP/IP中MSL详解

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

时间: 2024-08-06 15:07:00

TCP/IP中MSL详解的相关文章

网络编程之TCP/IP各层详解

网络编程之TCP/IP各层详解 我们将应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个物联网通信的原理. 首先,用户感知到的只是最上面一层--应用层,自上而下每层都依赖于下一层,所以我们从最下层开始切入,比较好理解. 每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件. 一.物理层 由来:孤立的计算机之间要一起"玩耍",就必须接入Internet,即计算机之间必须完成组网. 物理层功能:主要是基于电器特性发

TCP/IP协议——ARP详解(转载)

本文主要讲述了ARP的作用.ARP分组格式.ARP高速缓存.免费ARP和代理ARP. 1.学习ARP前要了解的内容 建立TCP连接与ARP的关系 应用接受用户提交的数据,触发TCP建立连接,TCP的第一个SYN报文通过connect函数到达IP层,IP层通过查询路由表: 如果目的IP和自己在同一个网段: 当IP层的ARP高速缓存表中存在目的IP对应的MAC地址时,则调用网络接口send函数(参数为IP Packet和目的MAC))将数据提交给网络接口,网络接口完成Ethernet Header

TCP/IP协议模型详解

一.网络协议模型 1.OSI七层网络协议模型 OSI七层协议(Open System Interconnection):将网络连接过程分成数个层次(layer),每个层次负都有特定的独立功能,且每个层次的程序代码可以独立撰写,每个层次间的功能不会相互干扰. 说明: 1)越接近硬件的层次为底层(layer1),越接近应用程序的则为高层(layer7) 2)接收端或者发送端,每一层只认识对方的同一层次的数据 3)每层都有其独特的头部数据header,告知对方信息,其后的数据为真实数据 (1)物理层P

TCP/IP协议——ARP详解

本文主要讲述了ARP的作用.ARP分组格式.ARP高速缓存.免费ARP和代理ARP. 1.学习ARP前要了解的内容 建立TCP连接与ARP的关系 应用接受用户提交的数据,触发TCP建立连接,TCP的第一个SYN报文通过connect函数到达IP层,IP层通过查询路由表: 如果目的IP和自己在同一个网段: 当IP层的ARP高速缓存表中存在目的IP对应的MAC地址时,则调用网络接口send函数(参数为IP Packet和目的MAC))将数据提交给网络接口,网络接口完成Ethernet Header

计算机网络——TCP/IP协议族详解

一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI. TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的

TCP/IP五层模型详解

将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议就理解了整个互联网通信的原理. 首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件 物理层 物理层由来:孤立的计算机之间必须完成组网. 物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0 数据链路层 数据链路层的功能:定义了电信号的分组方式

TCP/IP 参数配置详解

了解LINUX TCP/IP的参数配置是网络性能调优的前提,但是要清楚的记得这几十个参数也不容易,为了方便下次查看,所以查找了linux的manual手册和网上的资料.主要列出了"/proc/sys/net/ipv4"下面的参数. 1.IP 参数 ●ip_always_defrag: 在LINUX早期的版本中出现,现在已经没有了,就不作说明了. ●ip_autoconfig:这个没有文档说明. ●ip_default_ttl (整数; 默认值:64; since Linux 2.2):

OSI七层模型和TCP/IP五层模型详解

OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范.OSI模型有7层结构,每层都可以有几个子层. OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 :其中高层(即7.6.5.4层)定义了应用程序的功能,下面3层(即3.2.1层)主要面向通过网络的端到端的数据流. 一.OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识——OSI参考模型. 1.OSI的来源 OSI(Open System Interc

TCP/IP及UDP详解

第一章 OSI模型概述 1.1 开放系统互连参考模型为实现开放系统互连所建立的通信功能分层模型,简称OSI参考模型.其目的是为异种计算机互连提供一个共同的基础和标准框架,并为保持相关标准的一致性和兼容性提供共同的参考.这里所说的开放系统,实质上指的是遵循OSI参考模型和相关协议能够实现互连的具有各种应用目的的计算机系统. 原文地址:https://www.cnblogs.com/sjie0224/p/9089504.html