MAC帧的格式

MAC帧的格式

常用的以太网MAC帧格式有两种标准,一种是DIX Etherent标准,一种是IEEE的802.3标准。两种帧的结构如图所示;

这个以太网V2的前导域为8B,而IEEE802.3的前导域为7B,将空余出来的一个字节用作帧起始分解符,它的位模式为10101011,这样做的目的就是为了和IEEE802.4和IEEE802.5兼容。

还有的就是IEEE802.3帧规定的第三个字段是“长度/类型域”。当这个字段值大于1500时,表示类型,这个就是和V2以太网一样的标准了;当这个字段值小于1500时,才表示“长度”,这时,接收方无法确定对接收到的帧做如何处理,必须通过在数据部分增加一个小的LLC头部,用它来提供帧类型的信息。

 

以太网V2的MAC帧由以下五个部分组成,

前两个字段分别是6B的目的地址和源地址字段

第三个字段是2B的类型字段(TYPE),它用来标志上一层使用的是什么协议,以便于把收到的MAC帧的数据上交给上一层的这个协议常见的协议类型如图所示;

 

第四个字段是数据字段,其长度为46~1500B(46B是这样的得出来得;最小帧长64B减去18B的首部地址和尾部就得出数据字段的最小长度),这里要注意的就是如果一个帧的数据部分少于46B,则MAC子层就会在数据字段的后面加入一个整数字节的填充字段(Pad)以保证以太网的MAC地址不小于64B

第五个字段是4B的帧校验和(Checksum)(使用CRC校验),这个字段只是提供检错功能,并不提供纠错功能。该效验和效验的范围为:目的地址,源地址,类型,数据等字段。CRC效验的生成多项式为:

G(x)=X(32)+X(26)+X(23)+X(22)+X(16)+X(12)+X(11)+X(10)+X(8)+X(7)+X(5)+X(4)+X(2)+X(1)+1

这里需要注意以下两点

  1. 在以太网V2的MAC帧中,其首部并没有一个帧长度(或数据长度)的字段,那么MAC子层如何知道从接收到的以太网帧中取出多少字节的数据交给上一层的协议
  2. 当数据字段不足46B时候,必须通过填充字段来扩充数据字段的长度,使其满足最小长度64B的要求,那么接收端的MAC子层在从接收到的帧中剥去首部和尾部后把数据字段交给上一层协议后,上一层协议如何识别有效的数据字段的长度

回答1的问题:这是因为以太网采用曼彻斯特编码,曼彻斯特编码的一个重要特点是:在曼彻斯特的每一个码元的正中间一定有一次电压的转化(从高到低或者从低到高)。当发送方把一个以太网帧发送完毕后,就不再发送其他码元(帧之间有着一定的间隔),这样发送方适配器上的电压就不再变化,于是接收方就可以很容易地找到以太网帧的结束位置,这个位置上往前数4B(效验和),就能确定数据字段的结束位置

回答2的问题:上一层协议要识别数据帧的数据字段的有效长度,一般是通过上层协议的类似“总长度”字段推断出来的。例如,如果上层协议使用的是IP协议的时候,其IP头中就有一个“总长度字段”,因此“总长度”字段加上填充字段,应当等于MAC帧中数据字段的长度。例如,当IP数据包的总长度为42B时,填充字段共有4B,当MAC帧将46B的数据交给IP层时,IP层就把其中的4B的填充字段丢弃。

另外,在传输媒介上实际传输的要比MAC帧多8B,该8B的位模式为10101010.这个位模式经过曼彻斯特编码后,会产生一个10MHZ的方波,从而使得接收方与发送方的时钟方便地同步在一起。

猜你喜欢

转载自blog.csdn.net/weixin_40752764/article/details/83150980