以太网帧

帧格式

       以太网帧(Ethernet frame)是符合以太网标准的链路层协议数据单元(PDU),其格式有Ethernet V1、Ethernet V2、RAW 802.3、IEEE 802.3/802.2 LLC和IEEE 802.3/802.2SNAP。现在大多数网络应用都使用Ethernet V2格式,而交换机之间的BPDU则采用IEEE802.3/LLC格式。但所有的以太网(802.3标准)帧都基于一个共同的格式:前导码(7 Bytes)、帧起始定界符(1 Bytes)、目的地址(6 Bytes)、源地址(6 Bytes)、类型/长度(2 Bytes)、数据和填充字段(48~1500 Bytes)、帧校验序列(4 Bytes)。如图所示:

       前导码(Preamble)在以太网帧的前7个字节,接收器电路用它确定一个帧的到达时间,并确定编码位(称为时钟恢复)之间的时间量。由于以太网是一个异步的局域网(即每个以太网接口卡中不是保持精确的时钟同步),从一个接口到另一个接口的编码位之间的间隔可能不同。因此前导码的主要作用是同步,其典型值为0xAA,在发现帧起始定界符(Start Frame Delimiter)时,接收器用它“恢复时钟”。SFD的固定值为0xAB。
       目的地址(Destination, DST)和源地址(Source,SRC)都是MAC地址,以太网帧的目的地址也允许寻址到多个站点(即广播、组播等形式)。
      源地址后跟着一个长度/类型字段,在多数情况下,它用于确定头部后面的数据类型。常见值包括IPv4(0x0800)、IPv6(0x86DD)、ARP(0x0806)。0x8100表示一个Q标签帧(可携带一个虚拟局域网或802.1q标准的VLAN ID)。IEEE所制定的以太网标准使得DIXv2帧和IEEE帧在一个局域网中不能共存。因此,IEEE允许从现存的DIXv2网卡和网络设备到IEEE的标准设备的迁移。为了让设备可以识别使用的是哪种类型的帧,IEEE没有分配1536以下(十六进制数为0x0600)的数为协议类型代码。数据字段的最大值为1500字节。所以一台设备可以很容易从源地址之后的2个字节来判断是哪种类型的帧,如果值为1536(十进制)或更高则为类型字段,意味着是DIXv2帧。如果从源地址之后的2个字节小于1536,则可确定是长度字段,为IEEE 802.3帧。
P/Q标签是为虚拟局域网准备的,其概念在虚拟局域网的部分中。
然后是帧的数据区或有效载荷部分,这里是存放高层PDU的地方。传统的以太网的有效载荷一直是1500字节,这是以太网的最大传输单元(Maximum Transmission Unit,MTU)。若数据超过MTU,会被分片后才进行传输。若有效载荷低于最小长度(48字节)则会被填充0直到满足最小长度。

帧校验序列

       以太网帧格式中,数据区(有效载荷区)之后的最后4字节字段提供了对帧完整性的检查。检查方法是利用循环冗余校验(CRC)将计算结果写入FCS字段中,接收方接收到以太网帧后对FCS字段进行相同过程的CRC计算,若计算结果与FCS字段不同,则帧可能在传输过程中受损,这种情况下受损帧通常被丢弃。

       CRC的过程就是将FCS字段中的数据除以一个约定好的生成多项式,所得余数取反后的值写入FCS中。生成多项式已经被标准化为一系列不同的n值,以太网使用n=32,CRC32的生成多项式是33位的二进制数100000100110000010001110110110111

        下图是以5位二进制数11001为生成多项式,结果取4位的例子。余数为0100,取反后得到1011即为最终结果。

帧大小

       前面提到过,以太网帧有最小和最大尺寸。最小的帧是64字节,要求数据区(有效载荷)长度(无标签)最小为48字节。当有效载荷达不到下限时,填充字节(值为0)被添加到有效载荷尾部,以确保达到最小长度。
帧最小长度的规定对最初的10Mb/s以太网的CSMA/CD很重要。为了使传输数据的站能知道哪个帧发生了冲突,通常限制一个以太网的传输长度(2500m,通过4个中继器连接的5个电缆段)。长度和电子传播速度确定就可以算出输出帧到达目的地所需时间。那么一个输出帧的最后位在所需时间后仍处于传输过程中,这个时间是信号到达位于最大距离的接收器并返回的时间。如果这时检测到一个冲突,传输中的站就能知道是当前在传输的帧发生了冲突。这种情况下该站发送一个干扰信号提醒其他站,然后启动一个随机的二进制指数退避过程。
在802.3标准里,规定了一个以太帧的数据部分(Payload)的最大长度是1500个字节,这个数也是你经常在网络设备里看到的MTU。在这个限制之下,最长的以太帧包括6字节的目的地址(DMAC)、6字节的源地址(SMAC)、2字节的以太类型(EtherType)、1500字节的数据(Payload)、4字节的校验(FCS),总共是1518字节。在802.1Q中,又定义了以太帧中可选的QTag,位于SMAC和EtherType之间,占4个字节。在这种情况下,一个以太帧如果有QTag,它的最大长度就变成了1522字节。

       上述情况针对于标准以太网或快速以太网。在千兆、万兆甚至更高的以太网时代,1500字节显得传输效率不够高(数据区尺寸占帧总尺寸的比例),因此允许传输以太网巨型帧,这是一种非标准的以太网扩展,通常允许帧尺寸高达9000字节。

 

                                                                                   本文部分内容摘自《TCP/IP详解 卷1:协议(中文版)第2版》