我們在上個系列中聊過 IP 位置,也知道 IP 位置分為很多種,例如浮動、固定、虛擬 IP 位置。然而所謂的 IP 位置其實都是網路上的一個「虛擬」地址,更精確點來說:不是永久的。
縱然 IP 位置有固定、虛擬等等的說法,但是其本質還是「暫時的」。例如你向 ISP 申請一個固定 IP,你的路由器或是電腦才有了一個能被外界直接找到的公開 IP 位置,之所以叫做固定的是因為通常不太會變動,但是,當你的合約到期,這組 IP 位置還是會被收回。
但今天要聊的 MAC 地址相較於 IP 位置就不太一樣了,是設備剛出廠的時候就是「永久的」,更精確點來說是設備中的網路卡(NIC,Network Interface Controller)有寫死的 MAC 地址。
如果某個生產網路設備的廠商想要製造網路卡,就需要和 IEEE(Institute of Electrical and Electronics Engineers,電機電子工程師學會)申請所謂的 OUI(Organizationally unique identifier,組織唯一識別碼),是一個 24 bits 的數字,通常用 16 進位表示成例如 AB:C1:23
的形式。
而一個完整的 MAC 地址則包含組織特別申請的 OUI 和組織可以自己訂的後面 24 bits,總共 48 bits,寫成 16 進位就會是 12 個數字如 AA:BB:CC:11:22:33
。
由於每個組織有自己獨有的 OUI,後面的 24 bits 也要訂成不重複的,也因此世界上所有的網路卡都有自己獨一無二的 MAC 地址。
所謂的 MAC 全名為 Media Access Control Address(媒體存取控制),是一個 Layer 2 的協定。名稱當中的 Media 媒體其實指的就是 Layer 2 的一些物理媒體,如 Ethernet cable、Wi-Fi 或是光纖等等,讓資料在這些媒體上傳輸的協定便稱作 MAC。
既然是控制 Layer 2 的資料傳輸,MAC 地址就是要讓大家能夠在 Ethernet、Wi-Fi 等 Layer 2 的媒體上找到目標而創造出來的。
只要設備與設備處於同一個區域網路中,就像是同一個村莊裡的村民們大多互相知道對方的姓名以及住的位置,很輕易地就能找到對方。設備中基本上都會存著一張表來記著相鄰設備的 MAC,尤其是 L2 Switch,他會記著每個 Port 連接設備的 MAC 地址,來幫助轉送封包。
然而,如果我想傳送資料的目的地是一個 IP 位置怎麼辦?這時候就需要 ARP 這個協定了。
ARP 全名為 Address Resolution Protocol,也就是位址解析協定。主要功能就如其名,會將給定的 IP Address 轉換成 MAC Address。
這是因為當一個設備要在區域網路之中傳輸資料時,就會需要對方的 MAC 地址。這不但比使用 IP 位置來的更有效率(少了一層的封包),而且 IP 位置的變動性比較高,例如 DHCP 租約到期等等可能比較容易造成找不到目標的情形。
而 ARP 的使用時間點,其實在區域網路內的裝置被新增進來時就會透過 ARP 來廣播,將鄰居們的 MAC 地址問一遍了。藉此來建立出一張名為 ARP Cache 的表格,裡面包含鄰居們的 IP 位置對應 MAC 地址的表格。
接著,當此設備想要傳送訊息給某個 IP 位置的裝置時,就可以直接查表。
*透過 ARP Cache Table,找到對應的 MAC 地址
例如裝置 A 想傳送訊息給位於區網內 192.168.1.20 的 B,查表後發現其 MAC Address 為 BB:BB:BB:22:22:22,便能透過 Layer 2 的 Ethernet 將訊息傳送給 B。