ARP¶
- class os_ken.lib.packet.arp.arp(hwtype=1, proto=2048, hlen=6, plen=4, opcode=1, src_mac='ff:ff:ff:ff:ff:ff', src_ip='0.0.0.0', dst_mac='ff:ff:ff:ff:ff:ff', dst_ip='0.0.0.0')¶
ARP (RFC 826) 头部编码/解码类。
一个实例至少具有以下属性。其中大部分与线上的对应项相同,但采用主机字节顺序。IPv4 地址表示为类似 '192.0.2.1' 的字符串。MAC 地址表示为类似 '08:60:6e:7f:74:e7' 的字符串。__init__ 按照此顺序接收相应的参数。
属性
描述
示例
hwtype
硬件地址。
proto
协议地址。
hlen
每个硬件地址的字节长度。
plen
每个协议地址的字节长度。
opcode
操作码。
src_mac
发送者的硬件地址。
'08:60:6e:7f:74:e7'
src_ip
发送者的协议地址。
'192.0.2.1'
dst_mac
目标的硬件地址。
'00:00:00:00:00:00'
dst_ip
目标的协议地址。
'192.0.2.2'
- classmethod parser(buf)¶
解码协议头。
此方法仅在解码数据包时使用。
在字节数组 buf 的偏移量 0 处解码协议头。返回以下三个对象:
一个描述解码后的头对象。
一个适当于数据包其余部分的 packet_base.PacketBase 子类。如果数据包的其余部分应被视为原始有效负载,则为 None。
数据包的其余部分。
- serialize(payload, prev)¶
编码协议头。
此方法仅在编码数据包时使用。
编码协议头。返回一个包含头的字节数组。
payload 是将立即跟随此头的其余数据包。
prev 是外部协议头的 packet_base.PacketBase 子类。如果当前头是外部头,则 prev 为 None。例如,对于 tcp.serialize,prev 是 ipv4 或 ipv6。
- os_ken.lib.packet.arp.arp_ip(opcode, src_mac, src_ip, dst_mac, dst_ip)¶
一个方便的包装器,用于以太网上的 IPv4 ARP。
这等效于以下代码。
arp(ARP_HW_TYPE_ETHERNET, ether.ETH_TYPE_IP, 6, 4, opcode, src_mac, src_ip, dst_mac, dst_ip)