MAC簡(jiǎn)介
MAC即媒體介入控制層,屬于OSI模型中數(shù)據(jù)鏈路層下層子層。它定義了數(shù)據(jù)幀怎樣在介質(zhì)上進(jìn)行傳輸。在共享同一個(gè)帶寬的鏈路中,對(duì)連接介質(zhì)的訪問(wèn)是“先來(lái)先服務(wù)”的。物理尋址在此處被定義,邏輯拓?fù)洌?a target="_blank">信號(hào)通過(guò)物理拓?fù)涞穆窂剑┮苍诖颂幈欢x。線路控制、出錯(cuò)通知(不糾正)、幀的傳遞順序和可選擇的流量控制也在這一子層實(shí)現(xiàn)。
MAC協(xié)議的種類
多個(gè)用戶,多址接入的核心問(wèn)題就是:對(duì)于一個(gè)信道,多個(gè)用戶產(chǎn)生競(jìng)爭(zhēng)的時(shí)候,如何采用一些協(xié)調(diào)機(jī)制,也就是采用何種MAC協(xié)議。例如兩種極端的MAC協(xié)議,一種是完全自由的方式,用戶自由發(fā)送,但是要解決一個(gè)問(wèn)題是碰撞后如何辦,一種是完全排序,每個(gè)用戶都被規(guī)定了詳細(xì)的規(guī)則來(lái)發(fā)送,接收包。但是,實(shí)際上不可能這樣的,因?yàn)镸AC協(xié)議,主要決定了通信的吞吐量、延遲等性能,所以,這塊是非常重要的,是多種方式的結(jié)合。MAC協(xié)議主要分為以下三類
1、固定分配信道。信道基本上可以分為頻分、時(shí)分、碼分、空分,每個(gè)用戶都被固定的分配了一個(gè)信道,這種方式實(shí)時(shí)性很高,但是有浪費(fèi)。主要是面向語(yǔ)音。例如FDMA(電話)、TDMA(GSM)、CDMA.
2、隨機(jī)分配信道。。主要是面向數(shù)據(jù)。例如ALOHA,CSMA就是隨機(jī)分配的典型例子。
3、按需分配信道。根據(jù)用戶的要求,按照需求分配信道,例如802.16就是按照需求分配信道。主要是面型多媒體。
MAC幀格式
MAC幀基本格式如下圖所示:
1、FrameControl字段

-ProtocolVersion:目前為0
-Type:幀類別,有下面三種,每個(gè)類別又有一些子類別(見(jiàn)Subtype)
01:控制幀(ControlFrame)
10:數(shù)據(jù)幀(DataFrame)
11:保留未使用
-Subtype:幀子類別,與Type共同來(lái)決定一個(gè)幀的類型,詳細(xì)如下表所示
-ToDS/FromDS:指示幀目的地是否為DS(分布式系統(tǒng)),可以簡(jiǎn)單地理解為是否【發(fā)往/來(lái)自】AP
-Morefragments:指示是否還有分片(除去最后一個(gè)分片)
-Retry:指示當(dāng)前幀是否為重傳幀,接收方收到后會(huì)刪掉重復(fù)幀
-Powermanagement:指示STA的電源管理模式,1表示STA在數(shù)據(jù)交換完成后進(jìn)入省電(Power-Save)模式,對(duì)于AP恒為0
-Moredata:指示AP為進(jìn)入省電模式的STA進(jìn)行幀緩存(來(lái)自DS)
-WEP:指示framebody是否使用WEP加密
-Order:指示將進(jìn)行嚴(yán)格次序(StrictlyOrdered)傳送
2、其他字段
-Duration/ID:可以用在下面三個(gè)場(chǎng)景中
@1Duration,第15位置0,用于設(shè)定NAV,數(shù)值代表預(yù)計(jì)使用介質(zhì)的微秒數(shù)
@2在CFP幀中,第14位置0,第15位置1,其他值為0,字段值為32768,讓其他沒(méi)有收到Beacon幀的STA公告無(wú)競(jìng)爭(zhēng)周期
@3在PS-Poll(省電-輪詢)幀中,第14、15位同時(shí)置1,用于從省電模式醒來(lái)的STA發(fā)送AID(關(guān)聯(lián)標(biāo)識(shí)符)以取得在AP中的緩存幀
-Address:有以下幾種類型,由幀類型決定使用哪幾個(gè)地址字段,通常有三個(gè),SA、DA和BSSID
BSSID,基本服務(wù)集標(biāo)識(shí)符
DA,目的地址
SA,源地址
RA,接收端地址
TA,發(fā)送端地址
-SequenceControl:包含兩個(gè)子字段,4位的分片編號(hào)(FragmentNumber)和12位的順序編號(hào)(SequenceNumber)
順序編號(hào)4096的模數(shù),從0開(kāi)始,每處理一個(gè)上層封包就加1
若上層封包分片處理,所有幀分片采用相同順序編號(hào)
對(duì)于重傳幀,順序編號(hào)不變
-FrameBody:幀主體也稱數(shù)據(jù)字段(Datafield),用于傳遞上層有效載荷(Payload),可為0
-FCS:幀校驗(yàn)序列,采用循環(huán)冗余校驗(yàn)(CRC)碼,計(jì)算范圍包括MAC頭中所有字段及幀主體
3、幀主體數(shù)據(jù)
不同于以太網(wǎng),802.11的FrameBody以802.2的邏輯鏈路控制(LLC)來(lái)封裝不同類型的網(wǎng)絡(luò)協(xié)議
有兩種封裝方式:RFC1042、802.1H
下圖是802.11里的IP封裝
MAC的修改地址
通用修改
需要根據(jù)MAC芯片型號(hào)聯(lián)系廠家拿到對(duì)應(yīng)的固件刷寫(xiě)工具,以及MAC地址文件,其中MAC地址是需要向IEEE聯(lián)盟購(gòu)買有效段的,并是唯一的,如果出現(xiàn)重復(fù)的則會(huì)報(bào)IP地址重復(fù)的錯(cuò)誤而導(dǎo)致相同MAC地址的計(jì)算機(jī)網(wǎng)絡(luò)訪問(wèn)異常。
Unix/Linux系統(tǒng)下修改MAC地址
進(jìn)入保存MAC信息文件
圖形界面下Alt+Ctrl+Space→打開(kāi)命令行終端→
方法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
→顯示相關(guān)網(wǎng)絡(luò)數(shù)據(jù)
其中inetaddr為ip地址,HWaddr是主機(jī)的HardwareAddress即MAC。
修改MAC
方法1、修改MAC的方法:在/etc/rc.d/init.d/中的network中加入ifconfigeth0hwetherxx:xx:xx:xx:xx:xx(MAC)然后重新啟動(dòng)就會(huì)發(fā)現(xiàn)網(wǎng)卡地址已經(jīng)是xxxxxxx了。
方法2、也可以將/sbin/ipconfigeth0hwetherMACaddr加入到/etc/rc.local中去。
評(píng)論