現(xiàn)在有兩臺電腦,他們同處于一個VLAN,
pcA IP地址:10.1.1.1/8
pcB ip地址:11.1.1.1/8
01?無網(wǎng)關(guān),A ping B
報出的Destination host unreachable
顯然,A機(jī)器發(fā)現(xiàn)對方與自己不是同一網(wǎng)段,試圖尋找網(wǎng)關(guān),但網(wǎng)關(guān)不存在,所以報主機(jī)不可達(dá),B上的Sniffer未抓到任何包,觀察網(wǎng)卡也是只發(fā)不收,顯然數(shù)據(jù)沒有出去。
02?網(wǎng)關(guān)設(shè)成對方IP,A ping B
能正常ping通,為什么能通?
從A計算機(jī)Sniffer上抓到的包可以看出,A在ping對方過程中,A首先進(jìn)行了ARP廣播,它廣播詢問11.1.1.1的MAC是什么。
顯然這個ARP廣播是可以被B收到的(因?yàn)樗麄兺幰粋€VLAN),而11.1.1.1正好就是B的IP地址,理所當(dāng)然B要回應(yīng)這個ARP請求。下圖是A上的抓包情況,A首先進(jìn)行了ARP廣播,然后收到了B的應(yīng)答。
這樣A就有了B的MAC,而B在接到A的ARP廣播時候就學(xué)到A的MAC,所以雙方可以ping通。
03?網(wǎng)關(guān)設(shè)成自己,A ping B
一樣是可以ping的通的,A上抓包如下:
抓到的結(jié)果與第2種情況一樣,A依然是先廣播詢問11.1.1.1的MAC,這個ARP廣播被B接到后,B有義務(wù)應(yīng)答,于是雙方知道對方MAC,所以能PING通。
與第2種情況不同的是,這里可以明確知道ARP中的11.1.1.1指的是ping中所指定的IP地址而不是網(wǎng)關(guān)(此時A網(wǎng)關(guān)是10.1.1.1了)。
那么第2種情況中的11.1.1.1也指的是ping中所指定的IP?我們再來看下面。
ping三個不存在的IP地址
深入了解網(wǎng)絡(luò)通信原理
網(wǎng)關(guān)設(shè)成自己,ping3個不存在的IP:
一個是和自己在同一網(wǎng)段的;
一個是和網(wǎng)關(guān)在同一網(wǎng)段的;
一個是和誰都不在同一網(wǎng)段的。
01?ping和自己同一網(wǎng)段的IP
ping返回超時,在B上抓包結(jié)果如下:
可以看出A發(fā)出了詢問10.1.1.2的ARP廣播而不是詢問網(wǎng)關(guān)(10.1.1.1)的廣播,由于這個IP不存在,所以沒有機(jī)器做出回應(yīng)。
02?ping和網(wǎng)關(guān)同一網(wǎng)段的IP
超時。B上接到的是A發(fā)出的關(guān)于11.1.1.2的ARP廣播,由于不存在11.1.1.2這個地址,所以沒有機(jī)器回應(yīng)。
03?ping和誰都不在一個網(wǎng)段的IP
超時。B上接到是A發(fā)出的關(guān)于100.1.1.1的ARP廣播,由于不存在100.1.1.1這個地址,所以沒有機(jī)器回應(yīng)。
從上面的3個實(shí)驗(yàn)來看,當(dāng)網(wǎng)關(guān)設(shè)置成自己的時候,不管ping的地址是什么,計算機(jī)發(fā)出的ARP廣播都是直接詢問ping中所指定IP對應(yīng)的MAC,沒有詢問網(wǎng)關(guān)的MAC,這符合上文的描述。
其實(shí)計算機(jī)在廣播詢問ping命令指定的IP之前還是會先問網(wǎng)關(guān)的MAC的,只是這里由于網(wǎng)關(guān)是自己所以這一步就被跳過了。
那到底是不是這樣的?我們再驗(yàn)證下。
AI計算機(jī)網(wǎng)關(guān)設(shè)置中B的IP
B的網(wǎng)關(guān)設(shè)置中不存在的IP地址
A計算機(jī)網(wǎng)關(guān)設(shè)成B的IP地址,但B的網(wǎng)關(guān)設(shè)置成一個不存在的IP(且與A/B都不在同一網(wǎng)絡(luò)),ping三種情況。
01?ping與網(wǎng)關(guān)同一網(wǎng)段IP
在A上抓包,可以看到A首先發(fā)出了關(guān)于網(wǎng)關(guān)11.1.1.1的ARP廣播請求(對應(yīng)B接到這個廣播請求),B對這個11.1.1.1進(jìn)行了ARP應(yīng)答,但這個IP是不存在的所以ping結(jié)果超時。
02?ping與誰都不在同一網(wǎng)段
超時。結(jié)果類似5.2結(jié)果,A發(fā)出了關(guān)于網(wǎng)關(guān)11.1.1.1的請求,B做了應(yīng)答。但ping是超時的。
03?ping計算機(jī)B的地址
結(jié)果超時,為什么這個也不通呢?按說按照上面的測試,AB計算機(jī)都能獲得對方MAC,以太網(wǎng)下,有MAC應(yīng)該就有通信的可能,可這個時候卻不通。
查看Sniffer抓到的包可以發(fā)現(xiàn):
A發(fā)出了關(guān)于11.1.1.1的ARP廣播請求,B對11.1.1.1做出應(yīng)答,但是下面接到了多個B發(fā)來的關(guān)于100.1.1.1的ARP廣播請求,且100.1.1.1的請求沒有得到B的應(yīng)答,看來B是一直在試圖查詢B的網(wǎng)關(guān)(100.1.1.1)所對應(yīng)的MAC,在網(wǎng)關(guān)的MAC沒有獲得應(yīng)答之前,B不會對ping產(chǎn)生回應(yīng)。
從上面的所有實(shí)驗(yàn)看出,計算機(jī)在與非本網(wǎng)段的地址通信時,計算機(jī)首先查找網(wǎng)關(guān)的MAC,如果網(wǎng)關(guān)MAC得不到回應(yīng),是不會對ping作出響應(yīng)的;
因此,實(shí)例中1和2的情況是屬于特殊情況,正好利用了網(wǎng)關(guān)與主機(jī)IP相同,騙過了計算機(jī)。如果AB的網(wǎng)關(guān)都設(shè)置的與AB ip毫不相干的話,相互肯定不通。
編輯:黃飛
?
評論
查看更多