跳到主要内容

2.2. 将序列号用作消息 ID

2.2. 将序列号用作消息 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 被重钥后,Message ID 在新 IKE SA 中被重置为零。

IKE 安全关联中的每个端点都维护两个"当前" Message ID:一个用于它发起的下一个请求,另一个用于它期望从另一端接收到的下一个请求。这些计数器随着请求的生成和接收而递增。响应始终包含与相应请求相同的 Message ID。这意味着在初始交换之后,每个整数 n 可能作为 Message ID 出现在四条不同的消息中:原始 IKE 发起者的第 n 个请求、相应的响应、原始 IKE 响应者的第 n 个请求,以及相应的响应。如果两端发出的请求数量差异很大,则两个方向上的 Message ID 可能差异很大。然而,消息中不存在歧义,因为消息头中的 Initiator 和 Response 标志指定了某条特定消息是这四条消息中的哪一条。

在本文档中,"发起者"指的是发起所描述交换的一方。"原始发起者"始终指发起导致当前 IKE SA 的交换的一方。换句话说,如果"原始响应者"开始重钥 IKE SA,则该方成为新 IKE SA 的"原始发起者"。

请注意,Message ID 受到密码学保护,并可提供针对消息重放的保护。在不太可能发生的情况下,如果 Message ID 增长过大以致无法容纳在 32 位中,则必须关闭或重钥该 IKE SA。