以太网的MAC层
以太网的MAC地址:
MAC地址又称为硬件地址或者是物理地址,其实是指局域网上的每一台计算机中固化在适配器的ROM中的地址。由于计算机的发展,世界上的计算机太多,为了能够标识每一台计算机,目前所采用的MAC地址一般是6字节的48位的长度。这里我们可以这样简单的理解,所谓的MAC地址,实际上就是适配器地址。
简述一下适配的作用:
适配器实际上就是每台计算机接入到互联网的一个接口,路由器因为要将数据在不同的局域网上面路由,所以路由器一般不止一个接口,就是说路由器一般不止一个硬件地址。
适配器有过滤的功能,它在局域网上每次收到一个MAC帧时(局域网上面传输的数据),就检查MAC帧中的目的地址,发现如果和自己的地址一样,则拿到该MAC帧,然后做其他处理,如果发现和自己的MAC地址不一样,则把刚刚拿到的MAC帧再次丢到局域网中,以供其他的计算机使用。局域网上面的每一台计算机都是通过这种方式拿到自己需要的数据(MAC帧)。
MAC帧的格式:
首先看一下以太网V2的MAC帧格式(MAC格式标准有两个,一个是DIXEthernetV2标准,一个是IEEE的802.3标准)上图中的第一个地段的6个字节放置的是目的地址,第二个字段的6个字节放置的内容是源地址,第三个字段的2个字节放置的内容是类型,用来标识上一层使用的是什么协议,比如0800是IP协议,0806是ARP协议,8035是RARP协议,MAC层根据这些字段的内容来把数据传递给特定的层去使用。第四个字段是数据字段,它的长度是46–1500字节,如果数据的长度不满46字节,MAC帧就会加入一些数据进行填充,那么上层是如何知道数据的长度呢,因为MAC帧并没有一个字段用来标识数据的长度,解决这个问题使用了一种曼彻斯特编码,大家可以上网查阅。最后一个字段是4个字节是帧检验序列,使用了CRC校验。
这里还需要注意的一个问题是,当我们数据字段的数据长度没有46字节时,上层是如何把多余的由MAC帧填充的数据丢掉呢,这里我们的上层协议中有字段长度,会自动的识别,然后把多余的数据丢掉。
MAC子层主要功能
MAC子层包括DCF和PCF。DCF:DistributedCoordinationFunction。PCF:PointCoordinationFunction
1、载波监听(CarrierSense)
STA有两种方法来判断当前介质是否空闲
-检查PHY层,是否有carrier存在
-使用虚拟carrier-sense功能,NAV(NetworkAllocationVector)
NAV是MAC层提供的一种定时器,保存了其他STA使用介质的持续时间
其他STA发送的数据中带有的Duration大于所保存的时间时,STA就更新自己的NAV
当NAV为0并且PHY层指示当前介质可用时,STA才能发送数据
2、DCF
DCF是基于CSMA/CA的接入方法,尽可能避免冲突,可以自动高效地共享介质
DCF提供基本模式和RTS/CTS模式两种介质访问方式
利用竞争窗口的二进制指数回退机制协调多个STA对共享链路的访问,避免出现因争抢介质而无法通信的情况
其核心思想是利用二进制指数回退机制减轻数据分组的碰撞以及实现发生碰撞后对分组的有限重传控制
STA发送数据帧时,首先检测介质的状态
如果介质空闲且持续一个DIFS时间(DCFInterFrameSpace)后
-在基本模式下立即发送数据帧
-在RTS/CTS模式下,发送RTS帧
并同时检测有没有发生分组碰撞
如果发生碰撞,STA随机在[0,Wi]之间均匀选取一个值Random()
ØWi被称作竞争窗口,其大小依赖于数据分组重新传输次数
CWmin≤CW≤CWmax
并计算出backofftimer(=Random()*slottime)
随后,当STA探测到介质空闲时间等于一个slottime时,计数器减1
而当检测到介质忙时,计数器值保持不变
并在介质空闲时间等于DIFS时,重新激活延时计数器且STA继续监测介质
直到计数器值减到0时STA才发送MAC帧
另外,为了避免某STA长时间占用信道,STA在两次连续的数据帧发送之间也必须进行随机延迟。
3、应答帧
某些帧需要接收STA回应一个应答帧,称为ACK帧
ACK帧的传输不需要等待backofftimer
而是等待SIFS(ShortInterframeSpace)时间
SIFS通常比DIFS少2个slottime
4、隐藏节点问题和RTS/CTS
RTS:Requesttosend
CTS:Cleartosend
由于信号的缘故(距离太远),某些STA之间无法直接通信,无法感知彼此的存在,
若此时同时给处于两者之间的STA发送帧,导致中间STA佷尴尬
因为只有中间STA知道发生了冲突
此时,需要使用RTS/CTS来解决该问题
STA发送RTS帧,预约介质的使用权和要求接收STA保持沉默
接收STA以CTS应答,CTS帧要求附近的STA保持沉默直到过程结束
然后开始帧的传输过程
RTS/CTS通常用在高用量的环境下以及传输竞争比较显著的场合
5、帧分片(FrameFragmentation)
帧分片的作用在于提高无线介质中传输的可靠性
将一个完整帧分为几个更小的帧来分别传输,每个分片帧都需要ACK
这样当某个分片帧出现错误时,只需要重新传输该帧即可
然而这也可能增加MAC层过载问题(Overhead)
注意:
-帧分片只发生在单播帧中
-每个分片帧具有相同的帧序列号和递增的帧编号
6、PCF
PCF作为DCF的补充,是一种可选的介质访问机制
提供了不必通过竞争即可使用介质的服务,为了满足实时业务需求
用于Infrastructure模式网络架构中,由AP进行协调
PCF以周期的形式进行帧的传输
每个周期包括一个无竞争阶段和一个竞争阶段
-无竞争阶段(CFP:Contention-FreePeriod)
-竞争阶段(CP:ContentionPeriod)
CFP阶段传输实时业务,PCF起作用
CP阶段传输非实时业务,DCF起作用
评论
查看更多