跳到主要内容

15. 消息验证

  1. 消息验证

客户端和服务器应当 (SHOULD) 丢弃任何包含不允许出现在所接收消息中的选项的那些消息. 例如, IA 选项不允许出现在 Information-request 消息中. 客户端和服务器可以 (MAY) 选择 从这类消息中提取信息, 如果该信息对接收方有用的话.

服务器必须 (MUST) 丢弃它所收到的、以单播目的地址发送的任意 Solicit、Confirm、Rebind 或 Information-request 消息.

基于 DHCP 认证的验证消息在 21.4.2 节中讨论.

如果服务器收到一条包含它本不应包含的选项 (例如带有 IA 选项的 Information-request 消息)、缺失它本应包含的选项, 或以其他方式不合法的消息, 它可以 (MAY) 发送一条带有 服务器标识符选项、客户端标识符选项 (如果原消息中包含了该选项) 以及状态为 UnSpecFail 的状态码选项的 Reply (或酌情发送 Advertise) 消息.

15.1. 事务 ID 的使用

"transaction-id" 字段保存一个取值, 客户端和服务器用它来把服务器的响应与客户端消息 同步. 客户端应当 (SHOULD) 生成一个不易被猜测或预测的随机数, 用作它发送的每条新消息 的事务 ID. 注意, 如果客户端生成易于预测的事务标识符, 它可能更容易受到来自路径外侵 入者的某些类型的攻击. 客户端必须 (MUST) 在一条消息的重传中保持事务 ID 不变.

15.2. Solicit 消息

客户端必须 (MUST) 丢弃任何收到的 Solicit 消息.

服务器必须 (MUST) 丢弃任何不包含客户端标识符选项, 或包含服务器标识符选项的 Solicit 消息.

15.3. Advertise 消息

客户端必须 (MUST) 丢弃任何收到的、满足以下任一条件的 Advertise 消息:

  • 该消息不包含服务器标识符选项.

  • 该消息不包含客户端标识符选项.

  • 客户端标识符选项的内容与客户端 DUID 不匹配.

  • "transaction-id" 字段取值与客户端在其 Solicit 消息中使用的取值不匹配.

服务器和中继代理必须 (MUST) 丢弃任何收到的 Advertise 消息.

15.4. Request 消息

客户端必须 (MUST) 丢弃任何收到的 Request 消息.

服务器必须 (MUST) 丢弃任何满足以下任一条件的 Request 消息:

  • 该消息不包含服务器标识符选项.

  • 服务器标识符选项的内容与服务器的 DUID 不匹配.

  • 该消息不包含客户端标识符选项.

15.5. Confirm 消息

客户端必须 (MUST) 丢弃任何收到的 Confirm 消息.

服务器必须 (MUST) 丢弃任何不包含客户端标识符选项或包含服务器标识符选项的 Confirm 消息.

15.6. Renew 消息

客户端必须 (MUST) 丢弃任何收到的 Renew 消息.

服务器必须 (MUST) 丢弃任何满足以下任一条件的 Renew 消息:

  • 该消息不包含服务器标识符选项.

  • 服务器标识符选项的内容与服务器的标识符不匹配.

  • 该消息不包含客户端标识符选项.

15.7. Rebind 消息

客户端必须 (MUST) 丢弃任何收到的 Rebind 消息.

服务器必须 (MUST) 丢弃任何不包含客户端标识符选项或包含服务器标识符选项的 Rebind 消息.

15.8. Decline 消息

客户端必须 (MUST) 丢弃任何收到的 Decline 消息.

服务器必须 (MUST) 丢弃任何满足以下任一条件的 Decline 消息:

  • 该消息不包含服务器标识符选项.

  • 服务器标识符选项的内容与服务器的标识符不匹配.

  • 该消息不包含客户端标识符选项.

15.9. Release 消息

客户端必须 (MUST) 丢弃任何收到的 Release 消息.

服务器必须 (MUST) 丢弃任何满足以下任一条件的 Release 消息:

  • 该消息不包含服务器标识符选项.

  • 服务器标识符选项的内容与服务器的标识符不匹配.

  • 该消息不包含客户端标识符选项.

15.10. Reply 消息

客户端必须 (MUST) 丢弃任何满足以下任一条件的 Reply 消息:

  • 该消息不包含服务器标识符选项.

  • 消息中的 "transaction-id" 字段与原始消息中使用的取值不匹配.

如果客户端在原始消息中包含了客户端标识符选项, 则 Reply 消息必须 (MUST) 包含客户端 标识符选项, 且其内容必须 (MUST) 与客户端 DUID 匹配; 或者, 如果客户端在原始消息中未 包含客户端标识符选项, 则 Reply 消息不得 (MUST NOT) 包含客户端标识符选项.

服务器和中继代理必须 (MUST) 丢弃任何收到的 Reply 消息.

15.11. Reconfigure 消息

服务器和中继代理必须 (MUST) 丢弃任何收到的 Reconfigure 消息.

客户端必须 (MUST) 丢弃任何满足以下任一条件的 Reconfigure 消息:

  • 该消息未被单播发送给该客户端.

  • 该消息不包含服务器标识符选项.

  • 该消息不包含含有客户端 DUID 的客户端标识符选项.

  • 该消息不包含 Reconfigure Message 选项, 且 msg-type 必须是合法取值.

  • 该消息包含任何 IA 选项, 且 Reconfigure Message 选项中的 msg-type 为 INFORMATION-REQUEST.

  • 该消息不包含 DHCP 认证:

    • 该消息不包含认证选项.

    • 该消息未通过客户端所执行的认证验证.

15.12. Information-request 消息

客户端必须 (MUST) 丢弃任何收到的 Information-request 消息.

服务器必须 (MUST) 丢弃任何满足以下任一条件的 Information-request 消息:

  • 该消息包含服务器标识符选项, 且该选项中的 DUID 与服务器的 DUID 不匹配.

  • 该消息包含 IA 选项.

15.13. Relay-forward 消息

客户端必须 (MUST) 丢弃任何收到的 Relay-forward 消息.

15.14. Relay-reply 消息

客户端和服务器必须 (MUST) 丢弃任何收到的 Relay-reply 消息.