1. 程式人生 > 其它 >MAC地址的介紹(單播、廣播、組播、資料收發)

MAC地址的介紹(單播、廣播、組播、資料收發)

MAC地址組成

網路裝置的MAC地址是全球唯一的。MAC地址長度為48位元,通常用十六進位制表示。MAC地址包含兩部分:前24位元是組織唯一識別符號(OUI,OrganizationallyUniqueIdentifier),由IEEE統一分配給裝置製造商。

例如,華為的網路產品的MAC地址前24位元是0x00e0fc。後24位序列號是廠商分配給每個產品的唯一數值,由各個廠商自行分配(這裡所說的產品可以是網絡卡或者其他需要MAC地址的裝置)。

MAC地址有單播、廣播、組播之分

單播

區域網上的幀可以通過三種方式傳送。第一種是單播,指從單一的源端傳送到單一的目的端。每個主機介面由一個MAC地址唯一標識,MAC地址的OUI中,第一位元組第8個位元表示地址型別。對於主機MAC地址,這個位元固定為0,表示目的MAC地址為此MAC地址的幀都是傳送到某個唯一的目的端。在衝突域中,所有主機都能收到源主機發送的單播幀,但是其他主機發現目的地址與本地MAC地址不一致後會丟棄收到的幀,只有真正的目的主機才會接收並處理收到的幀。

廣播

第二種傳送方式是廣播,表示幀從單一的源傳送到共享乙太網上的所有主機。廣播幀的目的MAC地址為十六進位制的FFFFFFFFFFFF,所有收到該廣播幀的主機都要接收並處理這個幀。

廣播方式會產生大量流量,導致頻寬利用率降低,進而影響整個網路的效能。

當需要網路中的所有主機都能接收到相同的資訊並進行處理的情況下,通常會使用廣播方式。

組播

第三種傳送方式為組播,組播比廣播更加高效。組播轉發可以理解為選擇性的廣播,主機偵聽特定組播地址,接收並處理目的MAC地址為該組播MAC地址的幀。

組播MAC地址和單播MAC地址是通過第一位元組中的第8個位元區分的。組播MAC地址的第8個位元為1,而單播MAC地址的第8個位元為0。

當需要網路上的一組主機(而不是全部主機)接收相同資訊,並且其他主機不受影響的情況下通常會使用組播方式。

MAC在資料幀接收與傳送的應用

幀從主機的物理介面傳送出來後,通過傳輸介質傳輸到目的端。共享網路中,這個幀可能到達多個主機。主機檢查幀頭中的目的MAC地址,如果目的MAC地址不是本機MAC地址,也不是本機偵聽的組播或廣播MAC地址,則主機會丟棄收到的幀。

如果目的MAC地址是本機MAC地址,則接收該幀,檢查幀校驗序列(FCS)欄位,並與本機計算的值對比來確定幀在傳輸過程中是否保持了完整性。如果幀的FCS值與本機計算的值不同,主機會認為幀已被破壞,並會丟棄該幀。如果該幀通過了FCS校驗,則主機會根據幀頭部中的Type欄位來確定將幀傳送給上層哪個協議處理。本例中,Type欄位的值為0x0800,表明該幀需要傳送到IP協議上處理。在傳送給IP協議之前,幀的頭部和尾部會被剝掉。

舉例說明:主機A要發資料給主機B,主機A在封裝Frame(OSI的第二層用的資料格式),要封裝對方的MAC,查詢ARP表發現不知道B的MAC,只知道IP,它就傳送一個ARP包,源IP是自己的,目的IP是B的,源MAC是自己的,目的MAC是廣播的。然後這個ARP請求在A所在的內網被廣播,當其他機器接到這個包時,用目的IP和自己的IP比較,不是的話就丟棄;是的話,B接收後,就應答這個請求,把自己的MAC送給A。如果B是其他子網的主機,那麼路由器根據子網掩碼會判斷出B是其他子網,然後路由器把自己的MAC返回給A,A以後再給B發包時,目的MAC封裝的就是路由器的。總之,A和B如果是同一子網,A傳送的目的MAC就是B的,否則A傳送的目的MAC就是路由器的。

MAC出現的歷史原因:乙太網發明出來的時候,IP還沒有壟斷網路層協議,那時還有Novell網的IPX/SPX協議、DEC公司開發的CLNP網路協議,以及Apple公司開發的Apple Talk協議,乙太網需要支援這所有的網路層協議,如果沒有MAC地址,勢必需要網絡卡解讀網路層協議頭的地址資訊,而每一種網路層的地址都大相徑庭,所以增加了乙太網卡的實現複雜度。

而網絡卡有了MAC地址,可以不依賴於任何網路層協議,可以獨立判斷一個以太幀是否接收(依據MAC地址匹配),這樣大大簡化了網絡卡的實現。

即使以後出現更多的網路層協議,網絡卡也無需太多的改變,這就是網路分層的精髓,一層的內部實現無需知曉其上層、或下層協議欄位。

二層交換機:交換機工作主要依靠MAC表(MAC和乙太網埠對映表),交換機會記錄每個埠連線的主機的MAC。當交換機收到主機的資料包,提取目的MAC地址,檢視目的MAC地址的主機連線哪個埠,然後往那個埠傳送資料。交換機不會改變資料包的任何資訊,包括MAC。

無線路由器:目前的無線路由器同時扮演有線網路中交換機與路由器的角色。傳統有線網路中的交換機與路由器一般是分離的,客戶端要傳輸資料時,若在同一子網在交換機上傳輸無須經過路由器,若跨子網傳輸資料時就要通過交換機與路由器了。無線路由器能接收發送給子網的資料包,也能接收發往外網的資料包。當接收到子網的資料包,無線路由器只起到交換機的作用;當接收到發往外網的資料包,通過NAT協議傳送出去。