網卡MAC地址作為互聯網設備在以太網中身份的唯一標識在以太網通訊中的作用比IP地址還要重要,MAC地址分成兩部分,前24位是組織唯一標識符(OUI, Organizationally unique identifier),后24位由廠商自行分配。IP地址又稱為邏輯地址而MAC地址就叫做物理地址,一台主機要給另一台主機發送數據只知道對方的IP地址是不可以的,比如路由器下的大部分設備的IP地址應該都是192.168.1.xxx的此時就可以看出MAC地址的作用,IP的的划分有一定的規則(A類,B類等)同樣MAC地址也有對應的划分的規則不過相比IP地址的分類MAC地址的分類就很簡單了。
規則:
- 發送的第一個字節的第一個比特如果為0則為單播地址,反之如果是1則可能會是廣播或組播地址,他們的區別就是廣播地址是每一個一個字節所有的BIT都是1,所以換句話說就是全為1的以太網地址為廣播地址,第一個字節0xAB,的B如果為偶數則為單播地址反之如果為奇數則為組播地址。(2012-04-11)
- 第二個BIT表示MAC地址是全球唯一地址還是本地地址,0表示全球唯一地址,1表示本地唯一地址。這一位也叫G/L位。(2012-04-11)
舉例:
如果MAC地址為00-50-BA-xx-xx-xx
第一個字節二進制表示為 0x00000000; 其中紅色比特位的值就表示此MAC地址為單播地址。這里需要注意的是以太網上數據傳輸字節序是“Big Edian”的方式傳輸的,所以實際上 這里的00為MAC的6字節中最高字節,但是單字節的比特順序是先傳低位的所以在以太網上看到的數就是 0000 0000 ......;同理如果為組播或廣播地址第一個bit就會是1。同時這還是一個全球唯一的MAC地址。
最后在別人博客看到這樣一段話,記下來
2層的MAC地址是如何與3層的IP地址進行映射的呢?通過將MAC地址的前25位強行規定位0100.5E,而后23位對應IP地址的后23位,而組播IP地址的前4位均相同如:
IP地址:1110yyyy.yxxxxxxx.xxxxxxx.xxxxxxxx
MAC地址:00000001.00000000.01011110.0xxxxxxx.xxxxxxx.xxxxxxxx
例如:組播IP地址224.215.145.230應該映射到下列哪個組播MAC地址?( )
(A) 01-00-5e-57-91-e6 (B) 01-00-5e-d7-91-e6
(C) 01-00-5e-5b-91-e6 (D) 01-00-5e-55-91-e6
用二進制來換算,將215.145.230換算成1101,0111,1001,0001,1110,0110,取最后23位放到MAC地址中的23位可以計算得出答案是A。
顯然有32個IP地址(有5個y可以不一樣)對應一個MAC地址,所以要避免在同一網絡中使用的多個組播IP地址對應一個MAC地址。