應用接受使用者提交的資料,觸發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連線。
要了解arp的作用,首先要分清兩個「位址」:
(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。
定義arp快取是乙個緩衝區,用來儲存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的作用)。
定義免費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進行位址解析的網路工作。
ARP協議詳解
arp addressresolutionprotocol 位址解析協議用於將計算機的網路位址 ip位址32位 轉化為實體地址 mac位址 48位 rfc826 arp協議是屬於鏈路層的協議,在乙太網中的資料幀從乙個主機到達網內的另一台主機是根據48位的乙太網位址 硬體位址 來確 定介面的,而不是根...
ARP協議詳解
arp addressresolutionprotocol 位址解析協議用於將計算機的網路位址 ip位址32位 轉化為實體地址 mac位址48位 rfc826 arp協議是屬於鏈路層的協議,在乙太網中的資料幀從乙個主機到達網內的另一台主機是根據48位的乙太網位址 硬體位址 來確定介面的,而不是根據3...
ARP協議詳解
arp address resolution protocol 位址解析協議用 於將計算機的網路位址 ip位址32位 轉化為實體地址 mac位址48位 rfc826 arp協議是屬於鏈路層的協議,在乙太網中的資料幀從乙個 主機到達網內的另一台主機是根據48位的乙太網位址 硬體位址 來確定介面的,而不...