历史上的今天
返回首页

历史上的今天

今天是:2025年03月18日(星期二)

正在发生

2018年03月18日 | mac层的主要功能介绍

2018-03-18 来源:互联网

MAC即媒体介入控制层,属于OSI模型中数据链路层下层子层。它定义了数据帧怎样在介质上进行传输。在共享同一个带宽的链路中,对连接介质的访问是“先来先服务”的。物理寻址在此处被定义,逻辑拓扑(信号通过物理拓扑的路径)也在此处被定义。线路控制、出错通知(不纠正)、帧的传递顺序和可选择的流量控制也在这一子层实现。

  MAC协议的种类

  多个用户,多址接入的核心问题就是:对于一个信道,多个用户产生竞争的时候,如何采用一些协调机制,也就是采用何种MAC协议。例如两种极端的MAC协议,一种是完全自由的方式,用户自由发送,但是要解决一个问题是碰撞后如何办,一种是完全排序,每个用户都被规定了详细的规则来发送,接收包。但是,实际上不可能这样的,因为MAC协议,主要决定了通信的吞吐量、延迟等性能,所以,这块是非常重要的,是多种方式的结合。MAC协议主要分为以下三类

  1、固定分配信道。信道基本上可以分为频分、时分、码分、空分,每个用户都被固定的分配了一个信道,这种方式实时性很高,但是有浪费。主要是面向语音。例如FDMA(电话)、TDMA(GSM)、CDMA.

  2、随机分配信道。。主要是面向数据。例如ALOHA,CSMA就是随机分配的典型例子。

  3、按需分配信道。根据用户的要求,按照需求分配信道,例如802.16就是按照需求分配信道。主要是面型多媒体。

  MAC帧格式

  MAC帧基本格式如下图所示:

  1、FrameControl字段

  -ProtocolVersion:目前为0

  -Type:帧类别,有下面三种,每个类别又有一些子类别(见Subtype)

  00:管理帧(ManagementFrame)

  01:控制帧(ControlFrame)

  10:数据帧(DataFrame)

  11:保留未使用

  -Subtype:帧子类别,与Type共同来决定一个帧的类型,详细如下表所示

  -ToDS/FromDS:指示帧目的地是否为DS(分布式系统),可以简单地理解为是否【发往/来自】AP

  -Morefragments:指示是否还有分片(除去最后一个分片)

  -Retry:指示当前帧是否为重传帧,接收方收到后会删掉重复帧

  -Powermanagement:指示STA的电源管理模式,1表示STA在数据交换完成后进入省电(Power-Save)模式,对于AP恒为0

  -Moredata:指示AP为进入省电模式的STA进行帧缓存(来自DS)

  -WEP:指示framebody是否使用WEP加密

  -Order:指示将进行严格次序(StrictlyOrdered)传送

  2、其他字段

  -DuraTIon/ID:可以用在下面三个场景中

  @1DuraTIon,第15位置0,用于设定NAV,数值代表预计使用介质的微秒数

  @2在CFP帧中,第14位置0,第15位置1,其他值为0,字段值为32768,让其他没有收到Beacon帧的STA公告无竞争周期

  @3在PS-Poll(省电-轮询)帧中,第14、15位同时置1,用于从省电模式醒来的STA发送AID(关联标识符)以取得在AP中的缓存帧

  -Address:有以下几种类型,由帧类型决定使用哪几个地址字段,通常有三个,SA、DA和BSSID

  BSSID,基本服务集标识符

  DA,目的地址

  SA,源地址

  RA,接收端地址

  TA,发送端地址

  -SequenceControl:包含两个子字段,4位的分片编号(FragmentNumber)和12位的顺序编号(SequenceNumber)

  顺序编号4096的模数,从0开始,每处理一个上层封包就加1

  若上层封包分片处理,所有帧分片采用相同顺序编号

  对于重传帧,顺序编号不变

  -FrameBody:帧主体也称数据字段(Datafield),用于传递上层有效载荷(Payload),可为0

  -FCS:帧校验序列,采用循环冗余校验(CRC)码,计算范围包括MAC头中所有字段及帧主体

  3、帧主体数据

  不同于以太网,802.11的FrameBody以802.2的逻辑链路控制(LLC)来封装不同类型的网络协议

  有两种封装方式:RFC1042、802.1H

  下图是802.11里的IP封装

  MAC的修改地址

  通用修改

  需要根据MAC芯片型号联系厂家拿到对应的固件刷写工具,以及MAC地址文件,其中MAC地址是需要向IEEE联盟购买有效段的,并是唯一的,如果出现重复的则会报IP地址重复的错误而导致相同MAC地址的计算机网络访问异常。

  Unix/Linux系统下修改MAC地址

  进入保存MAC信息文件

  图形界面下Alt+Ctrl+Space→打开命令行终端→

  方法1、输入:ifconfig

  方法2、输入:ifconfig|grep“inet”|cut-c0-36|sed-e‘s/[a-zA-Z:]//g’

  方法3、输入:hostname-i

  方法4、输入:netstat-r

  方法5、输入:cat/etc/resolv.conf

  →显示相关网络数据

  其中inetaddr为ip地址,HWaddr是主机的HardwareAddress即MAC。

  修改MAC

  方法1、修改MAC的方法:在/etc/rc.d/init.d/中的network中加入ifconfigeth0hwetherxx:xx:xx:xx:xx:xx(MAC)然后重新启动就会发现网卡地址已经是xxxxxxx了。

  方法2、也可以将/sbin/ipconfigeth0hwetherMACaddr加入到/etc/rc.local中去。


  以太网的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起作用


推荐阅读

史海拾趣

Eby Company公司的发展小趣事

eBay的成功不仅仅局限于美国市场。从早期开始,eBay就积极寻求全球化扩张。通过与不同国家和地区的合作伙伴建立合作关系,eBay逐步进入了欧洲、亚洲和拉丁美洲等市场。这种全球化战略使eBay能够接触到更广泛的用户群体,进一步巩固了其在全球在线拍卖市场的领先地位。

ARRA Inc公司的发展小趣事

1995年,皮埃尔·奥米迪亚(Pierre Omidyar)以AuctionWeb的名字推出了eBay,最初只是一个在线拍卖个人物品的平台。随着互联网的普及和用户对在线交易需求的增长,eBay迅速吸引了大量用户。其独特的商业模式和用户友好的界面使eBay成为在线拍卖市场的领军者。1998年,eBay成功上市,成为当时最成功的互联网公司之一。

Good Will Instrument Co., Ltd.公司的发展小趣事

1995年,皮埃尔·奥米迪亚(Pierre Omidyar)以AuctionWeb的名字推出了eBay,最初只是一个在线拍卖个人物品的平台。随着互联网的普及和用户对在线交易需求的增长,eBay迅速吸引了大量用户。其独特的商业模式和用户友好的界面使eBay成为在线拍卖市场的领军者。1998年,eBay成功上市,成为当时最成功的互联网公司之一。

Erocore Enterprise Co Ltd公司的发展小趣事

随着技术实力的提升,Erocore开始积极拓展市场。公司凭借优质的产品和服务,逐渐在电子行业中树立了良好的品牌形象。通过与国内外知名企业的合作,Erocore的产品逐渐进入更广泛的市场领域。同时,公司也加大了市场营销力度,通过参加展会、举办研讨会等方式,提升品牌知名度和影响力。

Anderson Power公司的发展小趣事

面对电子行业的快速变化和市场需求的不断升级,Erocore始终保持对创新的追求。公司加大研发投入,推动产品升级和技术创新。同时,Erocore也积极响应环保政策,推动绿色生产和发展。通过采用环保材料和节能技术,Erocore在确保产品质量的同时,也为环保事业做出了积极贡献。

请注意,以上故事均为虚构内容,旨在展示一个电子企业在发展过程中可能面临的挑战和机遇,以及如何通过不断努力实现持续发展。

Greatbatch-Sierra Inc公司的发展小趣事

随着技术实力的提升,Erocore开始积极拓展市场。公司凭借优质的产品和服务,逐渐在电子行业中树立了良好的品牌形象。通过与国内外知名企业的合作,Erocore的产品逐渐进入更广泛的市场领域。同时,公司也加大了市场营销力度,通过参加展会、举办研讨会等方式,提升品牌知名度和影响力。

问答坊 | AI 解惑

低压差线性稳压器(LDO)介绍

摘要:本文论述了低压差线性稳压器(LDO)的基本原理和主要参数,并介绍LDO的典型应用和国内发展概况。 引言 便携电子设备不管是由交流市电经过整流(或交流适配器)后供电,还是由蓄电池组供电,工作过程中,电源电压都将在很大范围内变化。比如单体锂 ...…

查看全部问答>

请教PDIUSBD12 枚举问题

请教大家一个问题! 我现在在用PDIUSBD12,通过SoftConnect连接到主机,主机显示了“无法识别的USB设备”,然后在单片机的程序内收到了一个复位信号,接下来就没反应了!(接下来应该会收到主机发送的设备描述符请求才对呀)。不知道有没有人知道 ...…

查看全部问答>

712主频时间问题,为何中断处理时间没有改善

外部中断处理程序大小在100多个汇编指令,为保证中断处理时间尽量短,采用48兆主频,依然耗时很多,丢中断.请各位高手指教! 相关链接:https://bbs.eeworld.com.cn/upfiles/img/20075/2007521114421607.rar…

查看全部问答>

【兼职机会】传感器模拟电路

要求:精通微弱信号调理电路设计,如放大、隔离、滤波等;有过多种传感器及信号调理电路设计经验;熟练运用Protel、Orcad、PowerPCB等制板软件及相关仿真软件。地点:北京有兴趣,联系erawisdom@163.com…

查看全部问答>

LPC1768开发板之间网络传输

replyreload += \',\' + 1705701;鉴于之前发的网络专题帖子都是电脑与开发板之间的通信,而开发板与开发板之间的通信例程比较少,这里上传一个开发板之间的网络通信例程,以供大家参考一下,测试现象如下 客户端串口打印信息 服务器端串口打印信 ...…

查看全部问答>

晒WEBENCH设计的过程+TPS40210设计

在WEBENCH中,还可以对已选择的电源器件进行设计,从而获得参考设计,以这次电赛推荐的芯片TPS40210为例。 首先在界面中选择“电源设计”中的“电源设计器部件列表”,进入设计。 在其中输入或选择自己选好的器件,比如TPS40210。 然后点击开启 ...…

查看全部问答>

【TI首届低功耗设计大赛】GSM短信测试

本帖最后由 tianshuihu 于 2015-1-8 00:47 编辑 采用GPS定位只能获得当前位置的信息,如果不能将信息上传其应用受到很大局限 GPS通讯应用范围很广,但是局限也很明显:一是成本很高,另一点是其本身的通信原理决定其通信地点不能有太多、太厚的 ...…

查看全部问答>

HDC1008 湿度误差大怎么处理??

   我在使用TI HDC1008时 发现RH (目前有做200pcs量)数据整理偏高 6%~7%,已超过其规格书 宣称的4%精度,  偏高原因暂时不清楚。   但是由于需要出货,所以现在我们想在MCU中通过参数进行补偿 RH读数减去6%(RH-6 ...…

查看全部问答>

探讨,关于MSP430F5529的IO问题

本帖最后由 liutogo 于 2015-7-2 08:31 编辑 之前作比赛就瞄准了MSP430F5529(比较新,还有LanucPad开发板) 硬件上设计选用5529做主控,用于医疗器械类上,第一次成功的申请到了5片的5529,当时狂喜 不过发现我们用5529不耐用,两下就折腾没了 ...…

查看全部问答>