ICMPv6¶
- class os_ken.lib.packet.icmpv6.echo(id_=0, seq=0, data=None)¶
用于回显请求和回显应答消息的 ICMPv6 子编码器/解码器类。
此与 os_ken.lib.packet.icmpv6.icmpv6 一起用于 ICMPv6 回显请求和回显应答消息。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
id
标识符
seq
序列号
data
数据
- class os_ken.lib.packet.icmpv6.icmpv6(type_=0, code=0, csum=0, data=b'')¶
ICMPv6 (RFC 2463) 头部编码器/解码器类。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
type_
类型
code
代码
csum
校验和 (0 表示编码时自动计算)
data
有效载荷。
os_ken.lib.packet.icmpv6.echo 对象、os_ken.lib.packet.icmpv6.nd_neighbor 对象、os_ken.lib.packet.icmpv6.nd_router_solicit 对象、os_ken.lib.packet.icmpv6.nd_router_advert 对象、os_ken.lib.packet.icmpv6.mld 对象,或一个字节数组。
- classmethod parser(buf)¶
解码协议头。
此方法仅在解码数据包时使用。
在字节数组 buf 的偏移量 0 处解码协议头。返回以下三个对象:
一个描述解码后的头对象。
一个适当于数据包其余部分的 packet_base.PacketBase 子类。如果数据包的其余部分应被视为原始有效负载,则为 None。
数据包的其余部分。
- serialize(payload, prev)¶
编码协议头。
此方法仅在编码数据包时使用。
编码协议头。返回一个包含头的字节数组。
payload 是将立即跟随此头的其余数据包。
prev 是外部协议头的 packet_base.PacketBase 子类。如果当前头是外部头,则 prev 为 None。例如,对于 tcp.serialize,prev 是 ipv4 或 ipv6。
- class os_ken.lib.packet.icmpv6.mld(maxresp=0, address='::')¶
用于 MLD 侦听器查询、MLD 侦听器报告和 MLD 侦听器完成消息的 ICMPv6 子编码器/解码器类。(RFC 2710)
http://www.ietf.org/rfc/rfc2710.txt
此与 os_ken.lib.packet.icmpv6.icmpv6 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
maxresp
毫秒内的最大响应时间。仅在查询消息中才有意义。
address
一个组地址值。
- class os_ken.lib.packet.icmpv6.mldv2_query(maxresp=0, address='::', s_flg=0, qrv=2, qqic=0, num=0, srcs=None)¶
用于 MLD v2 侦听器查询消息的 ICMPv6 子编码器/解码器类。(RFC 3810)
http://www.ietf.org/rfc/rfc3810.txt
此与 os_ken.lib.packet.icmpv6.icmpv6 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
maxresp
毫秒内的最大响应时间。仅在查询消息中才有意义。
address
一个组地址值。
s_flg
设置为 1 时,路由器会抑制计时器进程。
qrv
查询器的鲁棒性变量。
qqic
查询器以秒为单位的间隔时间。
num
多播服务器的数量。
srcs
多播服务器的 IPv6 地址列表。
- class os_ken.lib.packet.icmpv6.mldv2_report(record_num=0, records=None)¶
用于 MLD v2 侦听器报告消息的 ICMPv6 子编码器/解码器类。(RFC 3810)
http://www.ietf.org/rfc/rfc3810.txt
此与 os_ken.lib.packet.icmpv6.icmpv6 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
record_num
组记录的数量。
records
os_ken.lib.packet.icmpv6.mldv2_report_group 的列表。如果没有记录,则为 None。
- class os_ken.lib.packet.icmpv6.mldv2_report_group(type_=0, aux_len=0, num=0, address='::', srcs=None, aux=None)¶
用于 MLD v2 侦听器报告组记录消息的 ICMPv6 子编码器/解码器类。(RFC 3810)
此与 os_ken.lib.packet.icmpv6.mldv2_report 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
type_
v3 的组记录类型。
aux_len
辅助数据长度,以 32 位字为单位。
num
多播服务器的数量。
address
一个组地址值。
srcs
多播服务器的 IPv6 地址列表。
aux
辅助数据。
- class os_ken.lib.packet.icmpv6.nd_neighbor(res=0, dst='::', option=None)¶
用于邻居探测和邻居通告消息的 ICMPv6 子编码器/解码器类。(RFC 4861)
此与 os_ken.lib.packet.icmpv6.icmpv6 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
res
邻居通告的 R、S、O 标志。邻居探测的“保留”字段的 3 个 MSB。
dst
目标地址
option
os_ken.lib.packet.icmpv6.nd_option 的派生对象或一个字节数组。如果没有选项,则为 None。
- class os_ken.lib.packet.icmpv6.nd_option_mtu(mtu=1500)¶
用于邻居发现 MTU 选项的 ICMPv6 子编码器/解码器类。(RFC 4861)
此与 os_ken.lib.packet.icmpv6.nd_router_advert 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
mtu
MTU。
- class os_ken.lib.packet.icmpv6.nd_option_pi(length=0, pl=0, res1=0, val_l=0, pre_l=0, res2=0, prefix='::')¶
用于邻居发现前缀信息选项的 ICMPv6 子编码器/解码器类。(RFC 4861)
此与 os_ken.lib.packet.icmpv6.nd_router_advert 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
长度
选项的长度。(0 表示编码时自动计算)
pl
前缀长度。
res1
前缀信息的 L、A、R* 标志。
val_l
有效生存时间。
pre_l
首选生存时间。
res2
此字段未使用。必须初始化为零。
prefix
IP 地址或 IP 地址的前缀。
*R 标志在 (RFC 3775) 中定义
- class os_ken.lib.packet.icmpv6.nd_option_sla(length=0, hw_src='00:00:00:00:00:00', data=None)¶
用于邻居发现源链路层地址选项的 ICMPv6 子编码器/解码器类。(RFC 4861)
此与 os_ken.lib.packet.icmpv6.nd_neighbor、os_ken.lib.packet.icmpv6.nd_router_solicit 或 os_ken.lib.packet.icmpv6.nd_router_advert 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
长度
选项的长度。(0 表示编码时自动计算)
hw_src
链路层地址。注意:如果地址长于 6 个字节,则此字段包含地址的前 6 个字节。此实现假定地址至少有 6 个字节。
data
一个字节数组,其中包含剩余的链路层地址和填充。在编码数据包时,用户有责任提供协议要求的 8 字节对齐所需的填充。
- class os_ken.lib.packet.icmpv6.nd_option_tla(length=0, hw_src='00:00:00:00:00:00', data=None)¶
用于邻居发现目标链路层地址选项的 ICMPv6 子编码器/解码器类。(RFC 4861)
此与 os_ken.lib.packet.icmpv6.nd_neighbor 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
长度
选项的长度。(0 表示编码时自动计算)
hw_src
链路层地址。注意:如果地址长于 6 个字节,则此字段包含地址的前 6 个字节。此实现假定地址至少有 6 个字节。
data
一个字节数组,其中包含剩余的链路层地址和填充。在编码数据包时,用户有责任提供协议要求的 8 字节对齐所需的填充。
- class os_ken.lib.packet.icmpv6.nd_router_advert(ch_l=0, res=0, rou_l=0, rea_t=0, ret_t=0, options=None)¶
用于路由器通告消息的 ICMPv6 子编码器/解码器类。(RFC 4861)
此与 os_ken.lib.packet.icmpv6.icmpv6 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
ch_l
当前跃点限制。
res
M、O 标志用于路由器通告。
rou_l
路由器生存时间。
rea_t
可达时间。
ret_t
重传计时器。
选项
os_ken.lib.packet.icmpv6.nd_option 或 bytearray 的派生对象列表。如果没有选项,则为 None。
- class os_ken.lib.packet.icmpv6.nd_router_solicit(res=0, option=None)¶
路由器请求消息的 ICMPv6 子编码器/解码器类。(RFC 4861)
此与 os_ken.lib.packet.icmpv6.icmpv6 一起使用。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
res
此字段未使用。必须初始化为零。
option
os_ken.lib.packet.icmpv6.nd_option 的派生对象或一个字节数组。如果没有选项,则为 None。