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。