- 黑客攻防從入門到精通(實戰秘笈版)
- 九天科技
- 1285字
- 2019-10-14 11:49:29
1.2.5 ARP協議

ARP全稱Address Resolution Protocol,中文譯為地址解析協議,它工作在數據鏈路層,在本層和硬件接口聯系,同時對上層提供服務。ARP協議用于將網絡中的IP地址解析為目的硬件地址(MAC地址),以保證通信的順利進行。在硬件層次上進行的數據幀交換必須有正確的接口地址(即硬件地址),但TCP/IP只能識別32bit的IP地址,知道主機的IP地址并不能讓內核(如以太網驅動程序)發送一幀數據給主機,內核必須知道目的端的硬件地址才能發送數據,ARP的功能是在32bit的IP地址和采用不同網絡技術的硬件地址之間提供動態映射。從邏輯Internet地址到對應的物理硬件地址需要進行翻譯,這就是ARP的功能。
ARP的工作原理如下:
首先,每臺主機都會在自己的ARP高速緩沖區(ARP Cache)中建立一個ARP列表,以表示IP地址和MAC地址的對應關系。
當源主機需要將一個數據包發送到目的主機時,會首先檢查ARP列表中是否存在該IP地址對應的MAC地址。如果有,直接使用此MAC地址;如果沒有,主機先將目的主機的IP地址與自己的子網掩碼進行“與”操作,以判定目的主機與自己是否位于同一網段內。假如目的主機與自己在同一網段內,向本地網段發起一個ARP請求的廣播包,查詢此目的主機對應的MAC地址;如果目的主機在一個遠程網絡上,會通過路由器等路由設備轉發此ARP請求到遠程網絡中廣播。此ARP請求數據包中包括源主機的IP地址、硬件地址、以及目的主機的IP地址。
源主機和目的主機在一個網絡內的情況下:網絡中所有的主機收到ARP請求后,會檢查數據包中的目的主機IP和自己的IP地址是否一致。如果不相同就不回應,但是該主機仍然會檢查自己的ARP高速緩存,如果此請求的源IP地址已經在高速緩存中,可以用ARP請求幀中的發送端硬件地址對高速緩存中相應的內容進行更新;如果相同,該主機首先將發送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經存在該IP的信息,則將其覆蓋,然后給源主機發送一個ARP響應數據包,告訴它需要查找的MAC地址。
如果源主機和目的主機不在同一個網絡內,ARP請求將由路由器轉發至其他網絡。如果能找到目的主機,將路由器的MAC地址當作目的主機的網絡地址發給源主機,以后源主機和目的主機之間的信息交換都要經過此路由器,這個路由器就被稱作ARP代理;如果沒有找到目的主機,在ARP高速緩存中會產生一條不完整的表項記錄下來。
源主機收到這個ARP響應數據包后,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數據的傳輸。
ARP高效運行的關鍵是由于每個主機上都有一個ARP高速緩存。這個高速緩存存放了最近Internet地址到硬件地址之間的映射記錄。高速緩存中每一項都有一個默認的生成時間,起始時間從被創建時開始計算。
在Windows操作系統中,可以在命令提示符窗口中使用ARP命令來查看ARP緩存表,具體操作方法如下:
01 顯示ARP緩存表信息 在命令提示符窗口中輸入命令“arp -a”。按【Enter】鍵,即可顯示本地電腦中的ARP緩存表信息,如下圖所示。

02 捆綁IP地址與MAC地址 還可使用ARP命令將自己的IP地址與MAC地址捆綁起來,以避免局域網中的其他電腦使用自己的IP地址,執行命令“arp/s 192.168.1.10148-5B-39-E9-DE-9E”,前者為IP地址,后者為MAC地址。若無法執行此命令,需要以管理員身份運行命令提示符。要想解除IP地址與MAC地址的綁定,只需執行命令“arp-d 192.168.1.154”,如下圖所示。

- Vue.js設計與實現
- 算法大爆炸:面試通關步步為營
- 看透JavaScript:原理、方法與實踐
- Magento 1.8 Development Cookbook
- JavaScript:Moving to ES2015
- Spring Boot進階:原理、實戰與面試題分析
- 劍指大數據:企業級數據倉庫項目實戰(在線教育版)
- Procedural Content Generation for C++ Game Development
- 代碼閱讀
- 從Excel到Python數據分析:Pandas、xlwings、openpyxl、Matplotlib的交互與應用
- 現代CPU性能分析與優化
- 軟件測試分析與實踐
- Learning D3.js 5 Mapping(Second Edition)
- 計算思維與Python編程
- Slick2D Game Development