以太网帧是以太网通信中的基本单位,用于在网络上传输数据。一个典型的以太网帧包含以下几个部分:
- 前导码(Preamble)
- 帧开始定界符(Start Frame Delimiter, SFD)
- 目的地址(Destination MAC Address)
- 源地址(Source MAC Address)
- 类型/长度字段(Type/Length)
- 数据(Payload)
- 填充(Padding)
- 帧校验序列(Frame Check Sequence, FCS)
以太网帧结构
+--------------------+---------------------+---------------------+-------------------+---------------------+------------------+--------------------+
| Preamble (前导) | SFD | Destination Address(DST) | Source Address(SRC) | Type/Length | Payload | FCS |
| 7 Bytes | 1 Byte | 6 Bytes | 6 Bytes | 2 Bytes | 46-1500 Bytes | 4 Bytes |
+--------------------+---------------------+---------------------+-------------------+---------------------+------------------+--------------------+
各字段详细说明
-
前导码(Preamble)
- 长度:7字节(56位)
- 内容:
10101010
重复7次 - 作用:用于接收方同步时钟信号,准备接收数据。接收器电路用它确定一个帧的到达时间,并确定编码位(称为时间恢复)之间的时间量。典型值0xAA。
-
帧开始定界符(Start Frame Delimiter, SFD)
- 长度:1字节(8位)
- 内容:
10101011
(0xAB) - 作用:标志帧的开始,指示接收方一个新的帧即将开始。
-
目的地址(Destination MAC Address)
- 长度:6字节(48位)
- 内容:目的主机的MAC地址,可以是单播、多播或广播地址。
- 作用:指定数据包的接收者。
-
源地址(Source MAC Address)
- 长度:6字节(48位)
- 内容:发送主机的MAC地址。
- 作用:标识发送数据包的设备。
-
类型/长度字段(Type/Length)
- 长度:2字节(16位)
- 内容:用于指示以太网帧的数据部分(Payload)所携带的数据类型(以太网II帧格式)或数据部分的长度(IEEE 802.3帧格式)。
- 如果值大于或等于0x0600(1536),则表示数据部分的类型,如IPv4(0x0800)、IPv6(0x86DD)、ARP(0x0806)等。
- 如果值小于0x0600(1536),则表示数据部分的长度。
-
数据(Payload)
- 长度:46到1500字节
- 内容:实际传输的数据。
- 作用:携带上层协议的数据,如IP数据包。基本帧(64-1518字节);Q标签帧(64-1522字节);信封帧(64-2000字节)
-
填充(Padding)
- 长度:0到60字节
- 内容:如果数据部分小于46字节,则需要填充到最小长度46字节。
- 作用:确保帧的最小长度为64字节(不包括前导码和SFD)。
-
帧校验序列(Frame Check Sequence, FCS)
- 长度:4字节(32位)
- 内容:CRC(循环冗余校验)值,用于校验帧在传输过程中的完整性。
- 作用:接收方通过计算CRC值来验证帧的数据是否在传输过程中出现错误。
以太网帧格式示意图
+-------+-----+-----------------+-----------------+-------+-----------+-----+
| Preamble | SFD | Destination MAC | Source MAC | Type/Length | Payload | FCS |
+-------+-----+-----------------+-----------------+-------+-----------+-----+
| 7 Bytes | 1 Byte | 6 Bytes | 6 Bytes | 2 Bytes | 46-1500 Bytes | 4 Bytes |
+-------+-----+-----------------+-----------------+-------+-----------+-----+
注意事项
- 以太网帧的最小长度为64字节(不包括前导码和SFD),如果数据部分不足46字节,需要进行填充。
- 以太网帧的最大长度为1518字节(包括前导码和SFD),如果数据部分超过1500字节,则需要进行分片。
- 类型字段和长度字段的含义依赖于具体的以太网帧格式(以太网II帧格式或IEEE 802.3帧格式)。