一、MAC 層的硬件地址
在局域網中,主機的硬件地址又稱為物理地址,或 MAC 地址。6個字節。
IEEE 的注冊管理機構 RA 負責向廠家分配地址字段的前三個字節(即高位 24 位,組織唯一標識符OUI)。
后三個字節(即低位 24 位)由廠家自行指派,稱為擴展標識符,必須保證生產出的適配器沒有重復地址。
一個地址塊可以生成224個不同的地址。
這種 48 位地址稱為 MAC-48,它的通用名稱是EUI-48。
“MAC地址”實際上就是適配器地址,固化在網卡的ROM中。
第一個字節的最低位I/G(Individual/Group)
0:單個地址
1:組播地址
第一個字節的最低第二位為G/L(Globe/Local)
0:G全球管理,廠商購買的MAC地址
1:L本地管理,不用購買
例:MAC地址 f6-20-e9-8a-00-37
廠商代碼:f6-20-e9。先發送f6
第一字節f6=11110110
I/G為0,單個地址,最高位最先發送;G/L為1,本地管理
適配器檢查 MAC 地址
+“發往本站的幀”包括以下三種幀:
單播(unicast)幀(一對一),I/G=0
廣播(broadcast)幀(一對全體,全1),ff-ff-ff-ff-ff-ff
多播(multicast)幀(一對多),I/G=1
所有適配器都能識別前兩種,最后一種一般靠軟件識別。
二、 MAC 幀的格式
常用的以太網MAC幀格式有兩種標准 :
DIX Ethernet V2 標准
IEEE 的 802.3 標准
最常用的 MAC 幀是以太網 V2 的格式。
類型字段用來標志上一層使用的是什么協議,
以便把收到的 MAC 幀的數據上交給上一層的這個協議。
數據字段的正式名稱是 MAC 客戶數據字段
最小長度 64 字節-18 字節的首部和尾部 = 數據字段的最小長度
當數據字段的長度小於 46 字節時,
應在數據字段的后面加入整數字節的填充字段,
以保證以太網的 MAC 幀長不小於 64 字節。
在幀的前面插入的 8 字節中的第一個字段共 7 個字節,
是前同步碼,用來迅速實現 MAC 幀的比特同步。
第二個字段是幀開始定界符,表示后面的信息就是MAC 幀。
為了達到比特同步,
在傳輸媒體上實際傳送的
要比 MAC 幀還多 8 個字節
三、為什么MAC幀最短長度為512bit(64字節)
CSMA/CD協議的一個要點就是當發送站正在發送時,若檢測到沖突則立即終止發送,然后推后一段時間再發送。如果所發送的幀太短,還沒來得及檢測到最遠到來的沖突就已經發送完了,那么就無法進行沖突檢測了。結果是:發送失敗,但未察覺而不重發。
因此所發送幀的最短長度應當要保證在該幀發送完畢前,必須檢測到可能最晚來到的沖突信號。該時間為往返時延2τ,取為51.2us,相當於發送512bit。
數據字段最短長度為46字節=64字節-18字節(目的地址(6)+原地址(6)+協議類型(2)+FCS(4))
四、MAC幀中沒有標示幀長度
以太網采用曼徹斯特編碼,當發送完一個幀后就不再發送任何碼元了,發送方網絡適配器的接口上的電壓不再變化。
往前數4個字節就是FCS部分。
上層協議如何知道填充字段的長度
當數據字段長度不足46字節時,MAC子層會在數據段后面加入整數個字節的填充字段,以保證MAC幀長度不小於64字節。
那么上層協議如何知道填充字段的長度?
上層使用IP協議時,IP數據報首部有一個“總長度”字段。
五、無效的 MAC 幀
幀的長度不是整數個字節;
用收到的幀檢驗序列 FCS 查出有差錯;
數據字段的長度不在 46 ~ 1500 字節之間。
有效的 MAC 幀長度為 64 ~ 1518 字節之間。
對於檢查出的無效 MAC 幀就簡單地丟棄。以太網不負責重傳丟棄的幀。
六、幀間最小間隔
幀間最小間隔為 9.6 μs,相當於 96 bit 的發送時間(10M以太網)。
一個站在檢測到總線開始空閑后,還要等待 9.6μ s 才能再次發送數據。
這樣做是為了使剛剛收到數據幀的站的接收緩存來得及清理,做好接收下一幀的准備。