同網段不同網段主機間通訊原理
1、同網段主機間通訊
主機A與主機B通訊,這時主機A肯定首先要封裝這些需要發給主機B的資料包,那麼對於主機A來說,自己的IP地址和MAC自己肯定能夠輕易得到,對於主機B的IP地址這時主機A也應該知道,要不然它就不清楚自己將要和誰通訊,當有了自己的IP地址,MAC地址以及主機B的IP地址後,主機A在資料包中可以正確地寫上源IP地址,目標IP地址,接下來的工作就是寫入自己的MAC地址(即源MAC),最後還必須正確寫入目標主機B的MAC地址,可這時主機A才發現自己根本沒有目標主機B的MAC地址,那該怎麼辦呢?這時主機A就通過比較上面已經封裝好的源IP和目標IP,通過子網掩碼計算一下,發現源IP和目標IP恰好在同一個IP網路內,那麼它想要得到目標主機B的MAC地址就有辦法了,首先主機A就向本網段發過一個ARP請求,這個ARP請求包中包括主機A的源IP地址,源MAC地址,目標主機B的IP地址,而目標MAC地址為廣播MAC地址(全部為F),因為我們要找的就是目標MAC,所以這裡用廣播MAC地址,又因為是乙太網,所以整個區域網的所有主機都能收到這個請求MAC地址的資料包,當然主機B也能收到,因此在主機B收到此ARP請求後,立即構建一個包括自己的MAC地址的ARP迴應包,迴應給主機A,當主機A收到這個ARP迴應後,終於完成了找尋目標MAC的重大任務,從而把目標主機B的MAC地址正確封裝進上面還未封裝結束的正準備發給主機B的資料包,在這時,源IP和源MAC以及目標IP和目標MAC都已正確存在於資料包中,那麼這裡主機A向網路內發出這些資料包,因為目標地址在本網段,所以本網段所有主機都能收到這個資料包(這是乙太網的特性),最後只有真正的目標主機B能夠開啟這些資料包,在此,同網段兩臺主機之間的通訊就此圓滿結束!
2、不同網段主機間通訊
在這裡應該注意另外一個問題,因為主機A要尋找的目標主機B在同一網路,所以主機A能夠通過ARP得到目標主機B的MAC地址,從而完成通訊,當主機A在封裝資料包時檢測到目標主機並不在本網段,在這時,資料包不能把目標主機的MAC地址順利封裝進去,那麼就用到另一種方法,那就是閘道器,主機A在準備發向主機B的資料中,封裝好自己的IP地址和MAC地址,同時也封裝好目標主機B的IP地址,資料包封裝到這裡,主機A就利用上面得到同網段目標主機B的方法去請求得到閘道器的MAC地址,同樣也是用ARP去廣播,因為閘道器必須和本機在同一網段,理所當然,閘道器能夠收到這個ARP請求並能正確迴應給主機A,這時主機A在資料包中封裝好自己的IP地址和MAC地址,同時也封裝好目標主機B的IP地址和閘道器的MAC地址,把資料包從網路卡發出去,因為目標MAC是閘道器的,所以閘道器收到這個資料包後,發現目標MAC是自己,而目標IP卻是別人,所以它不可以再往上開啟這個資料包,它要做的工作就是把這些資料包發給下一跳路由器(如果閘道器自身就是一臺路由器的話),如果閘道器是一臺普通PC,那麼它就發給路由器,讓路由器把這些資料包正確傳輸到遠端目標網路,到達遠端網路後,它們的閘道器再將資料包發給資料包中的目標IP,即源主機A苦苦尋找的目標主機B,從而真正結束不同網路之間的通訊,迴應的資料包也是用同樣的方法到達目的地,在這裡,還需要注意的是,當閘道器把資料包發給下一跳路由器時,這個資料包必須由閘道器把目標MAC改成下一跳路由器的MAC地址(通過ARP得到),而源端MAC改成發出埠的MAC地址,否則下一跳路由器收到目標MAC不是自己的資料包,會丟棄不予理睬,下一跳路由器再發給下一跳路由器同樣要把目標MAC地址改為下一跳路由器的MAC地址再發出去!
最後還可以總結出:在網段通訊時,資料包中的地址就是源IP,目標IP,源MAC,目標MAC,根本用不到閘道器,而當檢測到需要把資料包發到遠端網路時,這時,目標MAC就必須改變了,在還沒有出內網時,目標MAC必須寫成閘道器的MAC地址發出去,當閘道器收到時,再把目標MAC地址改成下一跳的MAC地址發出去,同時源MAC地址要始終保持為發出埠的MAC地址(迴應報文可以依靠它路由回去),而源IP及目標IP不曾改變(用於判斷收到資料包的本機IP和資料包IP是否一致,若一致不轉發),就算到達了公網上,目標MAC仍然在不斷改變著,直到最後,這個資料包到達目標IP的網路,最終通訊結束!
下面是個例子:Ping過程詳細解
配置好路由器Route和pc0、pc1的IP地址以及閘道器
這個過程可以具體分為四個階段:
一、pc0到Router階段
5、主機pc0的預設閘道器被配置為172.16.0.1 要能夠傳送這個資料包到預設閘道器,必須要知道路由器的FastEthernet0/0介面(其IP地址被配置為172.16.0.1)的硬體地址,因為只有這樣,資料包才可以被下傳給資料鏈路層並生成資料幀,
二、Router到pc1階段
三、pc1到Router階段
四、Rouetr到pc0階段
33、這個幀然後被傳送到物理層,以一次一位的方式傳送到本地網路;
相關文章
- docker 指定IP地址、與主機同網段IPDocker
- 在不同網段使用 VLAN 通訊 - SVI,單臂路由路由
- Docker預設網段和主機網段衝突解決Docker
- LINUX下不同網段互相ping通Linux
- QT之不同主機之間TCP通訊QTTCP
- SQL Server 不同網段IP通過名稱訪問SQLServer
- Redhat 6.x同一主機兩個網口設定同網段地址ping異常Redhat
- 不同時間段的光色模型模型
- 擬MobusRTU組網通訊可能用到的各階段時間開銷分析
- 網段理解
- 基於同網段的RAC架構VIP修改架構
- 基於不同網段的RAC架構VIP修改架構
- Docker多主機網路通訊詳解Docker
- Linux——新增預設路由(能ping通本網段,但是ping不通其他網段)Linux路由
- 跨網段通訊實戰(支援靜態路由表的家用路由)路由
- 如何設定跨網段共享印表機?
- Homestead 虛擬機器修改網段虛擬機
- 將虛擬機器IP與主機IP設定在同一網段的方法虛擬機
- js根據不同的時間段輸出不同的語句JS
- 圖解通訊原理(乙太網通訊及物理層工作原理)圖解
- LVS-DR VIP和RIP不同網段的配置方法
- Calico 網路通訊原理揭祕
- 網際網路企業安全指南3.2 不同階段的安全建設重點
- 如何讓同一網段客戶端訪問LVS-NAT主機客戶端
- 透過網段隔離器實現NAT轉換與跨網段訪問
- 網路程式設計與通訊原理程式設計
- IP地址網段求解題(轉)
- 11gr2 rac改IP系列之一:修改公網IP為同網段其它IP
- 計算機網路知識總結:有關IP地址、子網掩碼、網路號、主機號、網路地址、主機地址以及ip段/數字的概念及筆試題計算機網路筆試
- 深入探討程式間通訊的重要性:理解不同的通訊機制(下)
- 深入探討程式間通訊的重要性:理解不同的通訊機制(上)
- Linux下如何加入路由,使多個不同網段能相互訪問Linux路由
- bridge網路實現多個單主機進行通訊
- 邦芒寶典:網投簡歷的zui佳時間段UI
- 實現不同程式之間的通訊
- Java網路程式設計UDP通訊原理Java程式設計UDP
- 一段音訊音訊
- 如何在linux下面重新啟動一片網路卡(假設有2片不同網段的網路卡) ?Linux