TCP¶
- class os_ken.lib.packet.tcp.tcp(src_port=1, dst_port=1, seq=0, ack=0, offset=0, bits=0, window_size=0, csum=0, urgent=0, option=None)¶
TCP (RFC 793) 头部编码/解码类。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
src_port
源端口
dst_port
目标端口
seq
序列号
ack
确认号
offset
数据偏移量(0 表示在编码时自动计算)
bits
控制位
window_size
窗口
csum
校验和(0 表示在编码时自动计算)
urgent
紧急指针
option
TCPOption子类的列表或包含选项的字节数组。如果没有选项,则为 None。- has_flags(*flags)¶
检查这些标志是否在该数据包上设置。
如果所有传入的标志都已设置,则返回布尔值
示例
>>> pkt = tcp.tcp(bits=(tcp.TCP_SYN | tcp.TCP_ACK)) >>> pkt.has_flags(tcp.TCP_SYN, tcp.TCP_ACK) True
- classmethod parser(buf)¶
解码协议头。
此方法仅在解码数据包时使用。
在字节数组 buf 的偏移量 0 处解码协议头。返回以下三个对象:
一个描述解码后的头对象。
一个适当于数据包其余部分的 packet_base.PacketBase 子类。如果数据包的其余部分应被视为原始有效负载,则为 None。
数据包的其余部分。
- serialize(payload, prev)¶
编码协议头。
此方法仅在编码数据包时使用。
编码协议头。返回一个包含头的字节数组。
payload 是将立即跟随此头的其余数据包。
prev 是外部协议头的 packet_base.PacketBase 子类。如果当前头是外部头,则 prev 为 None。例如,对于 tcp.serialize,prev 是 ipv4 或 ipv6。