ARP協議及其工作原理
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地址來進行資料傳輸呢?