摘要

  • TPKT 在 TPDU 前放置版本、保留字段和总长度共四个字节,使接收端能够从 TCP 流中取出恰好一个离散传输对象。
  • 这只是分帧;它不证明对端身份、内容完整性、端口归属、应用授权或业务完成。

RFC 793 把 TCP 描述为双向连续字节流。网络上的 TCP 段是传输实现细节,不是交给应用的报文标点。因此,收到了多少字节要由缓冲和时机决定,不能推断出发送方的写入次数。

1987 年的 RFC 1006 为 ISO Transport Class 0 over TCP 提供了一个小而明确的补层。TPKT 是变长对象,由固定包头和 TPDU 构成。包头的第一个字节为版本,第二个为保留字段,后两个字节为包总长度。版本 3 的版本值恒为 3;长度含包头,范围为 7 至 65,535 字节。

接收端的工作因而可以被审计:先积累四字节,再按声明长度继续积累,得到完整 TPKT 后才把 TPDU 交给 ISO 传输处理。一个 TPKT 可以跨越多次读取,多个 TPKT 也可以一次到达。RFC 中四字节宽的图只是一种排版,不表示整个包必须是四的倍数;真正的规则是长度字段。

RFC 1006 是 STD 35,取代 RFC 983,并为实现此标准的主机保留 TCP 102 端口。它的目标是通过 TCP/IP 提供 ISO 传输服务,使上层 ISO 实体无须知道底层承载者。这里的“无须知道”是服务接口上的抽象,并非在 TCP 下方重新造出 ISO 网络层。端口号不是运营者身份证明;正确的长度也不是安全凭证。

1997 年的 RFC 2126 更新这一映射,保留了 TPKT 的版本/保留/总长度形式,为原有 RFC 1006 基础细化 class 0,并加入 class 2 over TCP。它同时划出安全边界:协议不比 TCP 和 ISO 8073 更安全,也不更不安全。一个被完整界定的 TPDU 仍只是传输协议对象,不能被偷换成“订单已执行”或“用户已认证”。

所以应将 TCP 连接、缓冲字节、TPKT 头、声明长度、TPDU 解析和应用效果分别记录。四个字节的历史价值,正在于它让边界可见,却没有虚构其他边界。

来源与证据边界