網絡技術基礎知識一之ARP協議

  1  ARP協議概述
  
  ARP 協議和ICMP 協議是經常使用的TCP/IP底層協議。在對網絡故障進行診斷的時候,它們也是最經常使用的協議。
  
  ARP(Address Resolution Protocol,地址解析協議)是一個位於TCP/IP協議棧中的低層協議,負責將某個IP地址解析成對應的MAC地址。
  
   2 ARP工做原理
  
   2.1 ARP工做過程
  
  當一個基於TCP/IP的應用程序須要從一臺主機發送數據給另外一臺主機時,它把信息分割並封裝成包,附上目的主機的IP地址。而後,尋找IP地址到實際MAC地址的映射,這須要發送ARP廣播消息。當ARP找到了目的主機MAC地址後,就能夠造成待發送幀的完整以太網幀頭。最後,協議棧將IP包封裝到以太網幀中進行傳送。
  
  如圖1所示,描述了ARP廣播過程。
  
 
  圖1  ARP廣播

  
  在圖1中,當主機A要和主機B通訊(如主機A Ping主機B)時。主機A會先檢查其ARP緩存內是否有主機B的MAC地址。若是沒有,主機A會發送一個ARP請求廣播包,此包內包含着其欲與之通訊的主機的IP地址,也就是主機B的IP地址。當主機B收到此廣播後,會將本身的MAC地址利用ARP響應包傳給主機A,並更新本身的ARP緩存,也就是同時將主機A的IP地址/MAC地址對保存起來,以供後面使用。主機A在獲得主機B的MAC地址後,就能夠與主機B通訊了。同時,主機A也將主機B的IP地址/MAC地址對保存在本身的ARP緩存內。
  
   2.2 ARP報文格式
  
  ARP報文被封裝在以太網幀頭部中傳輸,如圖2所示,是ARP請求協議報文頭部格式。
  
 
  圖2  ARP請求協議報文頭部格式

  
  圖2中×××的部分是以太網(這裏是Ethernet II類型)的幀頭部。其中,第一個字段是廣播類型的MAC地址:0XFF-FF-FF-FF-FF-FF,其目標是網絡上的全部主機。第二個字段是源MAC地址,即請求地址解析的主機MAC地址。第三個字段是協議類型,這裏用0X0806表明封裝的上層協議是ARP協議。
  
  接下來是ARP協議報文部分。其中各個字段的含義以下:
  
  硬件類型:代表ARP實如今何種類型的網絡上。
  
  協議類型:表明解析協議(上層協議)。這裏,通常是0800,即IP。
  
  硬件地址長度:MAC地址長度,此處爲6個字節。
  
  協議地址長度:IP地址長度,此處爲4個字節。
  
  操做類型:表明ARP數據包類型。0表示ARP請求數據包,1表示ARP應答數據包。
  
  源MAC地址:發送端MAC地址。
  
  源IP地址:表明發送端協議地址(IP地址)。
  
  目標MAC地址:目的端MAC地址(待填充)。
  
  目標IP地址:表明目的端協議地址(IP地址)。
  
  ARP應答協議報文和ARP請求協議報文相似。不一樣的是,此時,以太網幀頭部的目標MAC地址爲發送ARP地址解析請求的主機的MAC地址,而源MAC地址爲被解析的主機的MAC地址。同時,操做類型字段爲1,表示ARP應答數據包,目標MAC地址字段被填充以目標MAC地址。
  
   2.3 ARP緩衝區
  
  爲了節省ARP緩衝區內存,被解析過的ARP條目的壽命都是有限的。若是一段時間內該條目沒有被參考過,則條目被自動刪除。在工做站PC的 Windows環境中,ARP條目的壽命是2分鐘,在大部分 Cisco 交換機中,該值是5分鐘。
  
  在工做站PC的 Windows環境中,可使用命令arp -a查看當前的ARP緩存,如圖3所示。而在 路由器和 交換機中能夠命令show arp完成相同的功能,如圖4所示。
  
 
  圖3  Windows環境下,命令arp -a的輸出
   
  圖4  路由器中show arp命令的輸出

  
  注意:ARP不能經過IP路由器發送廣播,因此不能用來肯定遠程 網絡設備的硬件地址。對於目標主機位於遠程網絡的狀況,IP利用ARP肯定默認網關(路由器)的硬件地址,並將數據包發到默認網關,由路由器按它本身的方式轉發數據包。
  
   3 反向ARP
  
  反向ARP(Reverse ARP,RARP)用於把物理地址(MAC地址)轉換到對應的 IP 地址。例如,在無盤工做站啓動的時候,由於沒法從自身的操做系統得到本身的IP地址配置信息。這時,無盤工做站可發送廣播請求得到本身的IP地址信息,而RARP 服務器則響應IP請求消息-爲無盤工做站分配1個未用的IP地址(經過發送RARP應答包)。
  
  反向ARP(RARP)在很大程度上已被BOOTP、DHCP所替代,後面這兩種協議對RARP的改進是能夠提供除了IP地址外的其它更多的信息,如默認網關、DNS 服務器的IP地址等信息。
  
   4 代理ARP
  
  代理ARP(PROXY ARP)也被稱做混雜ARP(Promiscuous ARP)(RFC 92五、1027)通常被像路由器這樣的設備使用--用來代替處於另外一個網段的主機回答本網段主機的ARP請求。
  
  下面是代理ARP的應用之一,如圖5所示,主機PC1(192.168.20.66/24)須要向主機PC2(192.168.20.20/24)發送報文,由於主機PC1不知道子網的存在且和目標主機PC2在同一主網絡網段,因此主機PC1將發送ARP請求廣播報文請求192.168.20.20的MAC地址。這時,路由器將識別出報文的目標地址屬於另外一個子網(注意,路由器的接口IP地址配置的是28位的掩碼),所以向請求主機回覆本身的硬件地址(0004.dd9e.cca0)。以後,PC1將發往PC2的數據包都發往MAC地址0004.dd9e.cca0(路由器的接口E0/0),由路由器將數據包轉發到目標主機PC2。(接下來路由器將爲PC2作一樣的代理髮送數據包的工做)。這種ARP使得子網化網絡拓撲對於主機來講時透明的(或者能夠說是路由器以一個不真實的PC2的MAC地址欺騙了源主機PC1)。
  
 
  圖5  代理ARP

  
   5 無端ARP
  
  無端(Gratuitous ARP,GARP)ARP也稱爲無爲ARP。主機有時會使用本身的IP地址做爲目標地址發送ARP請求。這種ARP請求稱爲無端ARP,GARP,主要有兩個用途:
  
  (1)檢查重複地址(若是收到ARP響應代表存在重複地址)。
  
  (2)用於通告一個新的數據鏈路標識。當一個設備收到一個arp請求時,發現arp緩衝區中已有發送者的IP地址,則更新此IP地址的MAC地址條目。
  
  如圖6所示,顯示了一臺 Cisco路由器在其加電啓動後、引導過程當中向網絡宣佈本身的一個以太網接口(Ethernet 0)的MAC地址以及IP地址的包。
  
    圖6  無端ARP
     從圖中能夠看出,這個ARP包的類型編碼是2,表明一個ARP應答消息(可是以前並無對此IP的ARP請求消息)。這個ARP包的源硬件地址(MAC地址)是路由器的這個接口的MAC地址,目標硬件地址(MAC地址)使用的是廣播地址(FF-FF-FF-FF-FF-FF);而源和目標協議地址(IP地址)都是此接口自身的IP地址。此ARP包用於設備(路由器)向網絡宣告自身的IP地址和MAC地址映射,也用於檢查是否有重複(衝突)的IP地址。
相關文章
相關標籤/搜索