以太網的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起作用
評論