資料報在不同網段上的傳輸流程

2021-06-25 23:37:32 字數 1434 閱讀 6165

對於資料報在不同網段上傳輸這一問題,lz參考一些資料,覺得用資料報源目標位址狀態的變化能更直觀的表示這一流程的進行,以下lz用乙個例子描述這一過程。

pc1、r1、r2、webserver

pc1 為網路a中的一台主機,webserver為網路b中的web伺服器,路由器r1、r2分別為網路a、b的閘道器,且路由器r1、r2的wan口相連。

pc1 ---> webserver的資料報傳輸流程如下:

1)pc1建立資料報,欲傳送到不同網路中的webserver,由於無法取得webserver的mac位址,於是使用arp協議通過主機pc1所設定的閘道器(即r1的區域網ip)來獲得r1的lan介面的mac位址,並將資料報目標mac位址設為r1的lan介面的mac位址,此時資料報狀態如下:

源ip源mac

目標ip

目標mac

pc1pc1

webserver

r1(lan)

2)r1接受到資料報,將源ip位址通過nat轉換成r1的公網ip,並將源mac位址轉換成r1的wan介面mac位址,然後,查詢路由表,發現需要經過r2才能到達webserver(目標ip),於是將目標mac位址轉換成r2的wan介面mac位址,此時資料報狀態如下:

源ip源mac

目標ip

目標mac

r1(wan)

r1(wan)

webserver

r2(wan)

3)r2接受到資料報,發現webserver(目標ip)就在本網路(b網路)中,於是將源mac位址改為r2的lan介面位址,再使用arp協議通過資料報中的目標ip位址獲得webserver的mac位址,此時資料報狀態如下:

源ip源mac

目標ip

目標mac

r1(wan)

r2(lan)

webserver

webserver

經過以上三步,完成pc1到webserver的通訊。

問題:webserver回傳資料的時候,只知道r1的公網ip,即只能傳送到r1上,卻不知道pc1的子網ip,如何能夠到達pc1上?

答:通過路由器的埠對映功能。在流程2)中,r1將源ip位址轉換成r1的公網ip時,r1會分配乙個未記錄的埠號,同時,r1會把pc1的ip和當前資料報的傳送埠號(就該例子來說是80埠)與r1公網ip和剛才分配的未記錄的埠號之間的對映關係記錄下來。比如,pc1的ip為192.168.1.12,通過80埠發出資料報,r1的公網ip為201.12.12.12,分配的埠號為12,那麼該對映關係為  :

子網(pc1)

公網(r1)

192.168.1.12:80

201.12.12.12:12

當webserver回傳資料到達r1上,就會通過該對映,將資料報傳給子網裡的pc1。

lz水平有限,大家如果有疑問或者覺得**表述有誤,希望一定提出,大家一起討論。

不同網段,在路由器上如何設定閘道器

1 閘道器就是你路由器介面的位址一般會設這個網段開頭或結尾ip,如192.168.0.1或192.168.0.254.2 如果你是乙個路由器的兩個口去分別接兩個交換機乙個交換機乙個網段,那就是給接這個網段的路由器口設定乙個ip位址,這個ip就是你那個網段的閘道器。3 如果你是乙個路由器介面接兩個網段...

在同一網段和不同網段通訊的區別

文章出處 下面的表是在同一網段內,主機a和主機b通訊,主機a資料的封裝,可以和第二個表對比一下,基本上是一樣的,只是第二個的目的ip用的是公網位址,因為私有位址是上不了公網的。源 目的 應用層 data 資料流 傳輸層 埠 1336 139segment 資料分段 網路層 ip 位址 192.168...

資料報在Linux中的流程

1.中斷處理函式中 網絡卡收到一幀 引發中斷 cpu呼叫相應的中斷處理函式 指向此網絡卡驅動中的相應的處理函式 把此packet讀到ram中 呼叫netif rx函式來打上timestamp,並把此skb放入到cpu設定的佇列中 標記軟中斷 cpu raise softirq 中斷完成。2 當軟中斷...