以太網(wǎng)的MAC層
以太網(wǎng)的MAC地址:
MAC地址又稱為硬件地址或者是物理地址,其實(shí)是指局域網(wǎng)上的每一臺(tái)計(jì)算機(jī)中固化在適配器的ROM中的地址。由于計(jì)算機(jī)的發(fā)展,世界上的計(jì)算機(jī)太多,為了能夠標(biāo)識(shí)每一臺(tái)計(jì)算機(jī),目前所采用的MAC地址一般是6字節(jié)的48位的長(zhǎng)度。這里我們可以這樣簡(jiǎn)單的理解,所謂的MAC地址,實(shí)際上就是適配器地址。
簡(jiǎn)述一下適配的作用:
適配器實(shí)際上就是每臺(tái)計(jì)算機(jī)接入到互聯(lián)網(wǎng)的一個(gè)接口,路由器因?yàn)橐獙?shù)據(jù)在不同的局域網(wǎng)上面路由,所以路由器一般不止一個(gè)接口,就是說(shuō)路由器一般不止一個(gè)硬件地址。
適配器有過(guò)濾的功能,它在局域網(wǎng)上每次收到一個(gè)MAC幀時(shí)(局域網(wǎng)上面?zhèn)鬏數(shù)臄?shù)據(jù)),就檢查MAC幀中的目的地址,發(fā)現(xiàn)如果和自己的地址一樣,則拿到該MAC幀,然后做其他處理,如果發(fā)現(xiàn)和自己的MAC地址不一樣,則把剛剛拿到的MAC幀再次丟到局域網(wǎng)中,以供其他的計(jì)算機(jī)使用。局域網(wǎng)上面的每一臺(tái)計(jì)算機(jī)都是通過(guò)這種方式拿到自己需要的數(shù)據(jù)(MAC幀)。
MAC幀的格式:

首先看一下以太網(wǎng)V2的MAC幀格式(MAC格式標(biāo)準(zhǔn)有兩個(gè),一個(gè)是DIXEthernetV2標(biāo)準(zhǔn),一個(gè)是IEEE的802.3標(biāo)準(zhǔn))上圖中的第一個(gè)地段的6個(gè)字節(jié)放置的是目的地址,第二個(gè)字段的6個(gè)字節(jié)放置的內(nèi)容是源地址,第三個(gè)字段的2個(gè)字節(jié)放置的內(nèi)容是類型,用來(lái)標(biāo)識(shí)上一層使用的是什么協(xié)議,比如0800是IP協(xié)議,0806是ARP協(xié)議,8035是RARP協(xié)議,MAC層根據(jù)這些字段的內(nèi)容來(lái)把數(shù)據(jù)傳遞給特定的層去使用。第四個(gè)字段是數(shù)據(jù)字段,它的長(zhǎng)度是46–1500字節(jié),如果數(shù)據(jù)的長(zhǎng)度不滿46字節(jié),MAC幀就會(huì)加入一些數(shù)據(jù)進(jìn)行填充,那么上層是如何知道數(shù)據(jù)的長(zhǎng)度呢,因?yàn)镸AC幀并沒(méi)有一個(gè)字段用來(lái)標(biāo)識(shí)數(shù)據(jù)的長(zhǎng)度,解決這個(gè)問(wèn)題使用了一種曼徹斯特編碼,大家可以上網(wǎng)查閱。最后一個(gè)字段是4個(gè)字節(jié)是幀檢驗(yàn)序列,使用了CRC校驗(yàn)。
這里還需要注意的一個(gè)問(wèn)題是,當(dāng)我們數(shù)據(jù)字段的數(shù)據(jù)長(zhǎng)度沒(méi)有46字節(jié)時(shí),上層是如何把多余的由MAC幀填充的數(shù)據(jù)丟掉呢,這里我們的上層協(xié)議中有字段長(zhǎng)度,會(huì)自動(dòng)的識(shí)別,然后把多余的數(shù)據(jù)丟掉。
MAC子層主要功能
MAC子層包括DCF和PCF。DCF:DistributedCoordinationFunction。PCF:PointCoordinationFunction
1、載波監(jiān)聽(tīng)(CarrierSense)
STA有兩種方法來(lái)判斷當(dāng)前介質(zhì)是否空閑
-檢查PHY層,是否有carrier存在
-使用虛擬carrier-sense功能,NAV(NetworkAllocationVector)
NAV是MAC層提供的一種定時(shí)器,保存了其他STA使用介質(zhì)的持續(xù)時(shí)間
其他STA發(fā)送的數(shù)據(jù)中帶有的Duration大于所保存的時(shí)間時(shí),STA就更新自己的NAV
當(dāng)NAV為0并且PHY層指示當(dāng)前介質(zhì)可用時(shí),STA才能發(fā)送數(shù)據(jù)
2、DCF
DCF是基于CSMA/CA的接入方法,盡可能避免沖突,可以自動(dòng)高效地共享介質(zhì)
DCF提供基本模式和RTS/CTS模式兩種介質(zhì)訪問(wèn)方式
利用競(jìng)爭(zhēng)窗口的二進(jìn)制指數(shù)回退機(jī)制協(xié)調(diào)多個(gè)STA對(duì)共享鏈路的訪問(wèn),避免出現(xiàn)因爭(zhēng)搶介質(zhì)而無(wú)法通信的情況
其核心思想是利用二進(jìn)制指數(shù)回退機(jī)制減輕數(shù)據(jù)分組的碰撞以及實(shí)現(xiàn)發(fā)生碰撞后對(duì)分組的有限重傳控制
STA發(fā)送數(shù)據(jù)幀時(shí),首先檢測(cè)介質(zhì)的狀態(tài)
如果介質(zhì)空閑且持續(xù)一個(gè)DIFS時(shí)間(DCFInterFrameSpace)后
-在基本模式下立即發(fā)送數(shù)據(jù)幀
-在RTS/CTS模式下,發(fā)送RTS幀
并同時(shí)檢測(cè)有沒(méi)有發(fā)生分組碰撞
如果發(fā)生碰撞,STA隨機(jī)在[0,Wi]之間均勻選取一個(gè)值Random()
?Wi被稱作競(jìng)爭(zhēng)窗口,其大小依賴于數(shù)據(jù)分組重新傳輸次數(shù)
CWmin≤CW≤CWmax
并計(jì)算出backofftimer(=Random()*slottime)
隨后,當(dāng)STA探測(cè)到介質(zhì)空閑時(shí)間等于一個(gè)slottime時(shí),計(jì)數(shù)器減1
而當(dāng)檢測(cè)到介質(zhì)忙時(shí),計(jì)數(shù)器值保持不變
并在介質(zhì)空閑時(shí)間等于DIFS時(shí),重新激活延時(shí)計(jì)數(shù)器且STA繼續(xù)監(jiān)測(cè)介質(zhì)
直到計(jì)數(shù)器值減到0時(shí)STA才發(fā)送MAC幀
另外,為了避免某STA長(zhǎng)時(shí)間占用信道,STA在兩次連續(xù)的數(shù)據(jù)幀發(fā)送之間也必須進(jìn)行隨機(jī)延遲。
3、應(yīng)答幀
某些幀需要接收STA回應(yīng)一個(gè)應(yīng)答幀,稱為ACK幀
ACK幀的傳輸不需要等待backofftimer
而是等待SIFS(ShortInterframeSpace)時(shí)間
SIFS通常比DIFS少2個(gè)slottime
4、隱藏節(jié)點(diǎn)問(wèn)題和RTS/CTS
RTS:Requesttosend
CTS:Cleartosend
由于信號(hào)的緣故(距離太遠(yuǎn)),某些STA之間無(wú)法直接通信,無(wú)法感知彼此的存在,
若此時(shí)同時(shí)給處于兩者之間的STA發(fā)送幀,導(dǎo)致中間STA佷尷尬
因?yàn)橹挥兄虚gSTA知道發(fā)生了沖突
此時(shí),需要使用RTS/CTS來(lái)解決該問(wèn)題
STA發(fā)送RTS幀,預(yù)約介質(zhì)的使用權(quán)和要求接收STA保持沉默
接收STA以CTS應(yīng)答,CTS幀要求附近的STA保持沉默直到過(guò)程結(jié)束
然后開(kāi)始幀的傳輸過(guò)程
RTS/CTS通常用在高用量的環(huán)境下以及傳輸競(jìng)爭(zhēng)比較顯著的場(chǎng)合
5、幀分片(FrameFragmentation)
幀分片的作用在于提高無(wú)線介質(zhì)中傳輸?shù)目煽啃?/p>
將一個(gè)完整幀分為幾個(gè)更小的幀來(lái)分別傳輸,每個(gè)分片幀都需要ACK
這樣當(dāng)某個(gè)分片幀出現(xiàn)錯(cuò)誤時(shí),只需要重新傳輸該幀即可
然而這也可能增加MAC層過(guò)載問(wèn)題(Overhead)
注意:
-幀分片只發(fā)生在單播幀中
-每個(gè)分片幀具有相同的幀序列號(hào)和遞增的幀編號(hào)
6、PCF
PCF作為DCF的補(bǔ)充,是一種可選的介質(zhì)訪問(wèn)機(jī)制
提供了不必通過(guò)競(jìng)爭(zhēng)即可使用介質(zhì)的服務(wù),為了滿足實(shí)時(shí)業(yè)務(wù)需求
用于Infrastructure模式網(wǎng)絡(luò)架構(gòu)中,由AP進(jìn)行協(xié)調(diào)
PCF以周期的形式進(jìn)行幀的傳輸
每個(gè)周期包括一個(gè)無(wú)競(jìng)爭(zhēng)階段和一個(gè)競(jìng)爭(zhēng)階段
-無(wú)競(jìng)爭(zhēng)階段(CFP:Contention-FreePeriod)
-競(jìng)爭(zhēng)階段(CP:ContentionPeriod)
CFP階段傳輸實(shí)時(shí)業(yè)務(wù),PCF起作用
CP階段傳輸非實(shí)時(shí)業(yè)務(wù),DCF起作用
評(píng)論