TCP/IP

MAC 位址 (Media Access Control Address)

MAC 位址 (Media Access Control Address) 或稱 乙太網路位址,
是位於 資料鏈結層 的 實體位址 (Physical Address),用於:

提供 IEEE 802 系列區網技術 (e.g., 乙太網路、Wi-fi…) 的 訊框 (frame) 接收方得知 「來源位址」;
或予發送方設置「目的位址」,指示訊框欲傳送至區域網路中的哪台「目的裝置」。

 
因此,其作用域通常僅在同一 區域網路 (LAN) 內,
提供區網設備 (e.g., 交換器) 定址用,固不同於 邏輯位址 — IP 位址
 


 

位址結構

MAC 位址 共有 6 bytes (48 bit) 並以冒號間隔,
裝置間的位址皆是獨一無二的存在,一般皆以 十六進制表示,例如:

4A:00:04:3F:94:87

 
為確保位址的唯一性,前 24 bit 是由 IEEE 分配的 組織唯一識別碼 (OUI)
後 24 bit 則由製造商分配,並在售出裝置 (e.g., 網卡) 前寫入完整位址,這代表:

「預設」之 MAC 位址 無法提供任何網路配置的資訊。
這也是跟網路層 IP 位址 的最大差異。

 
[註]:由於 MAC 位址是屬於硬體介面的 (而非電腦主機),
因此主機更換網卡時,實體位址也就隨之改變囉!
 


 

位址分類

訊框 目的位址 可分為 單播、群播 和 廣播。如上所敘,位址共有 6 bytes (octet)。
若「第一個 byte」的 最低有效位元 為 0 就是 單播位址,否則為 1 就是 群播位址
一個例外是 — 廣播位址 (broadcast address),其所有 bit 皆為 1,也就是 ff:ff:ff:ff:ff:ff
 
unicast-vs-multicast
Photo courtesy of Wiki.
 
若以 進制轉換 的角度來思考:
由於只有「最低有效位元」會決定奇/偶數 (20),其他 2 的冪次皆是偶數,
判別單播位址相當於 判斷第一個 byte 是否為偶數
 
例如,欲判別此 MAC 位址「4a:00:04:3f:94:87」:
由於 a 相當於十進位的 10 => 偶數,因此知道它是 單播位址 (unicast address)
 
另外,可別忘了 網路位元組順序 是以 大頭端 傳輸,
這意味著傳輸訊框時,位址的第一個 byte 將從 b0, b1 依次傳到 b7 (見上圖),
這將有助於訊框接收方立即判別位址的種類。
 
當然,「正常」情況下:

來源位址 永遠屬於 單播位址 (unicast address)。

 


 

MAC 欺騙 (MAC Spoofing)

儘管「硬體」網路介面上皆寫入了獨一無二的 MAC 位址,
你還是能夠透過「軟體」的方式對其進行修改!
這對許多網路測試、除錯、拓樸對映非常方便,稱為 MAC 欺騙 (MAC Spoofing)
 
 

Windows 系統

Windows 系統可利用指令 ipconfig /all 檢視自身 MAC 位址 (實體位址):

 
修改 MAC 位址:『裝置管理員』->『目標網卡』->『內容/進階』->『本機管理位址』輸入即可:

 


 

Linux 系統

Linux 系統可直接使用指令:

ifconfig eth0 down
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
ifconfig eth0 up

 


 

macOS 系統

蘋果 macOS 系統可利用指令 ifconfig 目標網卡 檢視自身實體位址 :

 
並使用以下指令進行修改 (暫時):

ifconfig en0 ether xx:xx:xx:xx:xx:xx

 
也可以利用「系統偏好設定」->「網路」查詢實體位址:
mac-macaddr-gui
 
 

作者: 鄭中勝
喜愛音樂,但不知為何總在打程式 ? 期許能重新審視、整理自身所學,幫助有需要的人。

發表迴響