DHCP¶
DHCP 数据包解析器/序列化器
- class os_ken.lib.packet.dhcp.dhcp(op, chaddr, options=None, htype=1, hlen=0, hops=0, xid=None, secs=0, flags=0, ciaddr='0.0.0.0', yiaddr='0.0.0.0', siaddr='0.0.0.0', giaddr='0.0.0.0', sname='', boot_file='')¶
DHCP (RFC 2131) 头部编码器/解码器类。
序列化的数据包看起来像以下部分中描述的那样。
RFC 2131 DHCP 数据包格式
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
op
消息 op 代码 / 消息类型。 1 = BOOTREQUEST, 2 = BOOTREPLY
htype
硬件地址类型(例如 '1' = 10mb 以太网)。
hlen
硬件地址长度(例如 '6' = 10mb 以太网)。
hops
客户端设置为零,当通过中继代理启动时,中继代理可以选择使用。
xid
事务 ID,客户端选择的随机数,用于客户端和服务器关联客户端和服务器之间的消息和响应。
secs
由客户端填写,自客户端开始地址获取或续订过程以来经过的秒数。
flags
标志。
ciaddr
客户端 IP 地址;仅在客户端处于 BOUND、RENEW 或 REBINDING 状态且可以响应 ARP 请求时才填写。
yiaddr
“你的”(客户端)IP 地址。
siaddr
在引导过程中使用的下一个服务器的 IP 地址;由服务器在 DHCPOFFER、DHCPACK 中返回。
giaddr
中继代理 IP 地址,用于通过中继代理启动。
chaddr
客户端硬件地址。
sname
可选的服务器主机名,以空字符结尾的字符串。
boot_file
引导文件名,以空字符结尾的字符串;在 DHCPDISCOVER 中为“通用”名称或空,在 DHCPOFFER 中为完全限定的目录路径名。
选项
可选参数字段(“DHCP 消息类型”选项必须包含在每个 DHCP 消息中)。
- 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.dhcp.option(tag, value, length=0)¶
DHCP (RFC 2132) 选项编码器/解码器类。
这与 os_ken.lib.packet.dhcp.dhcp.options 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
tag
选项类型。(除了“magic cookie”、“pad option”和“end option”之外。)
value
选项的值。(将转换为十六进制的值。)
长度
选项的价值长度。(从价值的长度自动计算。)
- class os_ken.lib.packet.dhcp.options(option_list=None, options_len=0, magic_cookie='99.130.83.99')¶
DHCP (RFC 2132) 选项编码器/解码器类。
这与 os_ken.lib.packet.dhcp.dhcp 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
option_list
“end option”和“pad option”在将选项类存储到数组后会自动添加。
options_len
选项的字节长度。(包括“magic cookie”、“end option”和“pad option”的长度。)
magic_cookie
前四个字节包含十进制值 99、130、83 和 99。