嘗試了解 IP 封包流

嘗試了解 IP 封包流

所以我無法理解資料包如何從一台機器傳輸到另一台機器。下面我舉了一個計算機 1 嘗試連接計算機 2 的範例。

Computer 1  
IP: 192.168.1.11  
Subnet: 255.255.255.0  
Default Gateway: 192.168.1.1  
MAC: 00:00:00:00:00:aa

Router 1  
IP: 192.168.1.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:bb  

Router 2  
IP: 192.168.2.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:cc  

Computer 2   
IP: 192.168.2.1  
Subnet: 255.255.255.0  
Default Gateway: 192.168.2.12  
MAC: 00:00:00:00:00:dd

如果我從電腦 1 連接到電腦 2 並追蹤封包流,我相信訊息離開路由器 2 的來源位址將是 192.168.1.2,來源 MAC 位址將是 00:00:00:00:00 :副本。據我了解,目的地保持不變,但來源會在經過其路徑時更新。這是正確的還是我缺少的東西?

答案1

呼。考慮到您的情況,這有點棘手。

首先,路由器 2 不應與路由器 1 共用也在其客戶端介面上的介面。

在您的範例中,所有 4 台裝置共用相同的 LAN 網段,順便說一句,該網段位於 192.168.xy 系列的不可路由(編輯:跨「網際網路」)IP 位址範圍內。

更好的方法是將其視為如下:

Computer 1
IP: 192.168.1.100
Subnet: 255.255.255.0
Default Gateway: 192.168.1.1
MAC: 03:00:00:00:00:11

Router 1
IP: 192.168.1.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:22
IP: 192.168.12.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:33

Router 2
IP: 192.168.12.2
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:44
IP: 192.168.2.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:55

Computer 2
IP: 192.168.2.200
Subnet: 255.255.255.0
Default Gateway: 192.168.2.1
MAC: 03:00:00:00:00:66

忽略 MAC 開頭帶有 03 十六進位字元的事實,這只是為了網路勢利者的正確性。 [編輯] 我必須將其修改為 0x03,以使其既是本地分配的又是全域唯一的。

所以這裡發生的情況是:電腦 1 的一條電纜插入路由器 1。有一條電纜從路由器 1 連接到路由器 2。有一條電纜從路由器 2 連接到電腦 2。

在您最初的文章中,所有 4 個設備都必須連接到同一個交換器才能正常工作...在這種情況下,計算機 1 會直接與計算機 2 通信。知道您可以執行靜態路由來強制原始網路配置工作,但這不是該用戶所詢問的...

現在回答你的具體問題。

你說對了一半。電腦 2 看到的 MAC 位址是路由器 2 的 MAC 位址。然而,它看到的 IP 位址是電腦 1 的。

根據您的知識水平,網路的工作方式是第 2 層(資料鏈路/MAC 層 - 在全乙太網路/IPv4 環境中)位址逐跳更改。 PER HOP 被定義為「傳輸任何第 3 層處理設備」。路由器和電腦幾乎總是處理第 3 層。

因此,當訊息從計算機 1 發送到計算機 2 時,流程如下所示:

AT HOP 1 - 計算機 1 與路由器 1 之間

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:11 (Computer 1)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:22 (Router 1 - Interface facing Computer 1)

AT HOP 2 - 路由器之間

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:33 (Router 1 - Interface facing Router 2)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:44 (Router 2 - Interface facing Router 1)

AT HOP 3 - 路由器 2 與電腦 2 之間

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:55 (Router 2 - Interface facing Computer 2)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:66 (Computer 2)

因此,您會看到,IP 位址層(第3 層)位址在整個通訊過程中保持不變,但每次涉及處理第3 層位址的另一個裝置時,資料鏈結層(第2 層)位址都會發生變化。

我希望這有幫助。如果仍然令人困惑,請隨時回复,我將嘗試解釋您認為具有挑戰性的特定子集。

答案2

你的例子有缺陷。 (我看到你編輯了它,它仍然有缺陷。)

在您的範例中,路由器 1 和 2 位於同一子網路中(即它們具有相同的子網路遮罩)。因此,電腦 1 不會從預設閘道發送任何內容,它只是將封包從 NIC 中拋出,並期望交換器或媒體將其發送到電腦 2。

現在,如果將路由器 2 和電腦 2 變更為:

Router 2
IP: 192.168.2.2

Computer 2
IP: 192.168.2.12

[由粗體顯示的尼克編輯] 然後路由器 2 和計算機 2 將開啟(他們自己獨立的子網, 不是:)單獨的子網,這個例子將開始變得更有意義。

但是,由於您沒有提供圖表,我在這裡假設您希望流量以這種方式移動:

計算機 1 <-> 路由器 1 <-> 路由器 2 <-> 計算機 2

為此,路由器 1 和路由器 2 不能位於同一子網路中。他們之間實際上將存在第三個網絡,他們可以透過第三個網絡交換流量。 (預設路由引用專用網路也有點奇怪,通常它意味著“互聯網”,但當然有可能。)

這就是我猜測你正在嘗試做的事情,我對圖片的粗糙表示歉意: 在此輸入影像描述

MAC 位址不會傳播到路由器以外。電腦 1 想要向電腦 2 傳送資料包。

這最終成為從電腦 1 的 MAC 發送到路由器 1 的 MAC 的訊框。

路由器轉送封包,轉送意味著從不同的介面複製出來。因此,路由器 1 將發現從電腦 1 獲得的資料包的目的地是電腦 2。

因此,IP 封包現在具有路由器 1 的第二個 NIC 的來源 MAC 和路由器 2 的第一個 NIC 的目標 MAC。以此類推,直到到達計算機 2。

答案3

您說對了一半,因為 MAC 位址隨每一跳而變化,但連接的 IP 位址不會變化,除非內聯 NAT/PAT 技術或正在使用應用程式代理程式。

請注意,我認為computer2 的位址應該類似於192.168.2.12,而不是1.12。這意味著您的資料包根本不會通過 router2。我相信您正在尋找類似的東西:

Computer 1  
IP: 192.168.1.11  
Subnet: 255.255.255.0  
Default Gateway: 192.168.1.1  
MAC: 00:00:00:00:00:aa

Router 1  
LAN IP: 192.168.1.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:bb  

WAN IP: 192.168.3.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:b1  

Router 2  
LAN IP: 192.168.2.2  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:cc  

WAN IP: 192.168.3.2  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:c1 

Computer 2   
IP: 192.168.2.12  
Subnet: 255.255.255.0  
Default Gateway: 192.168.2.2  
MAC: 00:00:00:00:00:dd

因此我們有三個網絡,電腦 1 所在的 LAN (.1.X)、兩個路由器之間的網路 (.3.X) 以及電腦 2 所在的 LAN (.2.X)。

MAC 位址用於尋址幀,因此它們與每個 LAN 的實作相關。您可以使用 MAC 位址 ::aa 在 Computer1 和 Router1 連接的網路周圍發送幀,但如果您嘗試向該 LAN 上的 ::dd 發送幀,它將無法到達目的地。因此,MAC 位址僅適用於承載具有該 MAC 的設備的網路。

然而,IP 位址是在網路之間傳遞的,因此它保持不變。封包每次經過路由器時都會重新封裝在新訊框中,但 IP 封包本身保持不變。這很重要,因為如果您的場景中的 Computer2 收到來自 192.168.1.1 的 MAC ::cc 封包,它將無法判斷它不是來自路由器,並且當 Computer2 回應時,router2 將不知道它正在回應誰。

因此,computer2 收到的封包的來源 IP 為 192.168.1.11,但 MAC 位址為::cc。

NAT/PAT 讓這變得更加混亂,因為需要更多資訊來做出來源/目的地決策,因此請記住,使用真實家庭路由器的場景會更加完整。

答案4

哎喲。一台路由器不會只有一個IP。我建議溫德爾·奧多姆的“網絡第一步”。

你寫“根據我的理解,目的地保持不變,但源會在經過其路徑時更新。”

目前尚不清楚你在說什麼。你寫的東西不多,而且你寫的那一點也很模糊。如果你不能寫清楚,那麼你就無法清楚地理解。

不要只說「來源」「目的地」。如果您指的是來源 IP 位址、來源 MAC 位址、目標 IP 位址或目標 MAC 位址,請具體說明。

來源 IP 和目標 IP 將保持不變。 (除非有 NAT 或一些非常不尋常的東西,而你沒有)

MAC 位址(來源和目標)可以更改。路由器重寫 MAC 位址。儘管您的路由器設定不正確。請參閱 ultra 的圖片,了解路由器如何擁有多個 NIC,每個 NIC 在自己的子網路上都有自己的 IP。

相關內容