以太网的 MAC 帧
格式主要有两类:DIX Ethernet V2 的帧格式(以太网V2的帧格式)和IEEE 802.3 的帧格式,二者仅“类型”字段有差别,而 DIX Ethernet V2 的帧格式 更为流行。
前置阅读:计算机网络:数据链路层 —— MAC 地址
以太网V2的帧格式
-
目的地址 (Destination Address):6个字节长的MAC地址,表示帧的目的地址。如果该字段为广播地址(FF:FF:FF:FF:FF:FF),则表示帧将被发送到所有节点。
-
源地址 (Source Address):同样是6个字节长的MAC地址,表示帧的源地址。
-
类型的值用来指明数据载荷中的内容,是由上一层的哪个协议封装的以便将收到的MAC帧的数据载荷上交给上一层的这个协议。
- 当值大于等于
0x0600
时,该字段表示上层协议类型- 0x0800:TCP/IP网际层 IP 协议封装的PDU
- 0x8137:由 Novel 网络层 IPX 协议封装的PDU
- 当值小于
0x0600
时,表示数据负载长度。
- 当值大于等于
-
FCS
:使用CRC生成的帧检验序列FCS,接收方的网卡通过FCS的内容就可检测出帧在传输过程中是否产生了误码。 -
填充 (Padding):为满足最小帧长为 64B 的要求(6B+6B+2B+46B+4B=64B),数据载荷最小长度为 46B,当数据字段的长度小于46字节时,数据链路层会在数据载荷的后面插入相应数量的填充字节,以确保MAC帧的长度不小于64B。
-
数据载荷的最大长度被限制为 1500B,以太网V2的MAC帧的最大长度为1518字节
-
物理层在发送以太网MAC帧前,还要在其前面添加8字节的前导码,前同步码的目的是使接收方的时钟同步。
接收方可能收到的无效MAC帧包括以下:
-
MAC帧的长度不是整数个字节
-
通过 MAC 帧的 FCS 字段的值检测出帧有误码
-
MAC帧的长度不在 64~1518 字节之间
当帧从一个节点发送到另一个节点时,接收端会检查 FCS
来验证数据是否完好无损。接收方收到无效的MAC帧时,就简单将其丢弃,以太网的数据链路层没有重传机制。