摘要
- RFC 791 将 Total Length 定义为完整 IPv4 数据报的八位组长度,包括首部和数据。
- RFC 894 明确规定,为达到 46 个八位组而加入的以太网填充不属于 IP 数据包,也不计入 Total Length。
短数据报说明了层之间的边界为什么必须由各层自己表达。以太网数据字段至少需要 46 个八位组。IPv4 数据报过短时,帧会在其后加入零填充。因此,接收者看到的以太网载荷可能比 IPv4 数据报本身更长。
IPv4 首部携带了内部答案。Total Length 是一个 16 位字段,计算从 IPv4 首部开始到数据结束的完整数据报长度。它不依赖外层帧来猜测数据报在哪里结束。
IHL 与完整长度
IHL 以 32 位字为单位表示首部长度,最小值为 5,即 20 个八位组。Total Length 则以八位组表示整个数据报的长度。数据长度可以由完整长度减去由 IHL 得出的首部长度得到。若存在选项,IHL 会移动数据起点,但 Total Length 仍标记数据报的终点。
这个字段不计算以太网地址、类型字段、校验字段、前导码或填充。它的作用范围更窄也更有用:在交给 IPv4 的载荷中,指出哪些八位组属于当前数据报。
表示上限不是交付承诺
16 位字段最多可表示 65,535 个八位组。RFC 791 同时指出,这样大的数据报对大多数主机和网络并不实际,并要求主机准备接收不超过 576 个八位组的完整或分片数据报。以太网承载的 IP 数据报上限为 1,500 个八位组。因而格式上限不是路径 MTU,也不保证目的端能够接受最大值。
分片中的同一规则
每个分片都有自己的首部和 Total Length,数值表示该分片的首部加分片数据,而不是原始数据报的总长度。Identification、Fragment Offset 和 More Fragments 各自承担不同职责。Total Length 只界定当前 IPv4 对象,不界定应用消息。
长度字段可能错误,捕获也可能被截断。诊断时应将 Total Length 与 IHL、实际捕获字节、可能存在的填充以及捕获来源一并比较。它是一条边界规则,不是完整性证明或交付证明。
这种设计明确分配了权威:IPv4 管理数据报边界,链路管理帧和填充。正因为不把两者混为一谈,同一种数据报格式才能跨越不同链路。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
