禁止碼迷,布布扣,豌豆代理,碼農教程,愛碼網等第三方爬蟲網站爬取!
MAC 地址
硬件地址
在局域網中,並不是主機或路由器具有鏈路層地址,而是它們的適配器(網絡接口)具有鏈路層地址。適配器本來是在主機箱內插入一塊網絡接口板,但是現在的計算機主板上都嵌入了適配器。計算機與外界局域網的通信就是通過適配器進行的,要做到這一點,適配器需要具備以下功能:
- 數據進行串行/並行傳輸的轉換。
- 對數據進行緩存。
- 在計算機的操作系統安裝設備驅動程序。
- 實現以太網協議。
硬件地址又稱為物理地址或 MAC 地址,硬件地址存在於適配器的 ROM 中。IEEE 802 標准所說的“地址”嚴格地講應當是每一個站的“名字”或標識符,它規定 MAC 地址字段可采用 6 字節(48位)或 2 字節(16 位)這兩種中的一種。
適配器可能是由不同地區的不同公司生產的,怎么保證沒有適配器具有相同的 MAC 地址呢?IEEE 的注冊管理機構對 MAC 地址空間進行管理,他們負責向廠家分配地址字段 6 個字節中的前三個字節 (即高位 24 位),稱為組織唯一標識符OUI。地址字段 6 個字節中的后三個字節 (即低位 24 位) 由廠家自行指派,稱為擴展唯一標識符,必須保證生產出的適配器沒有重復地址。一個地址塊可以生成 2^24 個不同的地址,這種 48 位地址稱為 MAC-48,它的通用名稱是 EUI-48。生產適配器時,6 字節的 MAC 地址已被固化在適配器的 ROM,因此 MAC 地址也叫做硬件地址 (hardware address)或物理地址。
IEEE 規定地址字段的第一字節的最低位為 I/G 位,IEEE 只分配地址字段前三個字節中的 23 位。。當 I/G位 = 0 時地址字段表示一個單站地址,當 I/G位 = 1 時表示組地址,用來進行多播。當 I/G 位分別為 0 和 1 時,一個地址塊可分別生成 223 個單個站地址和 223 個組地址。所有 48 位都為 1 時為廣播地址,只能作為目的地址使用。
IEEE 把地址字段第一字節的最低第 2 位規定為 G/L 位(以太網幾乎不管這個位)。當 G/L位 = 0 時是全球管理(保證在全球沒有相同的地址),廠商向 IEEE 購買的 OUI 都屬於全球管理。當 G/L位 = 1 時是本地管理,這時用戶可任意分配網絡上的地址。
適配器檢查 MAC 地址
適配器具有過濾功能,適配器從網絡上每收到一個 MAC 幀時,就首先用硬件檢查 MAC 幀中的 MAC 地址。如果是發往本站的幀則收下,然后再進行其他的處理。否則就將此幀丟棄,不再進行其他的處理。“發往本站的幀”包括以下三種幀:
- 單播幀(一對一):收到的幀的 MAC 地址與本站的硬件地址相同;
- 廣播幀(一對全體):發送給本局域網上所有站點的幀(全 1);
- 多播幀(一對多):發送給本局域網上一部分站點的幀。
所有的適配器都至少能夠識別前兩種幀,即能夠識別單播地址和廣播地址,有的適配器可用編程方法識別多播地址,只有目的地址才能使用廣播地址和多播地址。以太網適配器還可以以混雜方式 (promiscuous mode) 工作,以該方式運行的以太網適配器只要“聽到”有幀在以太網上傳輸就都接收下來。
MAC 幀的格式
常用的以太網 MAC 幀格式有 DIX Ethernet V2 標准和 IEEE 的 802.3 標准,最常用的 MAC 幀是以太網 V2 的格式。
以太網 V2
以太網 V2 的格式有 5 個字段,目的地址、源地址字段有 6 字節。類型字段 2 字節,類型字段用來標志上一層使用的是什么協議,以便把收到的 MAC 幀的數據上交給上一層的這個協議。第四個字段是數據字段,長度在 46 ~ 1500 字節(最小長度 64 字節 - 18 字節的首部和尾部 = 數據字段的最小長度 46字節)。最后一個字段是幀檢驗序列 FCS 字段,長度是 4 字節。
當數據字段的長度小於 46 字節時,應在數據字段的后面加入整數字節的填充字段,以保證以太網的 MAC 幀長不小於 64 字節。
當一個站剛開始接收 MAC 幀時,若適配器時鍾未與到達的比特流達成同步時,幀的接收就有可能出錯。因此為了達到比特同步,在傳輸媒體上實際傳送的要比 MAC 幀還多 8 個字節。在幀的前面插入(硬件生成)的 8 字節中,第一個字段共 7 個字節是前同步碼,用來迅速實現 MAC 幀的比特同步。第二個字段 1 個字節是幀開始定界符,表示后面的信息就是 MAC 幀。
無效的 MAC 幀
出現以下情況之一的幀,即為無效的 MAC 幀:
- 數據字段的長度與長度字段的值不一致;
- 幀的長度不是整數個字節;
- 用收到的幀檢驗序列 FCS 查出有差錯;
- 數據字段的長度不在 46 ~ 1500 字節之間(有效的 MAC 幀長度為 64 ~ 1518 字節之間)。
幀間最小間隔
因為以太網傳送幀時,各幀之間必須有一定間隔,因此接收端只需要找打幀開始定界符,其后面到達的比特流就都屬於一個 MAC 幀。由此可見,以太網並不需要結束定界符。幀間最小間隔為 9.6 us,相當於 96 bit 的發送時間。一個站在檢測到總線開始空閑后,還要等待 9.6 us 才能再次發送數據。這樣做是為了使剛剛收到數據幀的站的接收緩存來得及清理,做好接收下一幀的准備。
IEEE 802.3 MAC 幀格式
與以太網V2 MAC 幀格式相似,區別在於:
- IEEE 802.3 規定的 MAC 幀的第三個字段是“長度 / 類型”。當這個字段值大於 0x0600 時(相當於十進制的 1536),就表示“類型”,這樣的幀和以太網 V2 MAC 幀完全一樣。當這個字段值小於 0x0600 時才表示“長度”。
- 當“長度/類型”字段值小於 0x0600 時,數據字段必須裝入上面的邏輯鏈路控制 LLC 子層的 LLC 幀。
IP 地址與硬件地址
IP 地址與硬件地址是不同的地址,簡單地說 MAC 地址決定下一跳,IP 地址決定終點在哪。從層次的角度看,硬件地址(或物理地址)是數據鏈路層和物理層使用的地址。IP 地址是網絡層和以上各層使用的地址,是一種邏輯地址(稱 IP 地址是邏輯地址是因為 IP 地址是用軟件實現的)。
發送數據時,數據從高層下到低層,然后再到通信鏈路上傳輸。使用 IP 地址的數據報到達數據鏈路層時,就被封裝為 MAC 幀。
在 IP 層抽象的互聯網上只能看到 IP 數據報,圖中的 IP1 → IP2 表示從源地址 IP1 到目的地址 IP2 ,兩個路由器的 IP 地址並不出現在 IP 數據報的首部中。 對於路由器而言,路由器只根據目的站的 IP 地址的網絡號進行路由選擇。 在具體的物理網絡的鏈路層中,只能看見 MAC 幀而看不見 IP 數據報。
IP 層抽象的互聯網屏蔽了下層很復雜的細節。在抽象的網絡層上討論問題,就能夠使用統一的、抽象的 IP 地址研究主機和主機或主機和路由器之間的通信。
參考資料
《計算機網絡(第七版)》 謝希仁 著,電子工業出版社
《計算機網絡 自頂向下方法》 [美] James F.Kurose,Keith W.Ross 著,陳鳴 譯,機械工業出版社