数据链路层--MAC层
Posted 明说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据链路层--MAC层相关的知识,希望对你有一定的参考价值。
MAC层
MAC层的硬件地址
在局域网中,硬件地址又称为物理地址或MAC地址。在所有计算机系统的设计中,标识系统都是一个核心问题,在标识系统中,地址就是识别某个系统的一个标识符,[SHOC78]给出的如下定义:名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。
MAC帧的格式
常用的以太网帧格式有两种标准,一种是DIX Ethernet V2标准,另一种是IEEE的802.3标准,下面只介绍使用的最多的以太网V2的MAC帧格式,如下图所示:
以太网V2的MAC帧由5个字段组成。前两个字段分别为6字节长的目的地址和源地址字段。第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧数据上交给上一层的这个协议。例如,当类型字段的值是0x0800时,就表示上层使用的是IP数据报。若类型字段的值为0x8137,则表示该帧是由Novell IPX 发过来的。第四个字段是数据字段,其长度在46到1500字节之间(46是这么算的,最小长度64字节减去18字节的首部和尾部,即得到数据字段的最小长度),最后一个字段是4字节的帧检验序列FCS(使用CRC检验)。
可以发现,在以太网V2的MAC帧格式中,其首部并没有一个帧长度(或数据字段长度)。那么,MAC子层又怎样知道从接收到的以太网帧中取出多少字节的数据交付上一层协议呢?前面的文章提到过,以太网发送的数据都使用曼彻斯特编码的信号,曼彻斯特编码的一个重要特点就是:在每一个码元的正中间(不管码元是0还是1),一定有一次电压的转换,从高到低或者从低到高,当发送方把一个以太网帧发送完毕后,就不再发送其它码元了。因此,发送方网络适配器的接口上的电压也不再变化了。这样,接收方就可以很容易的找到以太网帧的结束位置,在这个结束位置往前数4字节,就能确定数据字段的结束位置。
当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64字节,然而MAC帧的首部并没有指出数据字段的长度是多少,在有填充字段的情况下,接收端的MAC子层在剥去首部和尾部后,就把数据字段和填充字段一起交给上层协议。问题来了,上层协议如何知道填充字段的长度呢?当上层使用IP协议时,其首部就有一个“总长度”字段,因此“总长度”字段加上填充字段的长度,就等于MAC帧数据字段的长度。
从上图还可看到,在传输媒体上,实际传送的要比MAC帧还多8个字节。这是因为当一个站刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧的最前面的若干位就无法接收,结果整个MAC就成为无用的帧。为了接收端实现位同步,从MAC子层向下传到物理层时还要在帧的前面插入8字节,它由2个字段构成。第一个字段是7个字节的前同步码(1和0交替),它的作用是使接收端的适配器在接收MAC帧时能够迅速调整其时钟频率,使它和发送端的时钟同步,也就是实现位同步(比特同步)。第二个字段是帧开始定界符,定义为:10101011,最后两个连续的1,即告诉接收端适配器,MAC帧的信息马上要来了,请注意接收。MAC帧的FCS字段的检验范围不包括前同步码和帧开始定界符。
在以太网上传送数据时是以帧为单位传送的。以太网在传送帧时,各帧之间有一定的间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流都属于一个MAC帧。可见以太网不需要使用帧结束定界符,也不需要字节插入来保证透明传输。
IEEE802.3标准规定凡出现下列情况之一的即为无效MAC帧:
- 帧的长度不是整数个字节
- 帧检验序列FCS查出有差错
- 收到的帧的数据字段的长度不在46字节到1500字节之间
以上是关于数据链路层--MAC层的主要内容,如果未能解决你的问题,请参考以下文章