本文内容全凭个人理解,如有错误请指出。
以太网帧,位于OSI七层模型中的数据链路层
,是最基础的数据单位。常见的协议一共有两种:Ethernet II 和 IEEE 802.3。
帧的收发过程可以参见下图,其中物理层可以理解为网卡,网卡将完成所有帧的收发操作
由于帧在物理层将会被转换二进制格式(0、1格式的高低电压),为了便于区分出帧,使用了 Preamble(前导码)用来标记帧,同时每一帧发送的间隔最小为12Bytes。如下图:
- Preamble:前导码,共64 bits(8bytes),表示为一个以太网帧的开始。其还包含一个SFD(Start Frame Delimiter 起始帧定位符),共8bits(1byte),在前导码的最后一个字节,就如同它的名字一样,用于定位帧,以免因错位而导致的数据错了。
其内容为(二进制):10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011
- FCS:帧校验序列(frame check sequence),是一个4 bytes 的帧校验位,一般使用循环冗余校验(CRC: Cyclic Redundancy Check)。
注:前导码和FCS的添加、验证和帧的接受工作是由网卡完成,操作系统只会接受到帧。也就是说,我们是无法抓包到前导码和FCS的。
Ethernet II
Ethernet II协议,是现在最常见、使用频率最高的协议,例如IP、ARP协议都是基于此协议完成的,它是由 DEC、intel 和 Xerox这几个公司主要参与设计的。
其格式如下图:
- DMAC:目的MAC地址,共6bytes
- SMAC:源MAC地址,共6bytes
Type:Data段(网络层)的协议类型,共2 bytes,由于此位刚好与IEEE 802.3 协议的长度标志位相同,所以为了区分两个数据包,其值必须大于1536。常见的例如:
- 0x0806: ARP
- 0x0800:IPv4
- 0x86DD:IPv6
- Data:数据段,网络层数据。最小为46Bytes,最大为1500bytes。
整个Ethernet II 帧大小为:64~1518Bytes。
IEEE 802.3
由 IEEE 组织设计的网络协议,其最主要的特点就是传输数据的可靠性,所以常用于一些路由协议,例如STP协议等。
其主要格式如下:
- DMAC:目的MAC地址。共6bytes
- SMAC:源MAC地址。共6bytes
- Length:数据包长度,由于与 Ethernet II 的 type 标志位相同,为了区别两种类型,IEEE 数据包的长度不能超过1500 bytes。
LLC:逻辑访问控制(Logical Link Control)。共站3 bytes,其又可以分为 DSAP、SSAP和Control段。
- DSAP:目的服务访问点(Destination Service Access Point),SAP 可以理解为服务类型,例如 STP协议在SAP 中的值为0x42。由于使用了DSAP和SSAP,所以可以更加细致的做到控制访问。
- SSAP:源服务访问点(Source Service Access Point)。
- Control:控制段,指定帧的架构类型,例如本文写的
IEEE 802.3
的值就是 0x03。
SNAP:子网接入协议(Subnetwork Access Protocol),只有当DSAP和SSAP的值都为 0xAA 才会生效,其又可以分为 Organization Code 和 PID 两个部分。
- Organization Code:组织代码,例如思科的组织代码就是
00:00:0c
,苹果的组织代码是08:00:07
,xerox 的组织代码是00:00:00
。 - PID:协议ID(Protocol ID),也可以称之为以太网类型(EtherType),与Ethernet II 的type段相同。
- Organization Code:组织代码,例如思科的组织代码就是
注:其实还有一个类型是 Netware-Ethernet,需要 DSAP 和 SSAP 的值都为 0xff时,这里就不过的赘述了。
以太网帧类型
类型编号(十六进制) | 协议 |
---|---|
0000~05DC | IEEE802.3 Length Field(1500) |
0101~01FF | 保留 |
0800 | IPv4 |
0806 | Address Resolution Protocol(ARP) |
8035 | Reverse Address Resolution Protocol(RAPR) |
8037 | IPX(Novell NetWare) |
805B | VMTP(Versatile Message Transaction Protocol) |
809D | AppleTalk(EtherTalk) |
80F3 | AppleTalk Address Resolution Protocol(AARP) |
8100 | IEEE802.1 Q Custer VLAN |
814C | SNMP over Ethernet |
8191 | NetBIOS/NetBEUI |
817D | XTP |
86DD | IPv6 |
8847~8848 | MPLS(Multi-protocol Label Switching) |
8863 | PPPoE Discovery Stage |
8864 | PPPoE Session Stage |
9000 | Loopback(Configuration Test Protocol) |
这里仅仅是一部分以太网类型,如果想要了解所有以太网类型,可以查阅 由IANA制定的以太网帧标准: ethernet-numbers
数据包样例参考:genbroad.snoop
参考文献:
- 《802.3-2015 - IEEE Standard for Ethernet》
- 《The Ethernet》蓝皮书
- https://www.ibm.com/support/pages/ethernet-version-2-versus-ieee-8023-ethernet
本文经「原本」原创认证,作者乾坤盘,访问yuanben.io查询【100K96TH】获取授权信息。