IPv4¶
- class os_ken.lib.packet.ipv4.ipv4(version=4, header_length=5, tos=0, total_length=0, identification=0, flags=0, offset=0, ttl=255, proto=0, csum=0, src='10.0.0.1', dst='10.0.0.2', option=None)¶
IPv4 (RFC 791) 头部编码/解码类。
注意:在解码时,即使对于分片的数据报,此实现也会尝试解码上层协议。这可能不是用户想要的。
一个实例至少具有以下属性。其中大部分与网络上的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
示例
版本
版本
header_length
IHL
tos
服务类型
total_length
总长度(0 表示在编码时自动计算)
identification
标识
flags
标志
offset
分片偏移
ttl
生存时间
proto
协议
csum
头部校验和(在编码时忽略并自动计算)
src
源地址
'192.0.2.1'
dst
目标地址
'192.0.2.2'
option
包含整个选项的字节数组,如果没有选项则为 None
- classmethod parser(buf)¶
解码协议头。
此方法仅在解码数据包时使用。
在字节数组 buf 的偏移量 0 处解码协议头。返回以下三个对象:
一个描述解码后的头对象。
一个适当于数据包其余部分的 packet_base.PacketBase 子类。如果数据包的其余部分应被视为原始有效负载,则为 None。
数据包的其余部分。
- serialize(payload, prev)¶
编码协议头。
此方法仅在编码数据包时使用。
编码协议头。返回一个包含头的字节数组。
payload 是将立即跟随此头的其余数据包。
prev 是外部协议头的 packet_base.PacketBase 子类。如果当前头是外部头,则 prev 为 None。例如,对于 tcp.serialize,prev 是 ipv4 或 ipv6。