4.ARP:地址解析協議

介紹

image_1chlh8no01e56g1416i4eaailb9.png-30.9kB

內核知道IP也沒法將數據傳送到目的地址,必須知道MAC地址才能傳送,因此須要ARP將IP解析爲MAC地址緩存

請求流程

image_1chlipvna1lsq4d26ndp5fqo7m.png-99.6kB

  1. DNS將主機名解析爲IP地址
  2. 用IP地址創建鏈接
  3. 用IP地址發送IP數據包
  4. 若是目的主機在本地網絡,那麼IP數據報能夠直接發送過去;若是目的主機在遠程網絡,那麼IP數據報先通過路由到達本地網絡的下一站路由器,讓它轉發
  5. ARP用於將IP地址轉換爲MAC地址
  6. 廣播ARP請求到該以太網全部主機
  7. 目的主機ARP層收到廣播請求,識別出IP地址與本身相同,則回答ARP應答,包含IP地址與MAC地址
  8. 收到ARP應答,就能夠傳送IP數據報
  9. 將IP數據報發送到目的主機

ARP高速緩存

爲了保證ARP高效運行,每一個主機都有ARP高速緩存,存放最近IP地址到MAC地址的映射記錄,通常生存時間爲20min網絡

image_1chljt4nj179q1k2abbrph81odi13.png-20.2kB

ARP分組格式

ARP請求和應答採用相同的分組格式(下圖數字單位爲字節)代理

image_1chlp22e068e199vgfl1i991vhg1g.png-79kB

  • 以太網目的地址全爲1表明廣播地址
  • 幀類型:後面的數據類型,0x0806表明ARP請求或應答
  • 硬件類型:硬件地址的類型,值爲1表明以太網MAC地址
  • 協議類型:硬件地址映射的協議地址類型,值爲0x0800表明IP地址
  • 硬件地址長度:值爲6表明MAC地址長度爲6字節
  • 協議地址長度:值爲4表明IP地址長度爲4字節
  • op:四個操做類型,值1表明ARP請求,值2表明ARP應答,值3表明RARP請求,值4表明RARP應答

一個ARP請求,會將首部的以太網目的地址填爲全1,表示發起一次廣播,而後會將請求體中的目的以太網地址填爲全0,預留出來讓接收端填充blog

一個ARP相應,會將預留的目的以太網地址填爲全0,而後將首部和請求體中的以太網目的地址和以太網源地址進行交換,而且將op改成2,發送回去ip

  • ARP請求是一次廣播,ARP響應則是向請求源發起的一次單播

ARP示例

一次鏈接成功的ARP請求、響應內存

image_1chp94h8318vb7841f6gju9sif1t.png-100.2kB

一次鏈接超時的ARP請求、響應路由

image_1chp95evp11pqiq518a74d51nq42a.png-32.3kB

沒有任何ARP之外的報文,而且超時時間指數退避配置

ARP代理

一個網絡向另外一個網絡發送ARP請求的時候,中間路由器代理響應ARP請求,就叫ARP代理路由器

經常使用場景是,不少網關設備支持將內網地址映射爲公網地址,達到影藏內部網絡的做用,這就利用了ARP代理:原本網關的實際IP爲內網IP,可是須要提供公網訪問IP,這時就須要開啓ARP代理功能,接收目的IP爲外網IP的ARP請求,並響應內網IP的MAC地址,以便將外網流量轉發到內網硬件

免費ARP

免費ARP就是主機發送ARP廣播請求查找本身的IP地址。一般在系統在配置網絡的時候執行

兩個經常使用場景:

  1. 查找網絡內是否存在IP衝突的主機。若是發送免費ARP,而且獲得響應,說明網絡內存在相同IP的主機
  2. 通知網絡其餘主機,本機的IP和MAC地址映射有所改變。若是主機更換網卡,MAC地址會改變,IP可能仍是維持原狀,這時廣播一個免費ARP,能夠通知其餘主機本身的IP和MAC映射改變了,並讓他們的ARP高速緩存及時更新

arp命令

-a顯示ARP高速緩存全部內容,-d刪除其中一項,-s增長一項內容(默認永久),pus和-s可讓系統開啓ARP代理

相關文章
相關標籤/搜索