相同網絡與不同網絡間的通訊解釋!

轉帖:相同網絡與不同網絡間的通訊解釋!

關於《檢查你是否高手》帖子中講述到的網絡間通訊問題我再詳細解釋一下,希望幫到各位!
主機間的通訊分爲,相同網段間的通訊和不同網段間的通訊。如何識別?首先有A和B兩臺主機。A主機:192.168.1.1 255.0.0.0 B主機:192.168.2.1 255.255.0.0 。
相同網段間通訊指:
1、本機IP地址與本機子網掩碼進行與運算,得出網絡號。
2、目標IP地址與本機子網掩碼進行與運算得出網絡號。
3、觀察兩個網絡號是否相同。
4、對方主機同樣進行1~3的計算
5、若雙方都認爲屬於相同網段,則雙方能通訊。
例如:192.168.1.1與255.0.0.0 得出網絡號:192.0.0.0 ;192.168.2.1與255.0.0.0得出192.0.0.0;對於A主機來說,兩個主機是相同網絡間的通訊。

再來觀察:B主機與自己的子網掩碼與運算:192.168.2.1與255.255.0.0得出192.168.0.0;A主機的IP與B主機的子網掩碼:192.168.1.1與255.255.0.0得出網絡192.168.0.0;所以對於B主機來說兩個主機也是屬於相同網絡間的通訊。

留意觀察:A主機認爲它們的網絡是192.0.0.0,而B主機則認爲它們的網絡是192.168.0.0 這都算相同網絡?沒錯,機器的思維就是這樣。因爲ARP數據報沒有攜帶子網掩碼的信息,只有源目IP地址。所以機器只能以對方的IP來和自己的子網掩碼來與運算得出是否相同網絡間通訊。
又因爲通訊是雙向的,所以兩臺主機都必須“各自”認爲它們屬於相同網段,那麼數據才能往返。倘若把B主機的子網掩碼改爲255.255.255.0;那麼B主機就認爲自己的網段是192.168.2.0 而A主機的網段是192.168.1.0 ;那麼B主機就認爲兩主機不屬於相同網段。這種情況下就必須配置路由器或者網關了。

注意:之前帖子出現的問題在這裏進行解釋!!!!(本人水平有限,之前分析不到位,請見諒,在此感謝huqiliu發現了問題)

兩主機互聯的情況大致可以分爲3種(之前我只說到了“相同網段”和“不同網段”);
仔細分析下有以下三種:
1、兩邊主機都認爲相同網段間通訊
2、兩邊主機都認爲不同網段間通訊
3、一邊主機認爲相同網段間通訊,而另一邊認爲不同網段間通訊。(新增加)

對於情況1:兩臺主機可以通訊是沒有問題的了。

對於情況2:兩臺主機之間就必須要有路由器,路由器有兩種用法,一是進行通常情況的網關作用,二是路由器配置成代理ARP服務器。

對於情況3:認爲不同網段間通訊的主機必須設置對方的IP地址爲網關,並且只有認爲不同網段間通訊的一方PING另一邊才能PING通!這是什麼意思呢?例如A主機:192.168.1.1 255.0.0.0 B主機:192.168.2.1 255.255.255.0 。這時候A主機認爲雙方網絡都是192.0.0.0網,B主機認爲A是192.168.1.0網,B是192.168.2.0網。那麼此時B就必須設置網關爲192.168.1.1 然後B去PING A就能PING通。如果A先去PING B就PING不通。(PING前請先用 arp -d命令清楚ARP緩存,之前我就是忽略了這一步)。
(1)爲什麼A先PING B會不通呢?

如上圖,B在收到A發送的ARP請求報文後,對ARP請求報文進行丟棄處理。丟棄處理也意味着B不會迴應A的ARP請求。所以A和B的ARP緩存都不會有對方的MAC地址。所以通訊無法進行。B爲什麼進行丟棄處理呢,對於此說法網上也是爭論不休,比較符合現實的解釋是因爲當B收到A的ARP請求報文時候,會對兩臺主機A和B是否屬於同一網段進行判斷。如果兩臺主機不是同一網段,則ARP報文會被丟棄。
(2)爲什麼B先PING A就能通呢?

分析過程:B PING A,首先會檢查A和B是否屬於同一個網段,檢查發現不屬於同一個網段。B主機檢查是否有設置網關,發現已經設置網關。B檢查ARP緩存,查看是否有網關的MAC地址,結果發現沒有。B向網關發送ARP請求報文,這裏網關其實就是主機A。當A收到B發送來的ARP報文(上圖中輸入層部分的信息),檢查自己和B是否屬於同一個網段,結果發現網段相同,則ARP報文被順利接收。A從ARP報文中提取B的MAC地址,並放入ARP緩存中,然後A對B發送過來的ARP報文進行應答(上圖中輸出層部分的信息)。B收到A發送回來的ARP應答報文,抽取A的MAC地址信息並存入自己ARP緩存之中。則現在雙方都有對方的MAC地址了。自然能PING通了。
(3)爲什麼B PING完A,A再回來PING B就能通呢?
相信聰明的你已經發現了,當B PING A的時候,A、B雙方就已經擁有對方的MAC地址了。自然能PING通了。
如果要重新進行實驗,就如上文提到的,兩臺主機都使用ARP -d來清理ARP緩存。


原理:IP選路時,優先匹配主機IP地址,然後匹配網絡號地址,最後才用默認路由轉發。


此處轉帖,表述更清晰 兩主機互通信的原貼 http://blog.csdn.net/lichengiggs/article/details/669444



最後最後,大家要用機器的角度來思考問題。機器獲取信息只能依靠數據,例如主機不能獲取到對方的子網掩碼,所以對於主機來說,它並不能獲取到192.168.0.0和192.0.0.0屬於不同網絡間通訊,而只能以自己的掩碼來計算網絡號。
轉:http://www.huawei.com/ecommunity/bbs/10141013.html
發佈了23 篇原創文章 · 獲贊 144 · 訪問量 120萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章