【问题标题】:Is the IP ID Sequence Number purely for application use or will it have system side effects?IP ID 序列号是纯粹用于应用程序使用还是会产生系统副作用?
【发布时间】:2019-06-20 04:07:58
【问题描述】:

在 IP 标头中有一个称为“ID 序列号”的短字段,其 IP 结构中的成员标识符为 iphdr.ip_id

此字段是否纯粹用于数据包的应用程序级排序,还是网络驱动程序会出于某些目的使用此字段?

换句话说,如果我根据自己的应用程序相关需求使用此字段对数据包进行编号,我是否会在网络传输层处理数据包的方式上冒一些意想不到的副作用?

【问题讨论】:

    标签: ip packet datagram


    【解决方案1】:

    该字段用于标识属于特定 IP 数据报的 IP 片段。目的是防止其他数据报的片段被用于重建该数据报。

    为了使标识字段发挥其作用,它的值必须在使用单个 IP 源地址发送的所有数据报中是唯一的,该 IP 源地址可能在单个目标 IP 地址处同时进行重组。 (数据报重组是按源、按目的地进行的,因此仅需要标识字段来区分以相同源+目的地地址对发送的数据报。不存在将具有不同源或目的地地址的片段带入的风险重新组装。)

    除此之外,对该字段的值没有其他限制。只要你满足这个唯一性要求,你就可以把你喜欢的任何值放进去。

    【讨论】:

    • 好吧,如果它是用于IP分片的,那么如果中间路由器对一个数据包进行分片,它不会修改该字段吗?
    • 如果路由器对数据包进行分段,则它将数据包的标识字段的值复制到所有生成的分段中。这就是将片段标记为属于同一原始数据包的原因。请参阅 RFC 751 的第 2.3 节中的“分段”小节tools.ietf.org/html/rfc791#section-2.3
    • 如果设置了 DF 标志,则这些值甚至不必是唯一的。
    • @Malt DF 仅表示“不要分段进一步”。源可以发送片段(例如,因为原始数据报太大而无法一体地放在网络上,或者作为一个片段重新发送以响应一个太大但 DF-is-set 报告)并且无论是否 DF在这种源生成的分片中是否设置,它们必须携带原始数据报的特定标识值。
    猜你喜欢
    • 1970-01-01
    • 2013-05-02
    • 2012-05-04
    • 1970-01-01
    • 2016-12-11
    • 2013-12-05
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多