2.2. Use of Sequence Numbers for Message ID (消息 ID 的序号使用)
2.2. Use of Sequence Numbers for Message ID (消息 ID 的序号使用)
每条 IKE 消息在其固定头中都包含 Message ID (消息标识). 该 Message ID 用于匹配请求与响应, 并识别消息的重传. 重传消息必须使用与原始消息相同的 Message ID.
Message ID 为 32 位量, IKE_SA_INIT 消息 (包括对 COOKIE 与 INVALID_KE_PAYLOAD 等响应导致的重试) 上为零, 随后每次交换递增. 因此, 第一对 IKE_AUTH 消息的 ID 为 1, 第二对 (使用 EAP 时) 为 2, 依此类推. IKE SA 重密钥后, 在新 IKE SA 中 Message ID 重置为零.
IKE 安全关联的每个端点维护两个 "当前" Message ID: 下一个用于其自身发起请求的 ID, 以及下一个期望从对端请求中看到的 ID. 这些计数器随请求的生成与接收而递增. 响应始终携带与对应请求相同的 Message ID. 这意味着初始交换之后, 每个整数 n 可能作为 Message ID 出现在四条不同消息中: 原始 IKE 发起方的第 n 次请求, 对应响应, 原始 IKE 响应方的第 n 次请求, 以及对应响应. 若两端发起的请求数量差异很大, 两个方向上的 Message ID 可能相差很远. 但消息并无歧义, 因为消息头中的 Initiator 与 Response 标志标明了四条中的哪一种.
本文中, "initiator" 指所描述交换的发起方. "original initiator" (原始发起方) 始终指导致当前 IKE SA 的那次交换的发起方. 换言之, 若 "original responder" (原始响应方) 开始重密钥 IKE SA, 该方将成为新 IKE SA 的 "original initiator".
注意 Message ID 受密码学保护, 可提供抗消息重放. 在 Message ID 大到无法装入 32 位的罕见情况下, 必须关闭或重密钥该 IKE SA.