ARP:address resolution protocol 地址解析協議
RARP: reverse address resolution protocol 反向地址解析協議緩存
1. 概要網絡
IP地址僅僅在TCP/IP協議棧中被使用,若是一個數據鏈路層是以太網或者令牌環,則它們有本身的尋址結構(48位)
網絡中可能存在多種網絡層協議同時運行
當以太網數據幀從某個主機發送到局域網中的另外一臺主機,48位的網絡地址決定了接收數據幀的網絡接口,設備驅動程序不會尋找IP數據包中的目標IP地址函數
由圖:
(1)FTP客戶端,調用gethostbyname函數,將主機名稱轉換爲IP地址(32位),在DNS中稱爲轉化函數,此轉換過程須要使用DNS協議或者在小型網絡中,直接查找/etc/hosts靜態文件
(2)FTP客戶端創建TCP鏈接,目標IP地址爲(1)中獲取的IP地址
(3)FTP客戶端發送鏈接請求數據,經過IP協議,發送IP數據包
(4)若是目標主機和源主機在同一個本地網絡中(以太網、令牌環、點到點鏈接),IP數據包能夠直接發送到目標主機;若是目標主機位於遠端網絡中,IP路由獲取下一跳路由地址,將IP數據包發送到下一跳,最終,IP數據包都會發送到本地網絡中
(5)目標主機位於局域網中,須要將邏輯IP地址轉爲物理硬件地址(ARP過程),ARP也用於廣播(多個主機和路由鏈接到一個網絡中)
(6)ARP協議,廣播ARP請求(實際爲一個以太網幀)到網絡中的每一個主機,ARP請求中包含目標主機的IP地址,請求目的是接收請求的每一個主機,判斷本身IP地址是不是以太網幀中包含的目標IP地址,若是是,則返回硬件地址
(7)目標主機的ARP層,接收到廣播,確認發送者請求自身硬件地址,目標主機返回ARP響應,其中包含IP地址和對應的硬件地址
(8)接收ARP響應
(9)發送IP數據包到目標主機spa
2. ARP緩存3d
ARP轉換最有效的方式是在每一個主機上保存轉換緩存,緩存中包含IP地址和硬件地址之間的映射,每一條緩存記錄有效期爲20分鐘(從記錄建立開始計時)
arp -a 查看全部arp緩存記錄代理
以太網地址爲48位,展現成6個16進制數字,中間使用冒號分隔blog
3. ARP包結構接口
以太網頭部開始的兩個字段爲以太網源目地址,若是目的地址所有都是1,表示爲廣播地址,電纜上以太網接口均可以接收到數據幀
frame type字段,值0x0806標識是ARP(請求或者是響應)ip
hard type字段,指定硬件地址類型,值1標識以太網類型地址
prot type字段,指定將要映射的協議地址的類型,IP地址值爲0x0800路由
hard_size, prot_size指定硬件和協議地址佔用的字節數量
(例如:ARP請求或者ARP響應,對於以太網地址和IP地址,hard_size, prot_size = 6, 4)
op字段指定該數據是ARP請求(值爲1),ARP響應(值爲2),RARP請求(值爲3),RARP響應(值爲4)
最後四個字段,分別是發送者硬件地址,發送者協議地址,接收者硬件地址,接收者協議地址,發送者硬件地址在以太網頭部和ARP請求中都有記錄
對於一個ARP請求,除了接收者硬件地址,其餘字段都有值,當系統接收到ARP請求後,將填充硬件地址,而後轉換接收者和發送者,將op字段值變爲2,而後發送ARP響應
4. ARP緩存超時
伯克利實現的ARP緩存,對完整的ARP記錄20分鐘,不完整的ARP記錄3分鐘,多數伯克利實現,當從新使用記錄中ARP時候,超時時間會被從新計時
5. 代理ARP
代理ARP容許路由器在一個網絡中,接收另外一個網絡主機發送的ARP請求
使用代理ARP,ARP請求中的目的主機爲路由器地址,但實際上目標主機是路由器後面的主機,路由器充當了目標主機的代理,做爲數據包的中轉
由上圖:
(1)在子網140.252.1某個主機(例如:gemini)有一個IP數據包,發送到sun主機(主機IP: 140.252.1.29)
(2)gemini判斷網絡ID和子網ID,廣播ARP請求到相同網絡ID、子網ID的以太網中
(3)netb路由器,發現ARP請求中的IP地址屬於其撥號主機之一,響應ARP請求,返回網絡接口(子網140.252.1)的硬件地址
注意:每一個撥號主機不須要使用惟一的IP地址來鏈接到路由器中,全部撥號主機使用140.252.1.183做爲SLIP連接的目標地址
ARP代理,也稱爲 promiscuous ARP or the ARP hackARP代理能夠隱藏兩個物理網絡,在二者之間起到路由做用