仔細分析ARP經典
今天複習TCP/IP路由技術卷一,再次看到代理ARP那提到的那個透明子網問題,聯想到那個經典的網關問題,於是決定仔細分析和整理一下各種情況到該怎麼去理解.
環境:一台中文XP,一台英文XP,雙機用交叉線直連.起Sniffer抓包觀察.
A:IP 10.1.1.1/8
B:IP 11.1.1.1/8
From:http://www.mycisco.cn
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, interface Ethernet0.實驗沒有成功.