跳到主要内容

2.2. 序列号 (Sequence Number)

这个无符号 32 位字段包含一个计数器值, 对于发送的每个报文递增 1, 即每个 SA 的报文序列号.对于单播 SA 或单发送方组播 SA, 发送方必须为每个传输的报文递增此字段.允许多个发送方共享一个 SA, 尽管通常不建议这样做.ESP 没有提供在多个发送方之间同步报文计数器或在多个发送方的上下文中有意义地管理接收方报文计数器和窗口的方法.因此, 对于多发送方 SA, ESP 的防重放功能不可用 (参见第 3.3.3 和 3.4.3 节).

该字段是强制性的, 即使接收方没有选择为特定 SA 启用防重放服务, 也必须始终存在.Sequence Number 字段的处理由接收方自行决定, 但所有 ESP 实现必须能够执行第 3.3.3 和 3.4.3 节中描述的处理.因此, 发送方必须始终传输此字段, 但接收方无需对其采取行动 (参见下面 "入站报文处理" 部分 (3.4.3) 中关于序列号验证的讨论).

当建立 SA 时, 发送方的计数器和接收方的计数器被初始化为 0.(使用给定 SA 发送的第一个报文的序列号为 1; 有关序列号如何生成的更多详细信息, 请参见第 3.3.3 节.) 如果启用了防重放 (默认), 则绝不能允许传输的序列号循环.因此, 在 SA 上传输第 2^32 个报文之前, 必须重置发送方的计数器和接收方的计数器 (通过建立新的 SA 从而获得新密钥).