TCP IP協議 ARP詳解

2022-01-28 14:58:10 字數 4481 閱讀 7506

本文主要講述了arp的作用、arp分組格式、arp快取記憶體、免費arp和**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應答之後,將應答之中的對快取在本地arp快取記憶體表中,然後完成tcp syn的ip封裝,呼叫網路介面send函式(引數為ip packet和目的mac))將資料提交給網路介面,網路介面完成ethernet header + ip + crc的封裝,並傳送出去;。

當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的封裝,並傳送出去。

osi模型有七層,tcp在第4層傳輸層,ip在第3層網路層,而arp在第2層資料鏈路層。高層對低層是有強依賴的,所以tcp的建立前要進行arp的請求和應答。

arp快取記憶體表在ip層使用。如果每次建立tcp連線都傳送arp請求,會降低效率,因此在主機、交換機、路由器上都會有arp快取表。建立tcp連線時先查詢arp快取表,如果有效,直接讀取arp表項的內容進行第二層資料報的傳送;只有表失效時才進行arp請求和應答進行mac位址的獲取,以建立tcp連線。

(1)tcp/ip的32bit ip位址。僅知道主機的ip位址不能讓核心傳送資料幀給主機。

(2)網路介面的硬體位址,它是乙個48bit的值,用來標識不同的乙太網或令牌環網路介面。在硬體層次上,進行資料交換必須有正確的介面位址,核心必須知道目的端的硬體位址才能傳送資料。

簡言之,就是在乙太網中,一台主機要把資料幀傳送到同一區域網上的另一台主機時,

裝置驅動程式必須知道乙太網位址才能傳送資料。而我們只知道ip位址,這時就需要採用arp協議將ip位址對映為乙太網位址。

要注意一點,一般認為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。

定義每乙個乙太網或令牌環網路介面卡都有自己單獨的表。

當位址解析協議被詢問乙個已知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指主機傳送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欺騙的攻擊。

定義**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進行位址解析的網路工作。

TCP IP協議 ARP協議

arp協議 以下就預設在乙太網型別的網路。這個協議的作用是通過ip位址 32bit 找到硬體位址 48bit 順便提一下 在乙個區域網裡,大家常見的裝置交換機,交換機上的主機在互相通訊時,實際用的就是硬體 mac 位址,它並不管誰的ip。因此說交換機是鏈路層上的裝置,而不是ip層上的裝置。舉乙個ft...

TCP IP詳解之 ARP協議 和 RARP協議

arp功能 從邏輯internet位址 ip位址 到對應的物理硬體位址 乙太網位址 之間的轉換 arp工作原理 1 首先每個主機都會在自己的arp緩衝區中建立乙個arp列表,以表示ip和mac間的對應關係 2 當源主機要發資料時,先檢查arp列表中是否有對應ip位址的目的主機的mac位址。若有則直接...

TCP IP詳解之IP協議ARP協議和RARP協議

tcp ip 詳解之ip 協議arp 協議和rarp協議 把這三個協議放到一起學習是因為這三個協議處於同一層,arp協議用來找到目標主機的 ethernet 網絡卡mac 位址,ip 則承載要傳送的訊息。資料鏈路層可以從 arp得到資料的傳送資訊,而從 ip得到要傳輸的資料資訊。1.ip協議 ip協...