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。