3.1. IKE 头
3.1. IKE 头
IKE 消息用于建立 IPsec SA,并可用于其他目的(例如,在 IKE SA 建立后传输数据)。IKE 消息始终以一个固定的头开始,后跟零个或多个 payload。
固定头格式如下:
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initiator SPI | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Responder SPI | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Payload | MjVer | MnVer | Exchange Type | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Message ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: IKE 头格式
o Initiator SPI (8 字节) - 由发起方在 IKE_SA_INIT 中生成的 SPI。
o Responder SPI (8 字节) - 由响应方在 IKE_SA_INIT 中生成的 SPI。
o Next Payload (1 字节) - 指示紧跟在头之后的下一个 payload 的类型。
o Major Version (4 位) - 指示 IKE 协议的主版本。必须设置为 2。
o Minor Version (4 位) - 指示 IKE 协议的次版本。必须设置为 0。
o Exchange Type (1 字节) - 指示此消息所属交换的类型。
o Flags (1 字节) - 下列标志位:
-
Bit 0 (H) - IKE 头中的 Initiator(发起方)位。对于由发起方发送的消息,设置为 1;对于由响应方发送的消息,设置为 0。
-
Bit 1 (R) - 版本位。在协商中对 IKEv2 协议次版本需要使用新语义时设置。本文档中必须设置为 0。
-
Bit 2 (I) - 完整性保护位。在消息受完整性保护时设置,并且除 IKE_SA_INIT 外的所有消息都如此。
-
Bit 3 (V) - 版本位。为 IKEv2 协议的未来版本协商新语义而保留。必须设置为 0。
-
Bit 4 (R) - 保留位。用于 IKE 协议未来版本。必须设置为 0。
-
Bits 5-7 - 保留位。必须设置为 0。
o Message ID (4 字节) - 用于消息的唯一标识符。
o Length (4 字节) - 以字节为单位的总长度,包括头和所有 payload。