ARP 協議 ,即Address Resolution Protocal,地址解析協議. 它是通過主機IP查找對應的mac地址. 這么說不太嚴謹,應該是以目標IP地址為線索, 定位下一個應該接收數據《分包》的網絡設備對應的MAC地址. 如果目標主機不在同一個鏈路上,可以通過ARP查找下一跳路由器的MAC地址. 不過ARP只適用於IPv4,不適用於IPv6 .
mac 地址屬於數據鏈路層. 我們先來看下數據鏈路層.
一 .數據鏈路層
數據鏈路層的協議定義了通過媒介互連的設備之間傳輸的規范. 通信媒介包括雙絞線電纜,同軸電纜,光纖,電波以及紅外線等介質.
實際上,各個設備之間在數據傳輸時,數據鏈路層都是必不可少的. 眾所周知, 計算機以二進制 0,1 來表示信息,然而實際的通信媒介之間處理的是電壓的高低,光的閃滅,以及電波的強弱等信號.
把這些信號與二進制的0,1進行轉換的正是物理層.
數據鏈路層處理的數據也不是單純的0,1序列,該層把它們集合為一個叫做“幀”塊, 然后再進行傳輸.
數據鏈路層也可以被視為網絡傳輸中的最小單位.
二. 數據鏈路相關技術
2.1 MAC地址
MAC地址是用於識別數據鏈路層中互連的節點. MAC地址長48比特. 在使用網卡(NIC)的情況下,MAC地址一般會被燒寫到ROM中. 因此,一個網卡到MAC地址是唯一的.
2.2 PPP定義
指的是Point-to-Point Protocol, 是指點對點,即1對1連接的計算機協議. 相當於位於OSI參考模型的第2層的數據鏈路層,並且它屬於純粹的數據鏈路層,與物理層沒有任何關系.
換句話說, 僅有PPP無法實現通信,還要有物理層的支持. PPPoE(PPP over Ehernet)實現互聯網的接入就是在以太網的數據中加入PPP幀進行傳輸的一種方式.
三. ARP的工作機制
簡單的說, ARP是借助 ARP請求和ARP響應兩種類型的包來確定 MAC地址的.
主機A為了知道主機B的mac地址, 要通過《廣播》發送一個ARP請求包. 這個包中 包含了主機B的IP地址, 還有主機A自己的MAC地址. 同一個鏈路上所有的主機或者路由器都會接收到
主機A的廣播包. 因此ARP的請求包會被這同一個鏈路上的主機和路由器進行解析. 如果ARP請求包中的目標IP地址與自己的IP地址一致,那么這個節點就將自己的MAC地址塞入ARP響應包
返回給主機A.
也就是說,根據ARP可以動態的進行地址解析,無須事先知道MAC地址,只要有IP地址即可. 但是如果每次發送一個IP數據包都要進行一次ARP請求,會造成不必要的網絡流量. 因此
通常的做法是把獲取到的MAC地址緩存一段時間,並與對應的IP做映射關系記憶.
記錄IP地址和MAC地址對應關系的數據庫叫做ARP表, 可以通過在命令行中輸入arp -a 命令獲取該表信息.
每執行一次ARP,之前緩存的對應內容都會被清除. 在清除之前都可以不需要執行ARP就可以獲取到想要的MAC地址. 這樣,在一定程度上也防止了ARP包在網絡上被大量廣播的可能性.
疑問? 知道目標主機IP地址 ,為什么還要知道對方的mac地址來進行數據傳輸呢?
