題 MAC地址的確切用法是什麼?


我知道IP地址是分層的,因此整個互聯網的路由器都知道轉發數據包的方向。使用MAC地址,沒有層次結構,因此無法進行數據包轉發。因此,MAC地址不用於數據包傳輸。

我不認為它無緣無故地坐在那裡。所以我的問題是,在數據包傳輸過程中MAC地址究竟在哪裡發揮作用?


124


起源




答案:


TL; DR> MAC地址是以太網網絡(以及其他一些類似標準,如WiFi)的低級組件。它們允許設備與本地物理網絡(LAN)上的計算機進行通信,並且無法通過Internet進行路由 - 因為物理硬件理論上可以插入到世界上任何地方。

相比之下,IP地址覆蓋整個互聯網,路由器使用它們來確定發送數據的位置,即使它需要多跳才能到達目的地 - 但它們無法與本地網絡上的物理硬件連接。

如果我們找到比以太網更好的標準,它可能不會使用MAC地址,但來自互聯網的IP流量仍然可以流過它,即使互聯網上的其他人從未聽說過它。

如果我們找到了比IP更好的標準(例如IPv6,如果所有IPv4地址用完了),大多數以太網硬件都可以承載新類型的流量而無需修改 - 而簡單的軟件/固件更新將解決大部分其餘的問題。

需要MAC地址來建立本地以太網(或wifi)網絡功能。即使物理連接是共享的,它們也允許網絡設備吸引單個直連設備的注意力。當數千個設備在單個組織內連接在一起時,這可能很重要。它們在更廣泛的互聯網上不起作用。

要真正理解這個問題的答案,你需要了解這個問題 OSI(有時稱為7層)模型

對於在沒有直接物理連接的單獨機器上運行的2個應用程序之間進行通信,a 批量 工作需要發生。

在過去,每個應用程序都會確切地知道需要運行哪些機器代碼指令,以便產生一個適當的信號,該信號可以到達遠端的應用程序,並且可以由遠端的應用程序解碼。所有通信都是有效的點對點,必須編寫軟件以適應其部署的確切情況。顯然,這是不可持續的。

而不是這樣,網絡問題被分成幾層,每層都知道如何與遠程機器上的匹配層對話,以及如何與本地機器下面(有時是上面)的層進行通信。它對任何其他層都一無所知 - 因此您的Web瀏覽器無需關心它是否在使用令牌環,以太網或wifi網絡的計算機上運行 - 並且絕對不需要知道什麼是硬件遠程機器使用。

為了使這項工作,7層模型使用一個系統,而不是嵌套的信封;應用程序創建其數據並將其包裝在操作系統要提供的信封中。操作系統將其包裝在另一個信封中並將其傳遞給網絡驅動程序。網絡驅動程序將其包裝在另一個信封中並將其放在物理電纜上。等等。

底層, 第1層,是物理層。這是電線,晶體管和無線電波的層,在這一層,通信主要只是一個流和一個流。數據到達物理連接的所有地方。使用CAT-5電纜將計算機的網絡端口插入交換機。

第2層 是數據鏈接層。這提供了一些結構和一些noughts,一些錯誤檢測和糾正功能,以及關於哪個物理連接設備(這裡的物理連接實際上可以通過wifi)的一些指示應該注意該消息。這是MAC地址發揮作用的層,我們稍後會再回過頭來。但是MAC地址不是這一層的唯一可能。例如,令牌環網絡需要不同的數據鏈路實現。

第3層 是網絡層。這是IP工作的層(雖然它不是唯一的網絡層協議),它允許計算機發送可以到達“網絡”任何地方的任何機器的消息。不需要在有問題的機器之間建立直接連接。

4-7層 是更高級別的協議。它們離硬件越來越遠,離應用程序越來越近了。例如,TCP位於IP之上,並提供在消息丟失時自動重新發送消息的機制。

因此,MAC地址在第2層工作,並允許2台物理連接的計算機發送將被共享相同物理連接的其他計算機忽略的消息。

假設我有一個應用程序想要將一些數據發送到IP地址為8.8.8.8的機器上

第3層將數據包裝在一個信封中,該信封中包含IP地址8.8.8.8,然後將其交給第2層。

第2層查看此IP地址並確定它直接連接到哪台計算機能夠處理此消息。它將具有一個直接連接的IP地址選擇的查找表以及該機器中網卡的相應MAC地址。此查找表使用稱為ARP的協議構建,該協議允許網卡詢問其他直接連接的設備的問題。以太網保留一個特殊的MAC地址FF:FF:FF:FF:FF:FF,它允許設備通話 所有 物理連接設備。

如果IP地址在表中(或者可以通過ARP解析),它將第3層包絡包裝在第2層包絡中,MAC地址在新標頭中,然後將整個包傳遞到第1層的硬件具有匹配MAC地址的網卡將接收消息,網絡驅動程序將打開第2層信封,並將內容傳遞到操作系統期望在特定IP地址接收消息的任何部分。

或者,如果IP地址不在本地網絡上,則新信封將具有為該網絡接口配置的默認網關(即路由器)的MAC地址,並且硬件將該分組傳輸到路由器。

路由器在第2層信封中註意到自己的MAC地址,並打開2級數據包。它會查看3級信封上的IP地址,並找出下一條消息所需的位置,這可能是您ISP的路由器。如果路由器使用NAT(或類似),它甚至可以修改此時的3級信封,以保持內部IP地址的私密性。然後它將3級信封包裝在一個新的2級信封中,該信封將尋址到ISP的路由器的MAC地址,並在那裡發送消息。

刪除外信封並將內容包裝到發往鏈中下一步的新信封中的這一過程將繼續,直到消息到達目標機器。

然後信封將繼續被扯掉,因為消息向上走回層,直到它最終到達預期的收件人,這將是一個應用程序某處,希望知道如何處理該消息 - 但不知道如何消息到達那裡,確實沒有將響應恢復到原始機器所需的所有步驟。

但它一切正常,幾乎像魔術一樣!

請注意,網絡交換機可以使用MAC地址來優化網絡流量。雖然以太網集線器只是將所有傳入流量轉發到其所有端口,但相比之下,交換機只能將流量轉發到數據包的目標MAC地址所連接的單個端口。這增加了網絡的有效帶寬;通過定位特定端口,交換機可以避免在不必要的網段上轉發流量。交換機將使用ARP或數據包嗅探來識別哪些設備連接到哪個端口。交換機完全忽略第2層數據包的內容。


56



嗨!謝謝你的回答。據我所知,你的答案是最好的。如果你可以在你的場景中包含更多的ARP和NAT等概念,那將是非常棒的。 - Vishnu Vivek
添加了對ARP和網絡交換機的參考。我不認為NAT與MAC地址有任何關係,作為第3層功能...... - Bill Michell
@BillMichell:在IPv6中,MAC或其他本地(“硬件”)ID可用於組成IP。 - Luciano
答案是社區維基。如果您認為它有助於回答OP的問題,您可以編輯它以包含此附加信息。 - Bill Michell
這需要一個TL; DR。 - AJMansfield


什麼是MAC地址用於?

MAC地址是使您的本地以太網網絡工作的低級基礎。本地意味著網絡設備可以通過電纜或WiFi直接連接,也可以通過網絡集線器或網絡交換機直接連接。

每個網卡都有一個唯一的MAC地址。在以太網上發送的數據包始終來自MAC地址並發送到MAC地址。如果網絡適配器正在接收數據包,它會將數據包的目標MAC地址與適配器自己的MAC地址進行比較。如果地址匹配,則處理該分組,否則丟棄該分組。

有一些特殊的MAC地址,例如ff:ff:ff:ff:ff:ff,它是廣播地址並對網絡中的每個網絡適配器進行尋址。

IP地址和MAC地址如何協同工作?

IP是在以太網上面的層上使用的協議。例如,另一個協議是IPX。 IP允許連接不同的本地網絡,從而形成公司網絡或全球互聯網。

當您的計算機要將數據包發送到某個IP地址x.x.x.x時,首先檢查目標地址是否與計算機本身位於同一IP網絡中。如果x.x.x.x在同一網絡中,則可以直接到達目標IP,否則需要將數據包發送到配置的路由器。

到目前為止,情況似乎變得更糟,因為現在我們有兩個IP地址:一個是原始IP數據包的目標地址,另一個是我們應該向其發送數據包的設備的IP(下一跳,要么是最後一個)目的地或路由器)。

由於以太網使用MAC地址,因此發送方需要獲取下一跳的MAC地址。有一個特殊的協議ARP(地址解析協議)用於此。一旦發送方檢索到下一跳的MAC地址,他就將該目標MAC地址寫入數據包並發送該數據包。

ARP如何工作?

ARP本身是一種高於以太網的協議,如IP或IPX。當設備想要知道給定IP地址的MAC地址時,它會向廣播MAC地址發送一個數據包,詢問“誰有IP地址y.y.y.y?”所有設備都會收到該數據包,但只有IP地址為y.y.y.y的設備才會收到“這就是我”的數據包。詢問設備接收答案,現在知道源MAC地址是要使用的正確MAC地址。當然結果將被緩存,因此設備不需要每次都解析MAC地址。

路由

我差點忘了提一下:沒有基於MAC地址的路由。低級以太網和MAC地址只能到達每個設備上 相同 網絡(有線或無線)。如果您有兩個網絡,其中有一台路由器介於兩者之間,則網絡A中沒有設備可以將數據包發送到網絡B中設備的MAC地址。網絡A中沒有設備具有網絡B中設備的MAC地址,因此該MAC地址的數據包將被網絡A中的所有設備(也由路由器)丟棄。

路由在IP級別完成。簡單地說,路由器正在執行我在上面“IP地址和MAC地址如何協同工作?”部分中所描述的內容。路由器將接收其自己的MAC地址但不同IP地址的數據包。然後他將檢查他是否可以直接到達目標IP地址。如果是這樣,他將數據包發送給目標。否則,路由器本身也配置了上游路由器,並將數據包發送到該路由器。

當然,您可以配置多個路由器。您的家庭路由器將只配置一個上游路由器,但在互聯網骨幹網中,大型路由器具有大型路由表,因此他們知道所有數據包的最佳方式。

MAC地址的其他用例

  1. 網絡交換機存儲每個端口上看到的MAC地址列表,只將數據包轉發到需要查看數據包的端口。

  2. 無線接入點通常使用MAC地址進行訪問控制。它們僅允許使用正確的密碼短語訪問已知設備(MAC地址是唯一的並識別設備)。

  3. DHCP服務器使用MAC地址識別設備並為某些設備提供固定的IP地址。


114



+1以實際回答問題的方式,使得那些還不知道答案的人能夠理解。 - fluffy
我不禁感到以某種方式創建一個很棒的信息圖表/圖表的衝動,MAC / IP交互的方式非常有趣! - NRGdallas
很好的答案只是一個細節:MAC地址也用於非以太網設備,你描述基本上適用於任何與IP堆棧一起使用的數據鏈路層 - kriss
值得關注的是Wi-Fi MAC:雖然它們是 通常 獨特的 能夠 用於識別設備,它們易於欺騙並通過無線方式發送。如果連接上沒有使用其他加密/認證,或者其他加密/認證機制很弱(例如:​​WEP),則它是 非常 攻擊者冒充授權設備並加入網絡是微不足道的。 - Iszi
最好的解釋! - minigeek


MAC地址(媒體訪問控制地址)通常是網絡中設備的標識符。因此,每個NIC(路由器,PC,網絡打印機,服務器等中的網絡接口控制器)都具有MAC地址。某些服務器內置了多個網卡,因此具有多個MAC地址。 MAC地址長度為6個字節(6個八位字節)。左邊是最重要的字節,右邊是最不重要的字節。正如您在下面的圖片中看到的,前3個字節是 組織唯一標識符。這表示製造此設備的製造商。

這是一個列表 組織唯一標識符Standards.ieee.org 

這是上面的替代方案: MAC-於供應商的查詢

常見的製造商的一些例子:

  • 00-05-5D(D-Link Systems Inc.)
  • 00-09-5B(Netgear Inc.)
  • 00-E0-4C(瑞昱半導體公司)
  • 00-E0-4F(思科系統公司)
  • 00-E0-64(三星電子)

最後3個字節(3個八位字節)由製造商隨機分配。

正如pjc50正確說明的那樣,以太網中的MAC地址有助於交換機決定將數據包發送到哪裡。還有一個廣播MAC地址。 ff:ff:ff:ff:ff:ff用於Broadcast-MAC-Address。請注意,MAC地址可以更改,因此請小心使用它作為明確的設備標識符! MAC地址也與ARP(地址解析協議)協議一起使用。那麼它是如何工作的,PC A向PC B發送一個ARP請求,它有自己的IP地址,MAC地址,接收器的IP地址和上面提到的廣播地址(ff:ff:ff:ff:ff :FF)。之後,PC B檢查數據包是否發送給他。如果是,則PC B發送其自己的MAC地址,IP地址,接收器的MAC地址和接收器的IP地址。其他設備丟棄該數據包。

PC A和B通常都會在所謂的ARP緩存中保存成功的連接。 PC保存連接的方式因設備而異。如果您不知道IP地址,則可以使用反向地址解析協議(RARP)獲取IP地址。使用RARP,設備會聯繫中央客戶端並要求其提供IP地址。但是這種方法現在很難使用。

以下技術使用MAC-48標識符格式:

  • 以太網絡
  • 802.11無線網絡
  • 藍牙
  • IEEE 802.5令牌環
  • 大多數其他IEEE 802網絡
  • FDDI
  • ATM(僅作為NSAP地址的一部分,交換虛擬連接) 光纖通道和串行連接SCSI(作為全球名稱的一部分)

47



比“每個設備(...)都有MAC地址更準確”。, 每個網卡 具有 一個 MAC地址。 (不考慮設置自定義MAC地址的能力。)並非所有打印機都內置了網卡,並且許多服務器具有多個網卡,因此有多個MAC地址。 - α CVn
假設PC-1將數據包發送到PC-2。現在Switch只讀取PC-1的MAC地址並將其保存到表中。如果您想了解更多有關其工作原理的信息,請閱讀: LAN交換機如何工作 :) - Meintjes
另一點是MAC地址是NIC如何決定丟棄什麼以及發送給處理器以進行處理的內容。線路上遇到的以太網幀的目標MAC地址與NIC MAC地址進行異或,如果結果全為0,那麼它就是用於該NIC的幀。 - bbayles
-1:問題是如何使用MAC地址,而不是MAC地址。解決問題的答案的唯一部分是最後的項目符號列表,並沒有詳細說明。 - Kevin
圖片來自維基百科: en.wikipedia.org/wiki/File:MAC-48_Address.svg,根據創作共享許可的圖片必須在使用時歸屬於作者。 - Étienne


他們  用於數據包傳輸:在以太網上,有許多設備,MAC地址指定哪個設備應該接收數據包。以太網交換機將使用它來選擇發送接收數據包的端口。


24



值得注意的是,以太網最初是一種總線介質,所有機器在物理上共享相同的介質(無線網絡仍然如此)。所以邏輯上它就是這樣的。 - LawrenceC
仍然適用於仍使用集線器的網絡:) - Doon
從此以後,交換機只是一個設施(真的隨著RJ-45局域網而廣泛傳播)我們可以並且確實擁有沒有它們的IP網絡(使用集線器或802.11) - kriss


在這種情況下忘記層次結構,這不是一個非常重要的問題。

MAC地址是ISO / OSI或TCP / IP模型中第2層(鏈路層)的地址。 IP地址來自相同型號的第3層(網絡層)。

在第2層網絡中,例如公共以太網,存在衝突域,其中所有連接的設備可以從任何端點接收所有幀(第2層單元數據)。但網絡外的任何人都無法接收這些幀。 MAC地址是這些域中的地址。

數據包是第3層單元數據,通常是IP數據包。它們穿過一個或多個碰撞域。 IP地址是此域中的地址。

交換機是使用MAC地址表的第2層設備和轉發幀。路由器是第3層設備,它們使用IP地址表轉發數據包。


7





以太網假定它想要與之通信的另一台計算機(另一台MAC)可以從其網絡適配器直接訪問。知識產權沒有。 IP假設它可以到達整個世界中的任何其他IP,並且如果它無法在當前子網上到達它,路由器將在那裡攜帶它,儘管NAT。第2層或以太網中不存在網關概念。

如果您有許多機器連接到交換機,並且不需要通過路由器與其他網絡/ Internet交換流量,那麼您實際上不需要啟動和運行IP。當然,應用程序必須在第2層之上實現或提供自己的協議,因為幾乎所有操作系統和應用程序都假設您總是希望使用TCP / IP。

永遠記住IP中的“互聯網”意味著“網絡互聯”意味著它真正關心的是獲取流量 之間 網絡超過  一個網絡,雖然顯然它也可以(也是)用於此。


6



第一段是完美的答案!照明! - Milind R


MAC地址用於物理傳輸。以太網適配器對IP沒有任何了解。因此,以太網適配器使用MAC地址來尋址數據包的接收器。

如果以太網適配器對IP知之甚少,那麼我們必須升級所有固件以切換到新協議(如IPv4到IPV6)。

此外,MAC地址中還包含有關其中製造商的一些信息。


6



路由器不使用MAC地址路由任何東西。他們使用IP地址。集線器將未經修改的流量複製到其端口之外,但這稱為橋接,因為流量不會遍歷不同的網絡,而是遍布同一網絡。 - LawrenceC