IEEE802.3具体格式

IEEE802.3帧由7字节的帧初始同步、1字节的开始分隔符、目的地址、源地址、2字节的长度字段、4字节的FCS和LLC头部组成。长度字段指示从LLC开始到有效载荷的字节数。DSAP、ASAP和控制字段用于定义上层协议类型。SNAP用于兼容以太网II,通过设置DSAP和ASAP为0xAA,并使用组织代码和以太网类型。Windows Server 2003和XP默认使用以太网II封装,可通过ArpUseEtherSNAP注册表键切换封装方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IEEE802.3是发布的RFC标准由802.3的头和尾以及802.2的LLC头部组成。

image

因为增加了LLC头部的3或者4个字节,有效载荷会减少3或者4个字节。控制字段为1或者2字节。

字段说明:

帧初始同步 7字节长,每字节由10101010组成,使接收端同步

开始分隔符 1字节长 由10101011组成,指示帧开始

这2个字段正好和以太网的帧初始同步字段相同。

目的地址 和以太网II基本相同,不同的是该地址还支持2字节的地址

源地址  和以太网II基本相同,不同的是该地址还支持2字节的地址

长度 2字节长,指示从LLC头开始字节到有效载荷的最后一个字节的字节数,不包括IEEE 802.3的头和FCS字段 ,最小是46 (0x002E)最大是1500(0x05DC)

帧校验序列(FCS) 4字节 和以太网一样

IEEE802.2 LLC的头

DSAP 目的服务访问字段,1字节长,指明帧的目的上层协议类型

ASAP 源服务访问字段,1字节长,指明帧的源上层协议类型

控制 1字节或者2字节,确定的长度要看被封装的LLC数据类型,是LLC数据报(类型1)1字节,LLC对话的一部分(类型2)2字节。

类型1 表明是无连接的,不可靠的LLC数据报,控制字段用0x03指明

类型2 表明是面向连接可靠的LLC会话。

注意:如何区分IEEE 802.3的帧和以太网II的帧?

两种格式的帧源地址后字段含义不同,IEEE 802.3 是长度,长度范围是在区间[46,1500],十六进制[0x002E,0x05DC],以太网II是以太网类型,值最小位0x0600XNS(Xerox的网络系统)协议,大于1500.

4.   IEEE 802.3 SNAP

虽然IEEE 802.3是标准,但没有被业界采用。以太网II已成事实标准。于是IEEE 802.3扩展产生 IEEE 802.3 SNAP 来兼容以太网网头部协议,在IEEE 802.2 LLC 头部后插入了SNAP头部

image

    为了标识SNAP帧,DSAP和SSAP在LLC头都被设置成SNAP定义的值0xAA,所有SNAP的封装没有使用可靠的LLC服务,所以控制设置成0x03

SNAP头部字段说明

组织代码 3字节长,指明维护接下来2字节意义的组织,对IP和 ARP,该字段被设置为0x00-00-00

如果组织代码为0x00-00-00,接下来2字节就是以太网类型IP 0x0800 ARP 0x0806

因为增加了LLC头部的3字节和SNAP头部的5字节所以有效载荷比以太网II少8个字节

wps_clip_image-2688

                                             抓包截图

在Windows server 2003 和XP中默认使用以太网II来封装的,对于接收这2中格式都可以,但默认情况下仅会用以太网II封装的帧响应,如果需要更改默认配置可以修改下列注册表键值

ArpUseEtherSNAP

Location:HKEY_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Data Type:REG_DWORD

Valid range:0-1

Default value:0

Present by default:No

该 键值决定在发送IP或ARP是否使用IEEE 802.3 SNAP,1表示用,0表示不用。默认是0,表示IP或ARP用以太网II发送。不论怎么设置2中类型的帧都能接收。如果设为1,用IEEE 802.3 SNAP封装请求帧,如果对端不能识别则无法通信。但当以下2种情况之一出现时会转换到以太网II封装,用IEEE 802.3 SNAP封装的ARP请求帧得到以太网II响应或者收到用以太网II封装的ARP请求。




在以太网帧格式中,类型字段之后就是数据;而在 8 0 2帧格式中,跟随在后面的是 3字节的802.2 LLC 和5字节的802.2 SNAP 。目的服务访问点( Destination Service Access Point, D S A P )和源服务访问点(Source Service Access Point, SSAP )的值都设为0 x a a 。Ct r l字段的 值设为3 。随后的3个字节o rg code 都置为0 。再接下来的2个字节类型字段和以太网帧格式一样(其他类型字段值可以参见RFC 1340 [Reynolds and Postel 1992] )。 
C R C字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为F C S 或帧检验 序列)。 
8 0 2 . 3标准定义的帧和以太网的帧都有最小长度要求。 8 0 2 . 3规定数据部分必须至少为 3 8字节,而对于以太网,则要求最少要有 4 6 字节。为了保证这一点,必须在不足的空间插入填充(p a d )字节。在开始观察线路上的分组时将遇到这种最小长度的情况。
=================================================================================================================
Ethernet V2比IEEE802.3更适合于传输大量的数据,但Ethernet V2缺乏数据链路层的控制,不利于传输需要严格传输控制的数据,这也正是IEEE802.3的优势所在,越需要严格传输控制的应用,越需要用 IEEE802.3或SNAP来封装,但IEEE802.3也不可避免的带来数据装载量的损失,因此该格式的封装往往用在较少数据量承载但又需要严格控制传输的应用中。
在实际应用中,我们会发现,大多数应用的以太网数据包是Ethernet V2的帧(如HTTP、FTP、SMTP、POP3等应用),而 交换机之间的BPDU(桥协议数据单元)数据包则是IEEE802.3的帧,VLAN Trunk协议如802.1Q和Cisco的CDP(思科发现协议)等则是采用IEEE802.3 SNAP的帧。
如STP对应的帧如下,抓包格式为IEEE 802.3,LLC中的DSAP=SSAP=0X42
普通的TCP报文如下,抓包显示为ETHERNET II格式,其实LLC中DSAP=0X06

### IEEE802.3以太网格式详解 #### 1. 前导码 (Preamble) 前导码由7个字节构成,每个字节都是`10101010`模式。这些位用于同步接收方的时钟频率和相位,以便能够正确解码后续的数据。 #### 2. 开始定界符 (Start Frame Delimiter, SFD) SFD是一个特殊的单字节序列`10101011`,标志着实际有效负载部分即将开始。这个标记告诉接收端设备准备读取目的地址和其他重要信息[^1]。 #### 3. 目标MAC地址 (Destination Address) 这部分包含了目标机器的硬件层物理地址(即MAC地址),长度为6个字节。如果是以广播形式发送,则此处会填入全F值(FF:FF:FF:FF:FF:FF)。对于多播情况也有特定的规定来区分不同的组播群体。 #### 4. 源MAC地址 (Source Address) 源MAC地址同样占用6个字节的空间,记录着发送者的唯一标识符。这有助于在网络中追踪消息来源并建立双向通信路径。 #### 5. 类型/长度字段 (Length/Type Field) 此字段有两种用途: - 当其值小于等于1500时,代表整个数据载荷的实际大小; - 大于1536则作为指示上层协议类型的标志,比如IPv4对应0x0800,ARP请求则是0x0806等特殊编码。 #### 6. 数据与填充 (Data and Padding) 该区域存储应用层产生的具体业务数据。为了确保最小帧尺寸达到64字节的要求,在必要时候会在后面追加一些无意义的信息作为填充物。最大可承载的有效负荷量可达1500字节(不计其他开销)。 #### 7. 循环冗余校验 (Cyclic Redundancy Check, CRC 或 FCS) 最后四个字节用来保存计算所得的循环冗余检验码。这是一种错误检测机制,通过对接收到的数据重新运算并与原CRC对比,可以判断传输过程中是否有误发生。一旦发现错漏即可触发重传操作。 ```python ethernet_frame = { "preamble": b'\xAA\xAA\xAA\xAA\xAA\xAA\xD5', "destination_address": b'\xFF\xFF\xFF\xFF\xFF\xFF', # Broadcast address example "source_address": b'\x00\xA0\xc9\x1E\xB1\xC5', "length_type_field": b'\x08\x00', # IPv4 type field value "data_payload": b'Example data payload...', "crc_fcs": None # Calculated at sending time } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值