Bootstrap

IEEE 802.3/802.2 | LLC / SNAP

注:本文为 “IEEE 802.3/802.2 | LLC / SNAP” 相关文章合辑

未整理去重。

第三篇部分内容出自第二篇。


802.2 协议

haoay321 2010-01-28 20:52:02

LLC 协议

LLC(Logic Link Control,逻辑链路控制)是 IEEE 802.2 协议中规定的数据链路层中 LLC 子层实现的关键部分。

LLC 功能

IEEE 802.2 LLC 应用于 IEEE 802.3 以太网和 IEEE 802.5 令牌环 LANs,实现以下功能:

  • 管理数据链路通信
  • 链接寻址
  • 定义服务接入点 Service Access Points(SAPs)
  • 排序

LLC 为上层提供了处理任何类型 MAC 的方法,例如以太网 IEEE 802.3 CSMA/CD 或者令牌环 IEEE 802.5 令牌传递(Token Passing)方式。

LLC 操作类型

LLC 是在高级数据链路控制(HDLC:High-Level Data-Link Control)的基础上发展起来的,并使用了 HDLC 规范子集。LLC 定义了三种数据通信操作类型:

  • 类型 1:无连接。该方式对信息的发送通常无法保证接收。
  • 类型 2:面向连接。该方式提供了四种服务:连接的建立、确认和承认响应、差错恢复(通过请求重发接收到的错误数据实现)以及滑动窗口(系数:128)。通过改变滑动窗口可以提高数据传输速率。
  • 类型 3:无连接承认响应服务。

类型 1 的 LLC 无连接服务规定了一种静态帧格式,支持网络协议运行。传输层网络协议通常采用该服务类型。

类型 2 的 LLC 面向连接服务支持可靠数据传输,运用于不需要调用网络层和传输层协议的局域网环境。


【LLC】逻辑链路控制

非常正人类研究中心于 2022-06-06 15:34:41 发布

概述

逻辑链路控制(logical link control,LLC)层位于 OSI 网络模型的数据链路层,由 IEEE802.2 标准定义,用户的数据链路服务通过 LLC 子层为上层(IP 层)提供统一的接口,提供给其他 802 协议(e.g. 802.3, 802.11,etc)使用。MAC 可以在 LLC 层的支持下执行寻址方式和网络层协议识别功能,然后进行封装。

通过 LLC 层,可以实现不同类型网络的数据交互。比如以太网、无线网等的相互转换。

img

802.3/802.2 LLC: IEEE 正式的 802.3 标准,它由 Ethernet II(ARPA)发展而来。它将 Ethernet II 帧头的(上层)协议类型字段替换为帧长度字段 (取值为 0000 05dc; 十进制的 1500);因此相比 Ethernet II,缺少协议类型指示。故加入 802.2 LLC 头用以标志上层协议,LLC 头中包含 DSAP,SSAP 以及 Control 字段,但是能表示的协议类型数量有限。

802.3/802.2 SNAP:IEEE 为保证在 802.2 LLC 上支持更多的上层协议同时更好的支持 IP 协议而发布的标准,与 802.3/802.2 LLC 一样 802.3/802.2 SNAP 也带有 LLC 头,但是扩展了 LLC 属性,新添加了一个 2Bytes 的协议类型域(同时将 SAP 的值置为 AA),从而使其可以标识更多的上层协议类型;另外添加了一个 3Bytes 的 OUI 字段用于代表不同的组织。

LLC 封装方式

封装 LLC 数据的方式有两种。

  • RFC 1042(又称 IETF 封装)
  • 802.1h(又称隧道式封装 (tunnel encapsulation))

RFC 1042 与 802.1h 均衍生自 802.2 的 SNAP(sub-network access protocol),SNAP 作为逻辑链路控制标准的一部分,主要用来在 IEEE 802 网络上封装 IP 数据包、地址解析协议(ARP)的请求和答复。802.11h 与 RFC 1042 之间的唯一差异,在于使用的 OUI。

有些产品可以让使用者在两种封装标准间进行切换,虽然这种功能并不常见。以 Microsoft 操作系统而言,AppleTalk 与 IPX 协议组预设使用 802.1h,其他协议则使用 RFC 1042。目前大部分基站均依循 Microsoft 的做法,不再提供封装方式的切换选项。事实上,由于 Microsoft 所采用的封装方式得到广泛的支持,因此 Wi-Fi 联盟的认证测试计划亦将它包含在内。

【备注】因此实现时可以在处理 AppleTalk 时采用 802.1h,而其他时候采用 RFC 1042。

帧格式

L3 数据到达 LLC 层会添加 LLC 子字段和 SNAP 子字段。

LLC 层封装成 802.2 头,其中:

  • 802.2 header = LLC + SNAP
  • LLC = DSAP + SSAP +CTRL
  • SNAP = OUI + ETHER_TYPE

对于 SNAP 封装而言,DSAP 和 SSAP 字段值通常均为 0xAA;Control 字段值通常为 0x03;RFC1042 封装的 OUI 通常为 0x0000,而 802.1h 封装该字段则为 0xF800;ETHER_TYPE 则从以太网帧类型复制而来。
在这里插入图片描述

img

fieldsBytesdescription
DSAP1 指示目的服务访问点(DSAP,Destination Service Access Point)。
DSAP 的格式(I/G|D|D|D|D|D|D|D),I/G 位表示地址类型,I/G=0 表示 Individual 地址,I/G=1 表示是 group 地址。

常见SAP编码
IBM SNA0x04
IP0x06
3Com0x80
SNAP0xAA
Banyan0xBC
Novell0xEC
Lan Manager FE -CLNSF4
对于 SNAP 封装而言,该字段通常为 0xAA
SSAP1 指示源服务访问点(SSAP,Source Service Access Point)。
SSAP 格式为(C/R|S|S|S|S|S|S|S),C/R=0 表示Command,C/R=1 表示 response。 对于 SNAP 封装而言,该字段通常为 0xAA
Control1or2 指示 LLC 帧类型。高 2 位指示帧类型。
LLC 定义了三种帧:Information帧(I帧)、Supervisory帧(S帧)和Unnumbered帧(U帧)。
不同帧类型其控制字段的长度不一样。

LLC 帧类型对应控制字段长度适用场景
Information 帧(I帧)2bytes 用于面向连接的应用
Supervisory帧(S帧)2bytes 用于在 LLC 层中进行管理监督
Unnumbered 帧(U帧)1 bytes 特别用于无连接的应用,用于以太网
其中只有 U 帧被广泛使用。该字段通常为 0x03
OUI3 指示标准组织代码(organizationally unique Identifier, OUI)。
IP 以RFC 1042 标准封装于 LLC;RFC1042规定使用OUI 0x00 - 00 - 00。(有些厂商或许会使用特定的 OUI 作为专属系统传输之用。)
Type2 指示后续数据的协议类型。通常对应Ethernet的类型代码。例如 0x0800 用于封装 IPv4 或者 0x86DD 来支持 IPv6。

注:DSAPSSAP 是逻辑地址,标识数据链路层的服务访问点,以指示 LLC 通讯信息所属的服务

img

LLC 通信操作类型

LLC 是在高级数据链路控制(High-Level Data-Link Control, HDLC)的基础上发展起来的,并使用了 HDLC 规范子集。

LLC 定义了三种数据通信操作类型

数据通信操作类型说明
类型 1无连接。该方式对信息的发送通常无法保证接收。
类型 2面向连接。该方式提供了四种服务:连接的建立、确认和承认响应、差错恢复(通过请求重发接收到的错误数据实现)以及滑动窗口(系数:128)。通过改变滑动窗口可以提高数据传输速率。
类型 3无连接承认响应服务。

其中:

类型 1 的 LLC 无连接服务中规定了一种静态帧格式,并支持运行网络协议。有关传输层网络协议通常是使用服务类型 1 方式。

类型 2 的 LLC 面向连接服务支持可靠数据传输,运用于不需要调用网络层和传输层协议的局域网环境。

其他

对于 802.11,LLC 层利用 MAC 传送 LLC PDU。MAC 层则利用以下三种基础命令来提供服务。LLC 三种基础命令如下:

命令说明
MA-UNITDATA requestLLC 利用 MA-UNITDATA request 来要求 MAC 将一个 PDU 传送给一个或多个指定的 LLC。
MA-UNITDATA indication接收端的 MAC 收到一个 PDU 后,通过 MA-UNITDATA indication 来通知上层的 LLC。
MA-UNITDATA-STATUS indication接收端的 LLC 的响应返回后,发送端的 MAC 利用 MA-UNITDATA-STATUS indication 来提供该请求的结果(成功 / 失败)

IEEE802.2 之 LLC(逻辑链路控制)

小虎随笔已于 2023-09-19 17:14:17 修改

一、概念

IEEE 802.2 是一种用于局域网(LAN)和都会区域网(MAN)的数据链路层逻辑链路控制(LLC)的标准。它是 IEEE 802 系列标准中的一个组成部分,专门用于定义如何在数据链路层内进行帧的多路复用和流量控制。该标准为局域网和都会区域网提供了一个通用的数据链路层接口。

IEEE 802.2 的主要目标是为各种不同的局域网提供一个统一的逻辑链路控制层。这意味着无论下层的物理介质和帧格式如何,上层的网络层和传输层都可以通过一个统一的接口与数据链路层进行交互。

逻辑链路控制(简称 LLC)是数据链路层(Layer 2)的上部子层,用于管理帧同步、流量控制、多路复用和错误通知等任务。LLC 位于数据链路层和网络层之间,提供了一种机制,使得多种网络层协议能够透明地工作在任何 IEEE 802 兼容的局域网上。

LLC 是 IEEE 802.2 标准的一部分,与下层的媒体访问控制(MAC)共同组成了完整的数据链路层。这种分层的目的主要是为了灵活性和可复用性。通过 LLC,多种不同的网络协议(例如,IP、IPX、AppleTalk 等)能够在同一物理网络上进行通信,而不需要关心具体的硬件实现。

img

LLC 的主要功能:

  1. 多路复用 / 解复用:LLC 使得多种网络层协议可以共享同一个数据链路,通过在数据帧中添加类型字段进行标记。
  2. 流量控制:LLC 可为数据帧的发送和接收提供流量控制机制,防止数据的丢失和缓冲区溢出。
  3. 错误检测:虽然 LLC 不负责错误修复,但它能够对错误帧进行标记,并可选择性地传递给上层。
  4. 可选的可靠性服务:LLC 还可以提供可选的确认和重传机制,以增加数据传输的可靠性。

LLC 服务类型:

  1. 无连接的无确认服务:最简单的服务类型,不提供确认和错误恢复机制,通常用于广播和多播。
  2. 有连接的服务:通过建立逻辑连接并使用帧确认和重传机制,提供更可靠的数据传输。
  3. 无连接的有确认服务:这种服务类型介于前两者之间,为单个数据帧提供确认机制,但不需要建立持久的逻辑连接。

二、协议讲解

LLC 头中包含 DSAP,SSAP 以及 Control 字段

1.DSAP 字段

在逻辑链路控制(LLC)子层中,DSAP 字段是 用于标识数据帧目标服务访问点的。换句话说,DSAP 字段用于标明帧应该被传递到哪个上层协议(例如 IP、IPX 或其他网络层协议)

DSAP 字段通常为一个 8 位长的字段,位于 LLC 帧头的开始部分。它与 SSAP(源服务访问点)字段配对使用,以标识帧的源和目标上层协议。这样,LLC 层就能正确地将数据帧路由到相应的网络服务。

这个机制使得在同一物理网络连接上可以多路复用多种不同的网络协议。通过检查收到的数据帧的 DSAP 字段,LLC 层能够将数据帧传递给适当的上层协议处理。

需要注意的是,DSAP 字段是在 IEEE 802.2 LLC 协议标准中定义的,这个标准用于如 Ethernet、Wi-Fi(IEEE 802.11)、Token Ring(IEEE 802.5)等 IEEE 802 系列局域网技术。

DSAP 的具体值是由 IEEE 或其他标准化组织分配的,用于唯一标识不同的上层协议。例如,在 IP over IEEE 802 网络中,DSAP 的值可能会被设置为一个特定于 IP 的值,以确保帧被正确地传递到 IP 协议栈进行处理。

DSAP 字段不同值的含义:

fieldsBytesdescription
DSAP1 指示目的服务访问点(DSAP,Destination Service Access Point)。
DSAP 的格式(I/G|D|D|D|D|D|D|D),I/G 位表示地址类型,I/G=0 表示 Individual 地址,I/G=1 表示是 group 地址。

常见SAP编码
IBM SNA0x04
IP0x06
3Com0x80
SNAP0xAA
Banyan0xBC
Novell0xEC
Lan Manager FE -CLNSF4
对于 SNAP 封装而言,该字段通常为 0xAA

这些名称基本上代表了一组不同类型的网络协议或网络操作系统。下面简要介绍每一个:

IBM SNA

IBM SNA 是 IBM 公司在 1974 年推出的一种网络体系结构,用于定义主机和终端设备之间如何通信。它最初是为大型机环境设计的,并且是一种相当复杂的七层网络体系结构。尽管现在已经不如以前流行,但在某些特定的、通常是大型的企业环境中还是有应用。

IP

互联网协议(IP)是用于在因特网上发送数据包的主要协议。它是 TCP/IP 协议族的核心协议,并负责将数据包从源地址发送到目标地址。IPv4 和 IPv6 是两个最常见的 IP 版本。

3Com

3Com 是一家曾经存在的网络技术公司,负责推出包括以太网交换机和网络接口卡在内的多种网络硬件产品。该公司在 2010 年被 HP 收购。

SNAP

SNAP 是一种用于在不同网络协议之间提供互操作性的数据链路层协议。当两种不同的网络协议需要在同一物理网络上进行通信时,SNAP 被用作一种 “翻译” 机制。

Banyan

Banyan 是一家专门从事网络操作系统和相关服务的公司,最著名的产品是 Banyan VINES(Virtual Integrated NEtwork Service)。这是一个基于客户端 / 服务器体系结构的网络操作系统。

Novell

Novell 是一家主要从事电子目录服务(如 Novell Directory Services 或 NDS)和网络操作系统(如 NetWare)的公司。Novell NetWare 曾经是企业网络环境中最流行的网络操作系统之一。

Lan Manager

Lan Manager 是微软和 IBM 联合开发的一种网络操作系统。它最初是作为 OS/2 的一部分发布的,后来也有 Windows 版本。该系统主要用于文件和打印服务。

FE-CLNS

FE-CLNS 是用于在 OSI 模型的网络层(第三层)提供无连接网络服务的一种协议。通常,这与 IS-IS 路由协议一起使用,特别是在电信网络中。

这些技术和协议在网络历史和发展中都有各自重要的角色,尽管一些现在可能已经不再广泛使用。

img

上图中,DSAP 被设置为 SNAP(子网访问协议),其值为 0xAA

  • 1010 1010(二进制)= 0xAA(十六进制):这个值表示帧应该被传递给 SNAP 子层。SNAP 是一个用于在同一个物理网络(例如 Ethernet、Wi-Fi 等)上多路复用不同网络协议的机制。
  • IG Bit: 这是 DSAP 字段最低有效位上的一个标志位,称为 “个体 / 组群” 标志。如果该位设置为 0,表明这是针对个体地址的帧;如果设置为 1,表示这是一个广播或多播帧。在你给出的例子中,这一位是 0,意味着这是一个发往个体地址的帧。

SNAP 注

SNAP 是一个用于在不同网络协议之间提供一个额外的多路复用层的机制。它最常用于 IEEE 802 局域网和其他数据链路层网络,特别是当数据链路层的协议字段长度不足以包容所有需要多路复用的网络协议时。

SNAP 的主要功能是允许一个单一的数据链路层(如 Ethernet、Wi-Fi 等)同时支持多种不同的网络层协议(如 IP、IPX 等)。这是通过添加一个额外的 SNAP 头实现的,该头包括以下字段:

- OUI(组织唯一标识符): 这通常是一个 24 位字段,用于标识制定了随后出现的协议类型字段的组织。标准的 Ethernet 类型字段则用 OUI 为 0。

- 协议类型:这通常是一个 16 位字段,用于标识数据包的网络层协议。例如,IPv4 可能被标识为 0x0800,而 ARP 可能是 0x0806。

在 IEEE 802.2 LLC 帧中,当 DSAP(Destination Service Access Point)和 SSAP(Source Service Access Point)字段都设置为 0xAA 时,一般会有一个随后的 SNAP 头。这样做可以确保在一个通用的数据链路层框架内,不同的网络层协议能够正确地被识别和路由。

总体而言,SNAP 提供了一种灵活和可扩展的方法,用于在数据链路层中支持多种网络层协议。这是通过引入一个额外的头部和一些附加的字段来实现的,从而使得多种不同的协议可以共享相同的物理和数据链路层基础设施。

img

这是 SNAP 协议 5 个字节的内容。

“Organization Code” 和 “Type” 字段中,组合成一个 5 字节的 SNAP 头:

  1. Organization Code:通常是 3 字节长,用于标识发出该帧的组织或者标识用于解释之后 “Type” 字段的标准。
  2. Type:这是一个 2 字节的字段,用于标识封装在该帧内的上层协议。

在这个例子中:

  • Organization Code 是 00:00:00。虽然这个代码官方属于 Xerox,但在实际应用中它通常用于表示这是一个以太网封装(Ethernet SNAP)。
  • Type 是 0x0800,这通常表示该帧封装了一个 IPv4 数据包。

这两个字段位于 LLC 头的后面,作为数据链路层帧的一部分,紧跟在 LLC 头(包含 DSAP, SSAP 和 Control field)后面。

所以,在 LLC 帧的 DSAP 和 SSAP 字段被设置为 0xAA(表示这是一个 SNAP 帧)之后,额外的 SNAP 头(包括 “Organization Code” 和 “Type”)就会跟在 LLC 头后面,用于进一步标识上层协议。

2. SSAP 字段

 
img

img

SSAP 是用于数据链路层(OSI 模型的第二层)通信中的一个字段,通常出现在 LLC 帧的头部。这个字段用于标识数据帧的源服务访问点,也就是说,它标识了生成该数据帧的上层协议。SSAP 通常是一个 8 位的字段。

在 LLC 帧结构中,SSAP 通常与 DSAP 配对使用,其中 DSAP 标识数据帧的目的服务访问点。

SSAP 字段中的最低位有特殊的意义,称为 C/R 位。这一位用于指示该帧是一个命令帧还是响应帧。

  • 如果 C/R 位是 0,表示这是一个命令帧。
  • 如果 C/R 位是 1,表示这是一个响应帧。

除了 C/R 位外,SSAP 的其他位用于标识特定的上层协议,如 IP、IPX、NetBIOS 等。

总的来说,SSAP 是一种机制,用于在数据链路层中识别和管理来自不同上层协议的数据帧,以便正确地将这些帧路由到它们的目的地。

3. Control 字段

LLC 相关信息
SSAP1 指示源服务访问点(SSAP,Source Service Access Point)。
SSAP 格式为(C/R|S|S|S|S|S|S|S),C/R = 0 表示 Command,C/R = 1 表示 response。 对于 SNAP 封装而言,该字段通常为 0xAA
Control1 or 2 指示 LLC 帧类型。高 2 位指示帧类型。
LLC 定义了三种帧:Information 帧(I 帧)、Supervisory 帧(S 帧)和 Unnumbered 帧(U 帧)。
不同帧类型其控制字段的长度不一样。

LLC 帧类型对应控制字段长度适用场景
Information 帧(I 帧)2 bytes 用于面向连接的应用
Supervisory 帧(S 帧)2 bytes 用于在 LLC 层中进行管理监督
Unnumbered 帧(U 帧)1 byte 特别用于无连接的应用,用于以太网
其中只有 U 帧被广泛使用。该字段通常为 0x03

在 LLC 子层中,Control 字段是用于描述数据帧类型和流量控制信息的。这个字段可以是一个或两个字节长,具体取决于帧类型和操作模式。

在 LLC 协议中,通常有三种基本的帧类型

  1. 信息帧(I-Frame): 用于传送上层数据和进行流量控制。控制字段包括一个 4 位的发送序列号(N (S))和一个 4 位的接收序列号(N ®)。
  2. 监控帧(S-Frame): 主要用于流量控制,没有包含数据部分。控制字段包括 2 位的监控帧类型代码(例如 RR, RNR, REJ 等)和一个 4 位的接收序列号(N ®)。
  3. 非编号帧(U-Frame): 主要用于链路管理。这种帧有一个单字节的控制字段,其中包括 3 位的修饰符(M1, M2, M3)和 5 位的非编号命令 / 响应识别码。

这些帧类型有不同的控制字段格式,但通常都用于实现类似的功能,例如建立、维护或断开数据链路连接,或者进行流量控制。

在 U-Frame 和 S-Frame 中,控制字段一般都是一个字节。然而,在 I-Frame 中,控制字段通常是两个字节,用于携带额外的序列号信息。

总体来说,Control 字段在 LLC 协议中起着至关重要的作用,用于控制数据帧的传输和处理。

img

在 LLC 协议中,“Control field: U, func=UI (0x03)” 代表一个非编号帧(U-Frame),用于传输未编号信息(Unnumbered Information,UI)。此为一种特殊类型的 LLC 帧,常应用于单向数据传输,无需确认。

  • Control field: U:表明该帧为非编号帧(U-Frame)。
  • func=UI:表示此非编号帧的功能是传输 “未编号信息”。
  • 0x03:这是控制字段的十六进制表示形式,对应 UI 功能。

该控制字段可进一步细分为不同的位:

  • 000. 00… = Command: Unnumbered Information (0x00):这些位用于指定此为未编号信息命令。在此情形下,它是一个无需确认的数据传输帧。
  • …11 = Frame type: Unnumbered frame (0x3):这些位用于指明帧类型为非编号帧(U-Frame)。此类帧用于控制操作,如连接管理,或在此场景中传输未编号信息。

在部分无线和以太网网络中,UI 帧常用于传输上层如 IP 的数据包,原因在于其允许数据传输时无需复杂的确认机制,进而降低了通信的复杂性与延迟。


via:

;