摘要
- Data Offset 确定 TCP 头部的物理边界,EOL 可以提前结束有意义的选项列表。
- NOP 可以调整下一个选项的位置,但接收方不能要求选项必须对齐。
解析可变区域
接收方逐字节前进。遇到 Kind 1(NOP)时消耗一个字节;遇到带长度的选项时,按长度跳过整个选项;遇到 Kind 0(EOL)时停止解释有意义的选项。EOL 与 Data Offset 之间的剩余字节是零填充,应用数据仍从 Data Offset 指定的位置开始。
RFC 793 在 1981 年已经规定了两种基本格式:只有类型字节的单字节选项,以及类型、长度和数据组成的选项。长度包括类型和长度字段本身。RFC 9293 延续这一设计,要求除 EOL 和 NOP 外的每个选项,包括未来选项,都带有长度。这样,接收方即使不认识选项含义,也能在长度有效时安全跳过它。
发送方的布局选择
NOP 可插入选项之间,例如把下一个选项放到字边界。它不是接收方必须依赖的协议条件。RFC 793 要求接收方准备处理未按字边界开始的选项,RFC 9293 继续明确这一点。规范也没有保证 NOP 在所有架构上都更快。
EOL 不会缩短 TCP 头部,不会替代 Data Offset,也不会直接开始载荷。它只结束头部内部的逻辑列表。若 EOL 提前出现,后面的头部字节必须为零;若选项自然到达头部边界,则可以没有 EOL。
从 1981 年延续至今
长度字段使未知选项仍可遍历;零长度或不一致的长度则属于非法情况,必须被稳健处理。TCP 的可扩展性因此依靠有界的字节推进,而不是依靠每个实现都认识所有选项。
Sources
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
