為什麼子網路遮罩與網路上的各個電腦相關?

為什麼子網路遮罩與網路上的各個電腦相關?

我了解如何使用子網路遮罩將網路劃分為子網,但是,為什麼網路中的每台電腦都需要知道子網路遮罩而不僅僅是路由器?

我可以理解,如果每台電腦都透過電線實體連接,但所有資料包都需要通過路由器。

假設我在網路上有一台192.168.0.0/255.255.255.0有 IP 的電腦192.168.0.1

如果該計算機嘗試存取子網路以外的計算機,比如說192.168.1.1,它將訊息傳輸到路由器,路由器會識別出該 IP 位於子網路 IP 範圍之外,而不是在子網路 IP 範圍內傳輸它網絡,它將其傳輸到它所連接的網路(可能是另一個路由器)。

答案1

您最初的假設並不完全正確。您所說的「路由器」是兩個裝置合而為一 – 內部連接到多個連接埠的雙埠路由器乙太網路交換機。 (這是一個例子圖表.)

這意味著計算機二層直連,可以互相傳送資料包沒有透過路由器核心——它們只是透過交換晶片在連接埠之間進行中繼。 (路由器在交換器中有自己的「連接埠」。)

因此,如果您使用 Wireshark 查看封包,您會發現它們直接使用彼此的 MAC 位址,而「外部」封包始終將路由器的 MAC 作為目的地。

(我假設您正在談論大多數家庭中發現的典型“無線路由器”,這是此類問題的常見原因。更大的網路會有分離每個子網路一個連接埠的路由器,以及一些獨立的交換器(可能是每個樓層/房間一個主交換器加一個),以及連接到這些交換器的數十台電腦。

它與 Wi-Fi 網路大致相同,只不過是「交換器」被替換為「無線橋接器」(又稱「接入點」)。在這兩種情況下,連接的電腦都可以在第 2 層直接相互發送資料包,沒有透過路由器。


評論:

當我說路由器時,我實際上指的是交換器。我的錯。我的觀點是,子網路中的每台電腦都不是相互連接的,而是連接到交換機,然後交換機可以將套件傳遞到正確的目的地。乙太網路訊框不包含子網路遮罩,因為交換器已經知道了這些訊息,因此不需要它來進行正確的交換。

這又是不正確的。交換器沒有這個知識;他們的交換核心工作在第2層並且不知道任何事物關於 IP – 它純粹基於「目標 MAC 位址」欄位轉送乙太網路訊框。

因此,主機需要子網路遮罩來確定用作目的地的 MAC 位址:

  • 若對等方位於同一子網路內,則假定為連結上根據定義 - 因此乙太網路封包將以對等方的 MAC 作為目的地。

  • 對於同儕外部子網,以太網幀將具有網關的MAC 作為目的地。

(這適用於預設配置。一些特殊的雪花網路會改變這一點- 例如,大多數作業系統允許為其他子網路添加額外的「線上」路由;相反,某些交換器可能會配置欺騙ARP 回應,以便即使「線上」路由「流量被強制通過網關。)

答案2

計算機如何知道一個目的地址是在同一個子網路還是在另一個子網路?

檢查本地地址子網路遮罩

讓我們來看幾個例子:

如果我的電腦有 IP192.168.0.1且遮罩是,255.0.0.0則表示從192.0.0.0到 的任何位址都192.255.255.255在同一子網路中。發送到所有其他電腦的資料包不需要經過路由器,可以直接發送。傳送ARP封包,取得目的電腦的MAC位址,然後傳送封包。

但是,如果我的電腦有 IP192.168.0.1且遮罩是,255.255.255.128則同一子網路中的電腦僅從 IP 位址192.168.0.0192.168.0.127。它們可以直接到達(發送 ARP、查找 MAC 位址等)。例如,任何其他位址都192.168.0.200必須透過路由器到達。

答案3

關於 IP 的一個不明顯的事情是每個 IP 設備本身就是一個路由器

這可以在普通 PC 上使用命令“route print”看到。您連接到兩個網路:本地乙太網路或 wifi 網段以及本地主機網路。每個資料包都需要決定將其放在哪個網路上。

如果您將電腦放在兩個網路(例如「公共」網路和「私人」網路)上,這一點就會變得更加明顯。現在您肯定需要子網路遮罩來決定在哪個網路上傳送封包。

許多人會意外地發現具有單一網路連線的 PC 可能會使用錯誤配置的子遮罩:他們最終只是將所有內容傳送到網關。

答案4

TCP/IP 可以按照您的建議進行設計—葉節點將所有內容傳送到路由器,然後路由器將其轉送至目標,目標可能與傳送者位於相同子網路中。

但這不是最佳設計,原因有二:

  1. 它使用更多頻寬:同一子網路上的裝置之間的每個資料包都必須傳輸兩次:一次從發送方到路由器,另一次從路由器到接收方。在路由器同時也是網路交換器的網路上,這實際上並不是任何額外的頻寬,因為無論如何它都會經過交換器。但並非所有網路技術都是這樣運作的。最初的乙太網路設計是一種匯流排技術,沒有中央交換器或中繼器。

  2. 它會為路由器帶來更多的負載。即使路由器也是交換機,但它的工作量要多一些,因為它已經上升到第 3 層路由實現,而不是更簡單的第 2 層交換。

體現 TCP/IP 設計的一般理念是終端節點是智慧設備,因此假定它們能夠完成一些工作。他們不必像骨幹路由器那樣了解完整的網路拓撲,但他們對本地環境有足夠的了解,可以承擔一些初始的本地與遠端路由任務。實作這個簡單的初始路由不需要太多程式碼。

此外,非路由器設備不一定只位於一個子網路上。您可以輕鬆地在一台 PC 中擁有多個網路卡——許多網路卡同時具有乙太網路和 WiFi。其中每個子網路都可以連接到不同的子網,並且使用位址和子網路遮罩來確定要使用哪個網路卡。如果您執行虛擬機,則可能有一個虛擬子網路將它們連接到主機系統。

相關內容