RFC793 中提到的与数据包处理相关的“词边界”的概念是什么?

网络工程 通讯协议 协议理论 包分析 射频卡
2021-07-22 02:23:55

rfc793 : page 17 中解释了无操作TCP 标头选项,它被引用:

此选项代码可用于选项之间,例如,在字边界上对齐后续选项的开头不能保证发送者会使用这个选项,因此接收者必须准备好处理选项,即使它们不是以字边界开始的

  • 在这种情况下词边界的含义是什么

  • 由于这个选项(无操作)在 TCP 标头中的实现取决于操作系统的类型并且在不同平台之间有所不同,-如果我错了,请纠正我!-,词边界的概念是否与此有关实际的CPU 字长

2个回答

这是一个 16 位的边界。一个字节为 8 位,一个字为 16 位,双字为 32 位,四字为 64 位。

编辑:

网络协议必须独立于处理器和操作系统。你不可能有一个在网络对话的每一方都不同的词的定义。如果 16 位 PC 需要 16 位字,但 32 位 PC 对齐 32 位字,那么 16 位 PC 将如何处理来自 32 位 PC 的 IP 数据包?整个互联网将被打破。

在计算中,术语“词”通常是指系统数据处理的“自然”单位。它的大小各不相同,但通常为 2 或 4 个字节。一个字节通常是 8 位(互联网标准很大程度上是围绕 8 位字节的假设建立的)。

阅读 RFC 的其余部分,有对“16 位字”和“32 位字”的引用。我相信,如果作者打算在 2 个八位字节(16 位)边界上进行对齐,他们会明确地说出来。

所以我相信 RFC 作者的意思是“词”这个词的一般含义。系统可以使用 NOP 选项在便于处理的边界上对齐选项,无论边界碰巧是多少个八位字节。

这不是互操作性的问题,因为所有接收器都需要处理未对齐的选项。