ARP地址解析協議(IP地址--->MAC地址)
地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。主機與主機之間的通信在物理上實質是網卡與網卡之間的通信,而網卡只認識MAC地址,所以要想實現主機與主機之間的通信,需要知道對方IP地址所對應的MAC地址,完成這一過程的協議就是ARP協議。在具體的網絡傳輸過程中,使用地址解析協議,可根據網絡層IP數據包包頭中的IP地址信息解析出目標硬件地址(MAC地址)信息,以保證通信的順利進行。
ARP工作原理
每台主機或路由器都有一個ARP緩存表,用來保存IP地址與MAC地址的對應關系。
以主機A(192.168.1.5)向主機B(192.168.1.1)發送數據為例。當發送數據時,主機A會在自己的ARP緩存表中尋找是否有目標IP地址。如果找到了,也就知道了目標MAC地址,直接把目標MAC地址寫入幀里面發送就可以了;如果在ARP緩存表中沒有找到目標IP地址,主機A就會在網絡上發送一個廣播arp request,請求包中包含了A主機的ip地址和mac地址。網絡上其他主機並不響應ARP詢問,直接丟棄,只有主機B接收到這個幀時,才以單播方式向主機A做出回應arp reply,並帶上自己的ip和mac地址,而B主機收到A的請求包時也會將A主機的IP與MAC對應關系保存在自己的緩存區。A收到B的回應包后便可得知B的MAC地址,將其存入ARP緩存。此后A再向B發送數據時,就可以直接從緩存表中查找B的地址了,然后直接把數據發送給B。由於B在接收A的請求時也保存了A的地址信息,因此B要向A發送數據也可以直接從緩存表中查找。
ARP緩存表設置了生存時間TTL,在一段時間內(一般15到20分鍾,跟操作系統有關)如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度。
ARP封裝
可以對ARP報文有個直觀的認識,深入的話可以結合WireShark抓包學習。
廣播請求:
回應:
補充一個以太網幀封裝:
再補充一個ARP協議在TCP/IP協議中的位置:
arp命令
可通過如下命令查看高速緩存中的所有項目:
arp -a
其他選項:
-a 顯示所有接口的當前ARP緩存表;
-v 顯示詳細信息;
-n 以數字地址形式顯示;
RARP協議(MAC地址--->IP地址)
反向地址轉換協議,RARP(Reverse Address Resolution Protocol),就是將局域網中某個主機的物理地址轉換為IP地址。
MAC地址
MAC(Medium/Media Access Control)地址,用來表示互聯網上每一個站點的標識符,采用十六進制數表示,共六個字節(48位)。其中,前三個字節是由IEEE的注冊管理機構RA負責給不同廠家分配的代碼(高位24位),也稱為“編制上唯一的標識符”(Organizationally Unique Identifier),后三個字節(低位24位)由各廠家自行指派給生產的適配器接口,稱為擴展標識符(唯一性)。一個地址塊可以生成224個不同的地址。MAC地址實際上就是適配器地址或適配器標識符EUI-48。
關注微信公眾號,每天進步一點點!