LLC¶
逻辑链路控制(LLC, IEEE 802.2) 解析器/序列化器 http://standards.ieee.org/getieee802/download/802.2-1998.pdf
LLC 格式
+-----------------+--------------+
| DSAP address | 8 bits |
+-----------------+--------------+
| SSAP address | 8 bits |
+-----------------+--------------+
| Control | 8 or 16 bits |
+-----------------+--------------+
DSAP 地址字段
LSB
+-----+---+---+---+---+---+---+---+
| I/G | D | D | D | D | D | D | D |
+-----+---+---+---+---+---+---+---+
I/G bit = 0 : Individual DSAP
I/G bit = 1 : Group DSA
D : DSAP address
SSAP 地址字段
LSB
+-----+---+---+---+---+---+---+---+
| C/R | S | S | S | S | S | S | S |
+-----+---+---+---+---+---+---+---+
C/R bit = 0 : Command
C/R bit = 1 : Response
S : SSAP address
控制字段
信息传输命令/响应 (I 格式 PDU)
1 2 3 4 5 6 7 8 9 10-16
+---+---+---+---+---+---+---+---+-----+------+
| 0 | N(S) | P/F | N(R) |
+---+---+---+---+---+---+---+---+-----+------+
监督命令/响应 (S 格式 PDU)
1 2 3 4 5 6 7 8 9 10-16
+---+---+---+---+---+---+---+---+-----+------+
| 1 0 | S S | 0 0 0 0 | P/F | N(R) |
+---+---+---+---+---+---+---+---+-----+------+
未编号命令/响应 (U 格式 PDU)
1 2 3 4 5 6 7 8
+---+---+----+---+-----+---+----+---+
| 1 1 | M1 M1 | P/F | M2 M2 M2 |
+---+---+----+---+-----+---+----+---+
N(S) : sender send sequence number (Bit 2=lower-order-bit)
N(R) : sender receive sequence number (Bit 10=lower-order-bit)
S : supervisory function bit
M1/M2: modifier function bit
P/F : poll bit - command LLC PDUs
final bit - response LLC PDUs
- class os_ken.lib.packet.llc.ControlFormatI(send_sequence_number=0, pf_bit=0, receive_sequence_number=0)¶
LLC 子编码器/解码器类,用于控制 I 格式字段。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
send_sequence_number
发送方发送序列号
pf_bit
轮询/最终位
receive_sequence_number
发送方接收序列号
- class os_ken.lib.packet.llc.ControlFormatS(supervisory_function=0, pf_bit=0, receive_sequence_number=0)¶
LLC 子编码器/解码器类,用于控制 S 格式字段。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
supervisory_function
监督功能位
pf_bit
轮询/最终位
receive_sequence_number
发送方接收序列号
- class os_ken.lib.packet.llc.ControlFormatU(modifier_function1=0, pf_bit=0, modifier_function2=0)¶
LLC 子编码器/解码器类,用于控制 U 格式字段。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
modifier_function1
修改功能位
pf_bit
轮询/最终位
modifier_function2
修改功能位
- class os_ken.lib.packet.llc.llc(dsap_addr, ssap_addr, control)¶
LLC(IEEE 802.2) 头部编码器/解码器类。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
dsap_addr
目标服务接入点地址字段,包括最低有效位上的 I/G 位。
ssap_addr
源服务接入点地址字段,包括最低有效位上的 C/R 位。
control
控制字段 [包含序列号的格式为 16 位,不包含序列号的格式为 8 位]。os_ken.lib.packet.llc.ControlFormatI 或 os_ken.lib.packet.llc.ControlFormatS 或 os_ken.lib.packet.llc.ControlFormatU 对象。
- classmethod parser(buf)¶
解码协议头。
此方法仅在解码数据包时使用。
在字节数组 buf 的偏移量 0 处解码协议头。返回以下三个对象:
一个描述解码后的头对象。
一个适当于数据包其余部分的 packet_base.PacketBase 子类。如果数据包的其余部分应被视为原始有效负载,则为 None。
数据包的其余部分。
- serialize(payload, prev)¶
编码协议头。
此方法仅在编码数据包时使用。
编码协议头。返回一个包含头的字节数组。
payload 是将立即跟随此头的其余数据包。
prev 是外部协议头的 packet_base.PacketBase 子类。如果当前头是外部头,则 prev 为 None。例如,对于 tcp.serialize,prev 是 ipv4 或 ipv6。