1. 程式人生 > >TCP/IP協議——ARP詳解

TCP/IP協議——ARP詳解

不能 ble opc arp攻擊 本質 二層 默認 交換 緩沖

本文主要講述了ARP的作用、ARP分組格式、ARP高速緩存、免費ARP和代理ARP。

1.學習ARP前要了解的內容

建立TCP連接與ARP的關系

應用接受用戶提交的數據,觸發TCP建立連接,TCP的第一個SYN報文通過connect函數到達IP層,IP層通過查詢路由表:

  如果目的IP和自己在同一個網段:

  當IP層的ARP高速緩存表中存在目的IP對應的MAC地址時,則調用網絡接口send函數(參數為IP Packet和目的MAC))將數據提交給網絡接口,網絡接口完成Ethernet Header + IP + CRC的封裝,並發送出去;

  當IP層的ARP高速緩存表中不存在目的IP對應的MAC地址時,則IP層將TCP的SYN緩存下來,發送ARP廣播請求目的IP的MAC,收到ARP應答之後,將應答之中的<IP地址,對應的MAC>對緩存在本地ARP高速緩存表中,然後完成TCP SYN的IP封裝,調用網絡接口send函數(參數為IP Packet和目的MAC))將數據提交給網絡接口,網絡接口完成Ethernet Header + IP + CRC的封裝,並發送出去;。

  如果目的IP地址和自己不在同一個網段,就需要將包發送給默認網關,這需要知道默認網關的MAC地址:

  當IP層的ARP高速緩存表中存在默認網關對應的MAC地址時,則調用網絡接口send函數(參數為IP Packet和默認網關的MAC)將數據提交給網絡接口,網絡接口完成Ethernet Header + IP + CRC

  當IP層的ARP高速緩存表中不存在默認網關對應的MAC地址時,則IP層將TCP的SYN緩存下來,發送ARP廣播請求默認網關的MAC,收到ARP應答之後,將應答之中的<默認網關地址,對應的MAC>對緩存在本地ARP高速緩存表中,然後完成TCP SYN的IP封裝,調用網絡接口send函數(參數為IP Packet和默認網關的MAC)將數據提交給網絡接口,網絡接口完成Ethernet Header + IP + CRC的封裝,並發送出去。

ARP的位置

  OSI模型有七層,TCP在第4層傳輸層,IP在第3層網絡層,而ARP在第2層數據鏈路層。高層對低層是有強依賴的,所以TCP的建立前要進行ARP的請求和應答。

  ARP高速緩存表在IP層使用。如果每次建立TCP連接都發送ARP請求,會降低效率,因此在主機、交換機、路由器上都會有ARP緩存表。建立TCP連接時先查詢ARP緩存表,如果有效,直接讀取ARP表項的內容進行第二層數據包的發送;只有表失效時才進行ARP請求和應答進行MAC地址的獲取,以建立TCP連接。

ARP的作用

  要了解ARP的作用,首先要分清兩個“地址”:

  (1)TCP/IP的32bit IP地址。僅知道主機的IP地址不能讓內核發送數據幀給主機。

  (2)網絡接口的硬件地址,它是一個48bit的值,用來標識不同的以太網或令牌環網絡接口。在硬件層次上,進行數據交換必須有正確的接口地址,內核必須知道目的端的硬件地址才能發送數據。

  簡言之,就是在以太網中,一臺主機要把數據幀發送到同一局域網上的另一臺主機時,設備驅動程序必須知道以太網地址才能發送數據。而我們只知道IP地址,這時就需要采用ARP協議將IP地址映射為以太網地址。

  要註意一點,一般認為ARP協議只使適用於局域網。

2.ARP分組格式

  ARP分組的格式如下圖:

技術分享圖片

  先要清楚,一般說以太網地址就是指MAC地址

  字段1是ARP請求的目的以太網地址,全1時代表廣播地址。

  字段2是發送ARP請求的以太網地址。

  字段3以太網幀類型表示的是後面的數據類型,ARP請求和ARP應答這個值為0x0806。

  字段4表示硬件地址的類型,硬件地址不只以太網一種,是以太網類型時此值為1。

  字段5表示要映射的協議地址的類型,要對IPv4地址進行映射,此值為0x0800。

  字段6和7表示硬件地址長度和協議地址長度,MAC地址占6字節,IP地址占4字節。

  字段8是操作類型字段,值為1,表示進行ARP請求;值為2,表示進行ARP應答;值為3,表示進行RARP請求;值為4,表示進行RARP應答。

  字段9是發送端ARP請求或應答的硬件地址,這裏是以太網地址,和字段2相同。

  字段10是發送ARP請求或應答的IP地址。

  字段11和12是目的端的硬件地址和協議地址。

下面是抓取的ARP數據包,可以對照上面的說明進行理解。

圖中紅框圈起來的是一對ARP請求和ARP應答。

技術分享圖片

下面兩張圖分別是ARP請求和相應的ARP應答的分組格式截圖。

  ARP請求分組中,字段11目的MAC地址未知,用全0進行填充。

技術分享圖片

ARP應答分組中,將ARP請求中的源和目的地址進行交換,此外,變化的還有字段8 Opcode。其余字段內容不會發生變化。

技術分享圖片

那麽我們是如何區分ARP請求和ARP應答分組的呢?

  分組中的地址字段和其他相同的字段無法作為區分依據,這時Opcode字段就發揮了作用,根據Opcode的值可以確定是請求還是應答,是ARP還是RARP。

3.ARP高速緩存

定義

  ARP緩存是一個緩沖區,用來儲存IP地址和MAC地址,本質就是<IP地址,MAC地址>的對應表。表中一個條目記錄了網絡上一個主機的IP地址和其對應的MAC地址。

  每一個以太網或令牌環網絡適配器都有自己單獨的表。

  當地址解析協議被詢問一個已知IP地址節點的MAC地址時,先在ARP緩存中查看,若存在,就直接返回與之對應的MAC地址,若不存在,才發送ARP請求向局域網查詢。

ARP緩存表項的生存時間TTL

  ARP緩存包含動態和靜態項目:

  動態項目隨時間推移自動添加和刪除,每個動態ARP緩存項都有都設置了TTL(生存時間),TTL為0時此項目就從表中刪除,Windows下TTL一般不超過10分鐘。

  靜態 ARP 緩存條目是永久性的,可以使用 TCP/IP 工具手動添加和刪除。靜態 ARP 緩存條目用來禁止節點發送對常用的本地IPv4地址(例如路由器和服務器的 IPv4 地址)的ARP請求。

ARP高速緩存的使用

  當主機發送一個ARP請求時,先查看ARP高速緩存表,如果存在對應條目,則直接返回MAC地址,否則向局域網發送ARP請求廣播。

ARP高速緩存的優缺點

  優點:從ARP高速緩存的使用中可以看到,ARP高速緩存可以減小廣播量,進而減小網絡通信量,提高計算機之間的通信效率。

  缺點:造成安全隱患(參考下面免費ARP的作用)。

4.免費ARP

定義

  免費ARP指主機發送ARP查找自己的IP地址,通常發生在系統引導期間進行接口配置時。

  與標準ARP的區別就是免費ARP分組的目的IP地址字段封裝的是自己的IP地址,即向所在網絡請求自己的MAC地址。

作用 

  免費ARP的作用有:
  1) 一個主機可以通過它來確定另一個主機是否設置了相同的 IP地址。

   正常情況下發送免費ARP請求不會收到ARP應答,如果收到了一個ARP應答,則說明網絡中存在與本機相同的IP地址的主機,發生了地址沖突。


  2)更新其他主機高速緩存中舊的硬件地址進行。

   如果發送免費ARP的主機正好改變了硬件地址,如更換了接口卡。

   其他主機接收到這個ARP請求的時候,發現自己的ARP高速緩存表中存在對應的IP地址,但是MAC地址不匹配,那麽就需要利用接收的ARP請求來更新本地的ARP高速緩存表表項。

  3)網關利用免費ARP防止ARP攻擊

  有些網關設備在一定的時間間隔內向網絡主動發送免費ARP報文,讓網絡內的其他主機更新ARP表項中的網關MAC地址信息,以達到防止或緩解ARP攻擊的效果。

  4)利用免費ARP進行ARP攻擊

  ARP協議並不只在發送了ARP請求才接收ARP應答,計算機只要接收到ARP應答數據包,就會使用應答中的IP和MAC地址對本地的ARP緩存進行更新。

  主機可以構造虛假的免費ARP應答,將ARP的源MAC地址設為錯誤的MAC地址,並把這個虛假的免費ARP應答發送到網絡中,那麽所有接收到這個免費ARP應答的主機都會更新本地ARP表項中相應IP地址對應的MAC地址。更新成功後,這些主機的數據報文就會被轉發到錯誤的MAC地址,從而實現了ARP欺騙的攻擊。

5.代理ARP

定義

  代理ARP就是通過使用一個主機(通常為router),來作為指定的設備使用自己的 MAC 地址來對另一設備的ARP請求作出應答。

為什麽需要代理ARP?

  先要了解,路由器的重要功能之一就是把局域網的廣播包限制在該網內,阻止其擴散,否則會造成網絡風暴。

  ARP請求是個廣播包,它詢問的對象如果在同一個局域網內,就會收到應答。但是如果詢問的對象不在同一個局域網該如何處理?路由器就提供的代理ARP為這個問題提供了解決方案。

工作過程

  兩臺主機A和B處於同一網段但不同的廣播段時,主機A發送ARP請求主機B的MAC地址時,因為路由器不轉發廣播包的原因,ARP請求只能到達路由器。如果路由器啟用了代理ARP功能,並知道主機B屬於它連接的網絡,那麽路由器就用自己接口的MAC地址代替主機B的MAC地址來對主機A進行ARP應答。主機A接收ARP應答,但並不知道代理ARP的存在。

代理ARP的優缺點

  優點:代理ARP能在不影響路由表的情況下添加一個新的Router,使子網對該主機變得透明化。一般代理ARP應該使用在主機沒有配置默認網關或沒有任何路由策略的網絡上。

  缺點:從工作工程可以看到,這其實是一種ARP欺騙。而且,通過兩個物理網絡之間的路由器的代理ARP功能其實互相隱藏了物理網絡,這導致無法對網絡拓撲進行網絡概括。此外,代理ARP增加了使用它的那段網絡的ARP流量,主機需要更大的ARP緩存空間,也不會為不使用ARP進行地址解析的網絡工作。

轉載自:https://www.cnblogs.com/songwenlong/p/6103406.html

TCP/IP協議——ARP詳解