DHCP6¶
DHCPv6 数据包解析器/序列化器
[RFC 3315] DHCPv6 数据包格式
下图说明了客户端和服务器之间发送的 DHCP 消息的格式
0 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg_type | transaction_id |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. options .
. (variable) .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
有两种中继代理消息,它们共享以下格式
0 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg_type | hop_count | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
| link_address |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
| peer_address |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. .
. options (variable number and length) .... .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- class os_ken.lib.packet.dhcp6.dhcp6(msg_type, options, transaction_id=None, hop_count=0, link_address='::', peer_address='::')¶
DHCPv6 (RFC 3315) 头部编码器/解码器类。
序列化的数据包看起来像以下部分中描述的那样。
RFC 3315 DHCP 数据包格式
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
msg_type
标识 DHCP 消息类型
transaction_id
对于未中继的消息:此消息交换的事务 ID。
hop_count
对于中继的消息:已中继此消息的中继代理的数量。
link_address
对于中继的消息:服务器将用于标识客户端所在链路的全局或站点本地地址。
peer_address
对于中继的消息:从其中接收要中继的消息的客户端或中继代理的地址。
选项
此消息中携带的选项
- classmethod parser(buf)¶
解码协议头。
此方法仅在解码数据包时使用。
在字节数组 buf 的偏移量 0 处解码协议头。返回以下三个对象:
一个描述解码后的头对象。
一个适当于数据包其余部分的 packet_base.PacketBase 子类。如果数据包的其余部分应被视为原始有效负载,则为 None。
数据包的其余部分。
- serialize(payload=None, prev=None)¶
编码协议头。
此方法仅在编码数据包时使用。
编码协议头。返回一个包含头的字节数组。
payload 是将立即跟随此头的其余数据包。
prev 是外部协议头的 packet_base.PacketBase 子类。如果当前头是外部头,则 prev 为 None。例如,对于 tcp.serialize,prev 是 ipv4 或 ipv6。
- class os_ken.lib.packet.dhcp6.option(code, data, length=0)¶
DHCP (RFC 3315) 选项编码器/解码器类。
这与 os_ken.lib.packet.dhcp6.dhcp6.options 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
DHCP 选项的格式是
0 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | option-code | option-len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | option-data | | (option-len octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
属性
描述
option-code
一个无符号整数,用于标识此选项中携带的特定选项类型。
option-len
一个无符号整数,以八位字节为单位,给出此选项中的 option-data 字段的长度。
option-data
选项的数据;此数据的格式取决于选项的定义。
- class os_ken.lib.packet.dhcp6.options(option_list=None, options_len=0)¶
DHCP (RFC 3315) 选项编码器/解码器类。
这与 os_ken.lib.packet.dhcp6.dhcp6 一起使用。