仔細分析ARP經典

2021-04-21 16:32:47 字數 2679 閱讀 7916

仔細分析arp經典

今天覆習tcp/ip路由技術卷一,再次看到**arp那提到的那個透明子網問題,聯想到那個經典的閘道器問題,於是決定仔細分析和整理一下各種情況到該怎麼去理解.

環境:一台中文xp,一台英文xp,雙機用交叉線直連.起sniffer抓包觀察.

1.無閘道器,a ping b,報destination host unreachable.顯然,a機器發現對方與自己不是同一網段,試圖尋找閘道器,但閘道器不存在,所以報主機不可達,b上的sniffer未抓到任何包, 觀察網絡卡也是只發不收.顯然資料沒有出去,也沒有發生卷一上所說的arp廣播過程.

2.閘道器設成對方ip,能正常ping通.為什麼能通?從a計算機sniffer上抓到的包可以看出,a在ping對方過程中,a首先進行了arp廣播,它廣播詢問11.1.1.1的mac是什麼!但這裡有個問題,這個11.1.1.1到底指的是ping中指定的11.1.1.1還是閘道器中的11.1.1.1呢?先不管它,一會實驗就明白了.反正此時的結果是a問11.1.1.1的mac,顯然這個arp廣播是可以被b收到的(為什麼就不用說了吧),而11.1.1.1正好就是b的ip位址,理所當然b要回應這個arp請求.下圖是a上的sniffer,a首先進行了arp廣播,然後收到了b的應答.

這樣a就有了b的mac,而b在接到a的arp廣播時候就學到a的mac,所以雙方可以ping通.

3.閘道器設成自己,a ping 對方一樣是通的,a上抓包如下:

(抓到的結果與第2種情況一樣,所以借用第2種情況的圖),a依然是先廣播詢問11.1.1.1的mac,這個arp廣播被 b接到後,b有義務應答,於是雙方知道對方mac,所以能ping通.與第2種情況不同的是,這裡可以明確知道arp中的11.1.1.1指的是ping 中所指定的ip位址而不是閘道器(此時a閘道器是10.1.1.1了),那麼第2種情況中的11.1.1.1也指的是ping中所指定的ip ?做個實驗4看看!

4.閘道器設成自己,ping 3個不存在的ip,乙個是和自己在同一網段的,乙個是和閘道器在同一網段的,乙個是和誰都不在同一網段的:

4.1:ping和自己同一網段的ip,ping返回超時,在b上抓包結果如下:

可以看出,a發出了詢問10.1.1.2的arp廣播而不是詢問閘道器(10.1.1.1)的廣播,由於這個ip不存在,所以沒有機器做出回應.

4.2:ping和閘道器同一網段的ip,超時,b上接到的是a發出的關於11.1.1.2的arp廣播,由於不存在11.1.1.2這個位址,所以沒有機器回應.圖略.

4.3:ping和誰都不在乙個網段的ip,超時,b上接到是a發出的關於100.1.1.1的arp廣播,由於不存在100.1.1.1這個位址,所以沒有機器回應.圖略.

從上面的3個付實驗來看,當閘道器設定成自己的時候,不管ping的位址是什麼,計算機發出的arp廣播都是直接詢問ping中所指定ip對應的mac,沒有詢問閘道器的mac,這符合卷一上的描述,其實計算機在廣播詢問ping命令指定的ip之前還是會先問閘道器的mac的,只是這裡由於閘道器是自己所以這一步就被跳過了,到底是不是這樣,繼續做下面的實驗來測試.

5.a計算機閘道器設成b的ip位址,但b的閘道器設定成乙個不存在的ip(且與a/b都不在同一網路),ping實驗4中的三種情況,

5.1:ping與自己同一網段ip,抓包可以看到b上接到詢問10.1.1.2的arp廣播,但10.1.1.2是不存在的ip,所以沒有得到回應.

5.2:ping與閘道器同一網段ip,在a上抓包,可以看到a首先發出了關於閘道器11.1.1.1的arp廣播請求(對應b接到這個廣播請求,圖略),b對這個11.1.1.1進行了arp應答.但這個ip是不存在的所以ping結果超時.

5.3:ping與誰都不在同一網段,超時,結果類似5.2結果,a發出了關於閘道器11.1.1.1的請求,b做了應答.但ping是超時的.

5.4:ping計算機b的位址,結果超時,為什麼這個也不通呢?按說按照上面的測試,ab計算機都能獲得對方mac,乙太網下,有mac應該就有通訊的可能,可這個時候卻不通,檢視sniffer抓到的包可以發現:

a發出了關於11.1.1.1的arp廣播請求,b對11.1.1.1做出應答,但是下面接到了多個b發來的關於100.1.1.1的arp廣播請求,且100.1.1.1的回顯請求沒有得到b的應答.看來b是一直在試圖查詢b的閘道器(100.1.1.1)所對應的mac,在閘道器的mac沒有獲得應答之前,b不會對ping產生回應.

從上面的所有實驗看出,計算機在與非本網段的位址通訊時,計算機首先查詢閘道器的mac,如果閘道器mac得不到回應,是不會對ping作出響應的.因 此,實現1和2的情況是屬於特殊情況,正好利用了閘道器與主機ip相同,騙過了計算機.如果ab的閘道器都設定的與abip毫不相干的話,相互肯定不通.

在兩台主機之間接上交換機,效果一樣.

對於卷一上提到的,路由器可以通過**arp實現閘道器與主機不在同一網段通訊,在2514/12.3ios上測試不成功,路由器確實可以接到對閘道器的arp廣播,但是路由器會過濾

*mar  1 00:24:45.063: ip arp req filtered src 21.1.1.2 0016.d30d.1906, dst 10.0.4.5 0000.0000.0000 wrong cable, inte***ce ethernet0.實驗沒有成功.

仔細分析ARP經典問題

今天覆習tcp ip路由技術卷一,再次看到 arp那提到的那個透明子網問題,聯想到那個經典的閘道器問題,於是決定仔細分析和整理一下各種情況到該怎麼去理解.環境 一台中文xp,一台英文xp,雙機用交叉線直連.起sniffer抓包觀察.1.無閘道器,a ping b,報destination host ...

小公尺OJ 燈 仔細分析找規律

乙個屋子有 n nn 個開關控制著 n nn 盞燈,但奇怪的是,每個開關對應的不是一盞燈,而是 n 1 n 1n 1 盞燈,每次按下這個開關,其對應的 n 1 n 1n 1 盞燈就會由亮變滅,或者由滅變亮。保證不會有兩個開關控制同樣的 n 1 n 1n 1 盞燈。現在劉同學想把燈全部開好,但是這些燈...

const詳細分析

最近在分析 linux 驅動的過程過程中遇到一些關於 const 的使用,現在在這裡詳細剖析一下 一,const int p 首先分析一下幾個概念 1 p 是乙個指標變數,因而它也是乙個變數,所謂變數就有變數的位址和變數的值,而這裡 p變數的值就是乙個位址,該位址下存放的是乙個整數,p的值等於這個整...