TCP的MSL值是否等于IP的TTL值?

网络工程 IPv4 tcp ttl
2022-02-16 21:54:31

根据RFC 793对 MSL 的定义:

最大段生命周期,一个 TCP 段可以存在于互联网络系统中的时间。任意定义为 2 分钟。

根据RFC 791对 TTL 的定义:

该字段表示允许数据报在 Internet 系统中保留的最长时间。如果该字段包含值零,则必须销毁数据报。该字段在 Internet 标头处理中被修改。时间以秒为单位测量,但由于每个处理数据报的模块必须将 TTL 至少减少 1,即使它在不到一秒的时间内处理数据报,TTL 必须仅被视为数据报可能存在的时间。 目的是使无法传递的数据报被丢弃,并限制最大数据报生命周期

所以我的问题是:MSL 基本上相当于 TTL 的时间吗(即 MSL 是否只是简单地告诉我们覆盖 TTL 跳数所需的时间)?

2个回答

TCP MSL 不是数据包/段中携带的字段。这是 TCP 状态机使用的时间间隔。价值及其用途是非常不同的。IP TTL 主要用于防止环路,而 TCP MSL 提供完全不同的功能,主要与 TCP 连接破坏/关闭有关。这是关于该主题的一个很好的SO线程。

历史上,IP TTL 字段也是一个时间间隔;不是一些啤酒花。这个定义很久以前就改变了,但这就是为什么 TTL 被称为生存时间,而 IPv6 功能等价物被称为hop limit

不。

IP TTL 实际上仅在收到打包程序时由路由器减少,因此实际上是“跳数”。(一个数据包永远不会在单个设备上传输长达一秒钟,因此基于时间的递减不可能发生,但我认为它从未在任何地方实施,尽管很难证明是否定的)。

RFC6864 第 3.2 节确认了这一点,其中规定:

网络延迟以其他方式引起,例如卫星链路,即使生存时间 (TTL) 没有减少相应的量,也会增加几秒钟的延迟。因此没有强制机制来确保丢弃超过 120
秒的数据报。

所以IP TTL不是时基与TCP MSL无关。

密切相关的RFC1122 第 3.3.2 节讨论了这两种机制对片段重组的影响:

讨论:IP 规范说重组超时应该是来自 IP 标头的剩余 TTL,但这并不适用,因为网关通常将 TTL 视为简单的跳数而不是经过的时间如果重组超时太小,数据报将被不必要地丢弃,通信可能会失败。超时需要至少与 Internet 上的典型最大延迟一样大。现实的最小重组超时为 60 秒。

有人建议缓存可以保存由传输协议测量的各种目的地的往返时间,并且这些值可以用于动态确定合理的重组超时值。需要进一步研究这种方法。

如果重组超时设置得太高,接收主机中的缓冲区资源会被占用太久,MSL(Maximum Segment Lifetime)[TCP:1] 会比需要的大。MSL 使用 16 位 Ident 字段的不同值来控制可以发送分段数据报的最大速率;较大的 MSL 会降低最大速率。TCP 规范 [TCP:1] 任意假设 MSL 的值为 2 分钟。这设置了合理重组超时值的上限。

(强调我的)