本文主要是介绍Ethernet MAC 简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MAC(Media Access Controller)简介
MAC在OSI的通信模式中是处于链路层(Link Layer)中的,是链路层的底层。
图1.OSI网络参考模型
在链路层中,MAC在CSMA/CD(Carrier Sense Multiple Access/Collision Derect),即载波监听多路访问/冲突检测方法协议的规范下进行接收和发送数据的。包括两个部分:接收器与发送器。
CSMA/CD基于一些常识性规则:
¤ 载波监听:工作站时刻在侦听介质。在介质空闲时间超过帧间隙后,工作站可以发送一帧。
¤ 冲突监测:两个工作站可能在大致相同的时刻开始发送。发送时,一个工作站继续侦听,检测是否存在引起其信号混淆的并发传输。
¤ 拥挤:发送者检测到冲突后,必须继续发送位以保证所有的工作站能够发现冲突。这些附加位称为拥挤位,共32位(4个字节)。
¤ 等待:卷入冲突的工作站必须等待随机长的时间,然后再尝试发送。
发送和传输的数据是采用如下的MAC帧格式:
图2.MAC帧格式
处于MAC帧开始处的字段为前导码字段,由7个字节组成。(其功能是使物理层的接收器建立比特同步。)编码形式为多个“1”、“0”交替的二进制序列,最后一比特为“0”。在这种编码形式下,经过曼彻斯特编码后成为周期性方波。
帧首定界符(SFD)是MAC帧的第2个字段,其编码形式为“10101011”序列,长度刚好为一个字节。该字段的功能是指示一帧的开始。
终点地址(DA)为第3个段,长度为6个字节。该字段用来指出帧要发往的工作站。
源点地址(SA)处于终点地址字段之后,其长度也为6个字节。该字段功能是指示发送该帧的工作站地址。
长度指示符段长度为2个字节,用来指示紧随其后的逻辑链路控制(LLC)数据字节的长度,长度单位为字节数。
LLC数据段,就是所输的数据了,该数据由LLC子层提供和接收。
填充(PAD)字段紧接的LLC之后,用来对LLC数据进行填加,以保证帧有足够长度,适应冲突检测的需要。
帧检验序列(FCS)处于帧的最后,其长度为32比特,用于检验帧在传输过程中有无差错。
上面涉及到了MAC地址,所以简单说下:
IEEE802.3标准规定,源点地址字段中第1比特恒为“0”。相对的,终点地址有更多的规定,原因是一个帧有可能发给某一工作站,也可能发送给一组工作站,还有可能发送给所有工作站,我们将后两种情况分别称为组播(Multicast-Group)和广播(Broadcast)。
MAC地址的格式如下图所示。当该字段第一比特为“0”时,表示帧要发送给某一工作站,即所谓单站地址。当该字段第一比特为“1”时,表示帧发送给一组工作站,即所谓组地址。全“1”的组地址表示广播地址。
图3.MAC地址组成
I/G=0:单站地址;
I/G=1:组地址;
U/L=0:全局地址;
U/L=1:局部地址。
顺便在此指出,帧长除有最小要求外,最长也有限制,这是由于发送站和接收站的缓冲器容量总有一限度,同时如果一个工作站发送的帧太长,将妨碍其它站对媒体的使用。
这篇关于Ethernet MAC 简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!