這些資料包是如何路由的

這些資料包是如何路由的

路由器 B (192.168.1.1) 透過乙太網路線插入路由器 A (192.168.0.1)。筆記型電腦 A (192.168.1.101) 透過無線連接到 B。

現在,如果我 ping 一個也連接到 B 的 Windows 虛擬機器 (192.168.1.18),我知道這不會到達預設網關,因為它們位於同一子網路上。但是,如果我隨後 ping Raspberry Pi (192.168.0.11),這應該會轉到預設閘道 (192.168.1.1)?

當我打開 Wireshark 並使用過濾器時

ip.src == 192.168.1.101 && ip.dst == 192.168.1.1

什麼也沒有顯示出來,我顯然有一些錯誤的想法,但為什麼 Wireshark 中沒有向我顯示 ICMP 訊息?

我期望發生的情況是,我從 192.168.1.101 ping 到 192.168.0.11,這是在不同的子網上,因此它被發送到 DG (192.168.1.1),然後傳遞到路由器 A (192.168.0.1)然後將其傳遞給樹莓派(192.168.0.11)...

這是一個簡單的圖表。 在此輸入影像描述

路由器 B 是一個便宜的 TPLink 路由器,沒有特殊配置,透過單一乙太網路電纜連接到路由器 A(Virgin superhub)。路由器 A 接上網際網路。我想問題是,筆記型電腦A如何與樹莓派通信,而不顯示透過路由器192.168.1.1(Wireshark中沒有顯示任何內容)

答案1

IP 封包總是(無論如何,在理想世界中)具有原始寄件者實際收件人放。這些價值觀永遠不會改變。因此,如果流量定向到192.168.0.11,它將ip.dst被設定為192.168.0.11

透過在資料包上設定適當的 MAC 位址,將流量定向到下一跳。

答案2

這裡基本上是一個以太網/IP 網路(wifi 不是以太網,但足夠相似)。第 2 層是以太網,第 3 層是 IP。

線路上存在具有乙太網路位址 (MAC) 的乙太網路封包,其中包含帶有 IP 位址的 IP 封包。乙太網路通常在單一子網路(例如 192.168.0.*)內使用,多個乙太網路子網路透過路由器連接到更大的 IP 網路。

當您的電腦發送 IP 封包時,它會查看其路由表以選擇將其發送到的位置。如果它在本地網路中(沒有網關的路由),它將找到目的地的乙太網路(MAC)位址(透過ARP)。具有來源 IP 位址和目標 IP 位址的 IP 封包將被放入一個乙太網路訊框中,其中包含您的電腦的來源和目標乙太網路位址以及目的地。

如果路由表指定帶有網關的路由(預設路由或子網路路由),它將查找網關(而不是目的地)的乙太網路位址,並再次將具有來源 IP 和目標 IP 的 IP 封包傳送到內部乙太網路幀,其來源乙太網路IP 是您電腦的乙太網路位址,目標乙太網路位址不是目標電腦的位址,而是閘道的乙太網路位址。網關將在其一個介面上接收乙太網路幀,查看 IP 封包中的 IP 並將其傳送到另一個介面上,其方法與電腦類似。

由純路由器路由的封包不會更改其 IP 資訊。路由器將以類似於電腦的方式為資料包選擇一條路由,將其放入一個新的乙太網路訊框中,來源乙太網路位址為網關的傳出接口,目標乙太網路位址為目的地或另一個網關,具體取決於路線並發送出去。

擁有乙太網路位址的原因是因為乙太網路不是點對點線路,而是透過交換器連接在一起的元素網絡,交換器是相當於乙太網路層的更簡單的路由器。

現在,並非所有網路都是乙太網路。您的互聯網上行鏈路可能不是以太網,甚至wifi 也不是以太網,但典型的簡單wifi 的行為大多像以太網,具有以太網兼容的地址,甚至可以在以太網-wifi 第2 層混合網絡中橋接,例如當您使用“愚蠢的AP”時。

此外,典型的家庭路由器不是路由器,而是典型的交換器(在LAN 側)類似小型電腦的準路由器,除了簡單的路由之外,還對轉送的封包上的來源/目標IP 位址和連接埠進行NAT重寫區域網路和廣域網路之間。

現在應該很明顯,當 ping 時,您不會看到其目標 IP 設定為網關 IP 的封包,但如果您查看乙太網路位址,它應該是網關的 IP。

相關內容