Networking

IPv4 子網如何工作?

  • September 3, 2020

這是關於 IPv4 子網的規範問題。

有關的:

子網劃分是如何工作的,您是如何手動或在腦海中進行的? 有人可以從概念上和幾個例子來解釋嗎?伺服器故障有很多子網作業問題,因此我們可以使用答案將它們指向伺服器故障本身。

  • 如果我有一個網路,我如何弄清楚如何拆分它?
  • 如果給我一個網路遮罩,我怎麼知道它的網路範圍是什麼?
  • 有時有一個斜線後跟一個數字,那個數字是多少?
  • 有時有子網遮罩,也有萬用字元遮罩,它們看起來是一樣的,但它們是不同的?
  • 有人為此提到了一些關於了解二進制的內容?

存在 IP 子網以允許路由器為數據包選擇適當的目的地。您可以出於邏輯原因(防火牆等)或物理需要(較小的廣播域等)使用 IP 子網來分解較大的網路。

簡而言之,IP 路由器使用您的 IP 子網來做出路由決策。了解這些決策是如何工作的,您就可以了解如何規劃 IP 子網。

數到 1

如果您已經精通二進制(以 2 為基數)表示法,則可以跳過本節。

對於那些剩下的人:為不流利的二進製表示而感到羞恥!

是的,這可能有點苛刻。學習以二進制計數,學習將二進制轉換為十進制並返回的快捷方式真的非常容易。你真的應該知道怎麼做。

二進制數非常簡單,因為您只需要知道如何數到 1!

想想汽車的“里程表”,除了與傳統的里程表不同,每個數字只能從 0 數到 1。當汽車剛出廠時,里程表的讀數為“00000000”。

當您駕駛第一英里時,里程表顯示“00000001”。到目前為止,一切都很好。

當您行駛第二英里時,里程表的第一個數字回滾到“0”(因為它的最大值是“1”),里程表的第二個數字回滾到“1”,使里程表讀數為“ 00000010”。這看起來像十進制的數字 10,但實際上它是二進制的 2(到目前為止您駕駛汽車的英里數)。

當您行駛第三英里時,里程表顯示“00000011”,因為里程表的第一個數字再次轉動。以二進製表示的數字“11”與十進制數字 3 相同。

最後,當您行駛了第四英里時,兩個數字(在第三英里結束時讀數為“1”)回滾到零位置,第三個數字回滾到“1”位置,給我們“ 00000100”。那是十進制數 4 的二進製表示。

如果你願意,你可以記住所有這些,但你真的只需要了解小里程表是如何隨著它計數的數字變大而“滾動”的。它與傳統十進制里程表的操作完全相同,只是在我們虛構的“二進制里程表”上每個數字只能是“0”或“1”。

要將十進制數字轉換為二進制,您可以將里程表向前滾動,逐個滴答,大聲計數,直到您滾動它的次數等於要轉換為二進制的十進制數。在所有的計數和滾動之後,里程表上顯示的任何內容都將是您計數到的十進制數的二進製表示。

由於您了解里程表如何向前滾動,您也將了解它如何向後滾動。要將里程表上顯示的二進制數轉換回十進制數,您可以一次將里程表向後滾動一個刻度,大聲計數直到里程表讀數為“00000000”。完成所有計數和滾動後,您大聲說出的最後一個數字將是里程表開始時二進制數的十進製表示。

以這種方式在二進制和十進制之間轉換值將非常繁瑣。你可以這樣做,但它不會很有效。學習一個小算法來更快地完成它更容易。

順便說一句:二進制數中的每個數字都稱為“位”。那是“二進制”中的“b”和“數字”中的“it”。一點點都沒有探勘

將諸如“1101011”之類的二進制數轉換為十進制是一個簡單的過程,並帶有一個方便的小算法。

首先計算二進制數中的位數。在這種情況下,有 7 個。在一張紙上(在您的腦海中,在文本文件中等)製作 7 個分區,然後從右到左開始填寫它們。在最右邊的插槽中,輸入數字“1”,因為我們總是以“1”開頭。在左邊的下一個槽中輸入右邊槽中的值的兩倍(因此,下一個為“2”,下一個為“4”)並繼續直到所有槽都已滿。(隨著你越來越多地這樣做,你最終會記住這些數字,它們是 2 的冪。我的腦海中最多可以達到 131,072,但之後我通常需要一個計算器或紙)。

所以,你應該在你的小插槽中的紙上寫下以下內容。

64    |    32    |    16    |    8    |    4    |    2    |    1    |

從插槽下方的二進制數中轉錄位,如下所示:

64    |    32    |    16    |    8    |    4    |    2    |    1    |
 1          1          0         1         0         1         1

現在,添加一些符號併計算問題的答案:

64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
      +          +          +         +         +         +         =

做所有的數學,你應該想出:

64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
64    +    32    +     0    +    8    +    0    +    2    +    1    =   107

就是這樣。十進制的“1101011”是107。這只是簡單的步驟和簡單的數學運算。

將十進制轉換為二進制同樣簡單,並且是相同的基本算法,反向執行。

假設我們要將數字 218 轉換為二進制。從一張紙的右邊開始,寫下數字“1”。在左邊,將該值加倍(因此,“2”)並繼續向紙的左側移動,使最後一個值加倍。如果您要寫入的數字大於正在轉換的數字,請停止寫入。否則,繼續將先前的數字加倍並寫入。(使用此算法將一個大數(如 34,157,216,092)轉換為二進制可能有點乏味,但它肯定是可能的。)

所以,你的紙上應該有:

128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |

您停止在 128 處寫入數字,因為將 128 加倍,即為 256,將大於轉換後的數字 (218)。

從最左邊的數字開始,在其上方寫下“218”(128)並問自己:“218 是否大於或等於 128?” 如果答案是肯定的,請在“128”下方劃一個“1”。在“64”上方,寫出 218 減去 128 (90) 的結果。

看著“64”,問自己:“90 是否大於等於 64?” 是的,所以你會在“64”下方寫一個“1”,然後從 90 中減去 64 並將其寫在“32”上方(26)。

但是,當您到達“32”時,您會發現 32 不大於或等於 26。在這種情況下,請在“32”下方寫一個“0”,然後將數字(26)從 32 上方復製到上方“ 16”,然後繼續用其他數字問自己同樣的問題。

完成後,您應該擁有:

218         90         26         26        10         2         2         0
128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |
  1          1          0          1         1         0         1         0

頂部的數字只是計算中使用的註釋,對我們來說意義不大。但是,在底部,您會看到一個二進制數“11011010”。果然,218,轉換成二進制,就是“11011010”。

按照這些非常簡單的程序,您可以使用計算器將二進制轉換為十進制,然後再轉換回來。數學非常簡單,只需稍加練習即可記住規則。

拆分地址

將 IP 路由想像成披薩外賣。

當您被要求將披薩送到“123 Main Street”時,作為人類,您很清楚您想去名為“Main Street”的街道上編號為“123”的建築物。很容易知道你需要去 Main Street 的 100 街區,因為樓號在 100 到 199 之間,而且大多數城市街區的編號都以數百為單位。您“只知道”如何拆分地址。

路由器傳送數據包,而不是披薩。他們的工作與披薩司機一樣:將貨物(包)盡可能靠近目的地。路由器連接到兩個或多個 IP 子網(完全有用)。路由器必須檢查數據包的目標 IP 地址,並將這些目標地址分解為它們的“街道名稱”和“建築物編號”組件,就像披薩司機一樣,以做出有關傳遞的決定。

IP 網路上的每台電腦(或“主機”)都配置有唯一的 IP 地址和子網遮罩。該 IP 地址可以分為稱為“主機 ID”的“建築物編號”部分(如上例中的“123”)和稱為“主機 ID”的“街道名稱”部分(如上例中的“主街”) “網路 ID”。對於我們的肉眼來說,很容易在“123 Main Street”中看到建築物編號和街道名稱的位置,但在“子網遮罩為 255.255.192.0”的“10.13.216.41”中很難看到該劃分。

IP 路由器“只知道”如何將 IP 地址拆分為這些組成部分以做出路由決策。由於了解 IP 數據包如何路由取決於了解此過程,因此我們也需要知道如何分解 IP 地址。幸運的是,從 IP 地址和子網遮罩中提取主機 ID 和網路 ID 實際上非常容易。

首先用二進制寫出 IP 地址(如果您還沒有在頭腦中學會這樣做,請使用計算器,但記下學習如何做 - 這真的非常簡單,並且給異性留下深刻印象派對):

     10.      13.     216.      41
00001010.00001101.11011000.00101001

也用二進制寫出子網遮罩:

    255.     255.     192.       0
11111111.11111111.11000000.00000000

並排書寫,您可以看到子網遮罩中“1s”停止的點與 IP 地址中的點“對齊”。這就是網路 ID 和主機 ID 分裂的地方。所以,在這種情況下:

     10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address
11111111.11111111.11000000.00000000 - subnet mask
00001010.00001101.11000000.00000000 - Portion of IP address covered by 1s in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0s in subnet mask, remaining bits set to 0

路由器使用子網遮罩“屏蔽”IP 地址中被 1 覆蓋的位(將未被“屏蔽”的位替換為 0)以提取網路 ID:

     10.      13.     192.       0
00001010.00001101.11000000.00000000 - Network ID

同樣,通過使用子網遮罩“屏蔽”IP 地址中被 0 覆蓋的位(再次用 0 替換未被“屏蔽”的位),路由器可以提取主機 ID:

      0.       0.      24.      41
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0s in subnet mask, remaining bits set to 0

我們的肉眼在比薩配送過程中看到網路ID和主機ID之間的“斷線”並不像物理地址中的“樓號”和“街道名稱”那樣容易,但最終的效果是相同的。

現在您可以將 IP 地址和子網遮罩拆分為主機 ID 和網路 ID,您可以像路由器一樣路由 IP。

更多術語

您將看到整個 Internet 上以及此答案的其餘部分都寫為(IP/號碼)的子網遮罩。這種表示法稱為“無類域間路由”(CIDR) 表示法。“255.255.255.0” 由 24 位 1 開頭,寫成 “/24” 比寫成 “255.255.255.0” 快。要將 CIDR 編號(如“/16”)轉換為點分十進制子網遮罩,只需寫出該數量的 1,將其分成 8 位組,然後將其轉換為十進制。(例如,“/16”是“255.255.0.0”。)

回到“舊時代”,子網遮罩沒有被指定,而是通過查看 IP 地址的某些位得出。例如,以 0 - 127 開頭的 IP 地址具有隱含的子網遮罩 255.0.0.0(稱為“A 類”IP 地址)。

這些隱含的子網遮罩今天不再使用,我不建議您再學習它們,除非您不幸處理不支持無類 IP 定址的非常舊的設備或舊協議(如 RIPv1)。我不會進一步提及這些地址“類別”,因為它在今天不適用並且可能會造成混淆。

一些設備使用稱為“萬用字元遮罩”的符號。“萬用字元遮罩”只不過是一個子網遮罩,其中有 1 的地方全為 0,有 0 的地方全為 1。/26 的“萬用字元遮罩”是:

11111111.11111111.11111111.11000000 - /26 subnet mask
00000000.00000000.00000000.00111111 - /26 "wildcard mask"

通常,您會看到用於匹配訪問控制列表或防火牆規則中的主機 ID 的“萬用字元遮罩”。我們不會在這裡進一步討論它們。

路由器的工作原理

正如我之前所說,IP 路由器的工作與披薩送貨司機類似,因為它們需要將貨物(數據包)送到目的地。當收到一個發往地址 192.168.10.2 的數據包時,IP 路由器需要確定它的哪個網路介面可以最好地使該數據包更接近其目的地。

假設您是一個 IP 路由器,並且您有連接到您的介面編號:

  • Ethernet0 - 192.168.20.1,子網遮罩/24
  • Ethernet1 - 192.168.10.1,子網遮罩 /24

如果你收到一個目標地址為“192.168.10.2”的數據包,很容易判斷(用你的肉眼)數據包應該從介面 Ethernet1 發送出去,因為 Ethernet1 介面地址對應於數據包的目標地址。連接到 Ethernet1 介面的所有電腦的 IP 地址都會以“192.168.10.”開頭,因為分配給您的介面 Ethernet1 的 IP 地址的網路 ID 是“192.168.10.0”。

對於路由器,此路由選擇過程是通過建構路由表並在每次發送數據包時查閱該表來完成的。路由表包含網路 ID 和目標介面名稱。您已經知道如何從 IP 地址和子網遮罩獲取網路 ID,因此您正在建構路由表。這是這個路由器的路由表:

  • 網路 ID:192.168.20.0 (11000000.10101000.00010100.00000000) - 24 位子網遮罩 - 介面 Ethernet0
  • 網路 ID:192.168.10.0 (11000000.10101000.00001010.00000000) - 24 位子網遮罩 - 介面 Ethernet1

對於綁定到“192.168.10.2”的傳入數據包,我們只需將該數據包的地址轉換為二進制(作為人類 - 路由器一開始就將其作為二進制從網路中獲取)並嘗試將其與我們路由中的每個地址匹配表(直到子網遮罩中的位數),直到我們匹配一個條目。

  • 傳入數據包目的地:11000000.10101000.00001010.00000010

將其與我們的路由表中的條目進行比較:

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00010100.00000000 - Interface Ethernet0
!!!!!!!!.!!!!!!!!.!!!????!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00001010.00000000 - Interface Ethernet1, 24 bit subnet mask
!!!!!!!!.!!!!!!!!.!!!!!!!!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

Ethernet0 的條目與前 19 位匹配良好,但隨後停止匹配。這意味著它不是正確的目標介面。可以看到介面 Ethernet1 匹配 24 位的目的地址。啊哈!數據包被綁定到介面 Ethernet1。

在現實生活中的路由器中,路由表的排序方式是首先檢查最長的子網遮罩是否匹配(即最具體的路由),然後在數字上進行排序,以便一旦找到匹配項就可以路由數據包並且不需要進一步的匹配嘗試(這意味著 192.168.10.0 將首先列出,而 192.168.20.0 將永遠不會被檢查)。在這裡,我們稍微簡化一下。花哨的資料結構和算法使 IP 路由器更快,但簡單的算法將產生相同的結果。

靜態路由

到目前為止,我們已經討論了我們假設的路由器,因為它有網路直接連接到它。顯然,這不是這個世界真正運作的方式。在比薩駕駛的類比中,有時司機不允許進入大樓比前台更遠的地方,並且必須將比薩交給其他人以傳遞給最終的收件人(暫停你的懷疑並忍受我,而請擴展我的類比)。

讓我們從前面的範例“Router A”中呼叫我們的路由器開始。你已經知道RouterA的路由表為:

  • 網路 ID:192.168.20.0 (11000000.10101000.00010100.00000000) - 子網遮罩 /24 - 介面 RouterA-Ethernet0
  • 網路 ID:192.168.10.0 (11000000.10101000.00001010.00000000) - 子網遮罩 /24 - 介面 RouterA-Ethernet1

假設有另一個路由器“路由器 B”,其 IP 地址 192.168.10.254/24 和 192.168.30.1/24 分配給它的 Ethernet0 和 Ethernet1 介面。它具有以下路由表:

  • 網路 ID:192.168.10.0 (11000000.10101000.00001010.00000000) - 子網遮罩 /24 - 介面 RouterB-Ethernet0
  • 網路 ID:192.168.30.0 (11000000.10101000.00011110.00000000) - 子網遮罩 /24 - 介面 RouterB-Ethernet1

在漂亮的 ASCII 藝術中,網路看起來像這樣:

              Interface                      Interface
              Ethernet1                      Ethernet1
              192.168.10.1/24                192.168.30.254/24
    __________  V                  __________  V
   |          | V                 |          | V
----| ROUTER A |------- /// -------| ROUTER B |----
 ^ |__________|                 ^ |__________|
 ^                              ^
Interface                      Interface
Ethernet0                      Ethernet0
192.168.20.1/24                192.168.10.254/24

您可以看到路由器 B 知道如何“到達”網路 192.168.30.0/24,而路由器 A 對此一無所知。

假設一台連接到路由器 A 的 Ethernet0 介面的網路的 IP 地址為 192.168.20.13 的 PC 向路由器 A 發送數據包以進行傳送。我們假設的數據包的目的地是 IP 地址 192.168.30.46,這是一個連接到路由器 B 的 Ethernet1 介面的網路的設備。

使用如上所示的路由表,Router A 的路由表中沒有一個條目與目標 192.168.30.46 匹配,因此 Router A 會將數據包返回給發送端 PC,並顯示“Destination network unreachable”消息。

為了讓路由器 A “知道” 192.168.30.0/24 網路的存在,我們將以下條目添加到路由器 A 的路由表中:

  • 網路 ID:192.168.30.0 (11000000.10101000.00011110.00000000) - 子網遮罩 /24 - 可通過 192.168.10.254 訪問

這樣,路由器 A 就有一個路由表條目與範例數據包的 192.168.30.46 目的地相匹配。這個路由表條目實際上是說“如果你收到一個發往 192.168.30.0/24 的數據包,請將它發送到 192.168.10.254,因為他知道如何處理它。” 這與我之前提到的類似的“在前台交出比薩餅”動作——將數據包傳遞給知道如何將其更接近目的地的其他人。

“手動”向路由表添加條目稱為添加“靜態路由”。

如果路由器 B 想要將數據包傳送到 192.168.20.0 子網遮罩 255.255.255.0 網路,它也需要在其路由表中添加一個條目:

  • 網路 ID:192.168.20.0 (11000000.10101000.00010100.00000000) - 子網遮罩 /24 - 可通過以下方式訪問:192.168.10.1(路由器 A 在 192.168.10.0 網路中的 IP 地址)

這將在 192.168.30.0/24 網路和 192.168.20.0/24 網路之間通過這些路由器之間的 192.168.10.0/24 網路創建傳遞路徑。

您總是希望確保這種“間隙網路”兩側的路由器都有一個用於“遠端”網路的路由表條目。如果我們範例中的路由器 B 沒有連接到路由器 A 的“遠端”網路 192.168.20.0/24 的路由表條目,我們假設來自 192.168.20.13 的 PC 的數據包到達 192.168.30.46 的目標設備,但是任何 192.168.30.46 試圖發回的回复都會被路由器 B 返回為“目標網路不可達”。單向通信通常是不可取的。當您考慮電腦網路中的通信時,請務必考慮雙向流動的流量*。*

您可以從靜態路線中獲得大量里程。動態路由協議,如 EIGRP、RIP 等,實際上只不過是路由器在彼此之間交換路由資訊的一種方式,實際上可以配置靜態路由。但是,在靜態路由上使用動態路由協議的一大優勢是,動態路由協議可以根據網路條件(頻寬使用率、介面“關閉”等)動態更改路由表,因此,使用動態路由協議可以動態更改路由表。路由協議可能會導致配置“繞過”網路基礎設施中的故障或瓶頸。(不過,動態路由協議超出了這個答案的範圍。)

你不能從這裡到達那裡

在我們的範例路由器 A 的情況下,當一個發往“172.16.31.92”的數據包進來時會發生什麼?

查看路由器 A 路由表,目標介面或靜態路由都不匹配 172.18.31.92 的前 24 位(順便說一下,即 10101100.00010010.00011111.01011100)。

正如我們已經知道的,路由器 A 會通過“目標網路不可達”消息將數據包返回給發送方。

假設有另一個路由器(路由器 C)位於地址“192.168.20.254”。路由器 C 已連接到 Internet!

                             Interface                      Interface                      Interface
                             Ethernet1                      Ethernet1                      Ethernet1
                             192.168.20.254/24              192.168.10.1/24                192.168.30.254/24
                   __________  V                  __________  V                  __________  V
((  heap o  ))     |          | V                 |          | V                 |          | V
(( internet )) ----| ROUTER C |------- /// -------| ROUTER A |------- /// -------| ROUTER B |----
((   w00t!  ))   ^ |__________|                 ^ |__________|                 ^ |__________|
                ^                              ^                              ^
              Interface                      Interface                      Interface
              Ethernet0                      Ethernet0                      Ethernet0
              10.35.1.1/30                   192.168.20.1/24                192.168.10.254/24

如果路由器 A 可以將不匹配任何本地介面的數據包路由到路由器 C,這樣路由器 C 可以將它們發送到 Internet,那就太好了。輸入“預設網關”路由。

在我們的路由表末尾添加一個條目,如下所示:

  • 網路 ID:0.0.0.0 (00000000.00000000.00000000.00000000) - 子網遮罩 /0 - 目標路由器:192.168.20.254

當我們嘗試將“172.16.31.92”與路由表中的每個條目匹配時,我們最終會遇到這個新條目。起初,這有點令人困惑。我們希望將目標地址的零位與…等等…什麼相匹配?匹配零位?所以,我們根本不是在尋找匹配項。這個路由表條目基本上是說,“如果你到達這裡,而不是放棄傳遞,將數據包發送到 192.168.20.254 的路由器並讓他處理它”。

192.168.20.254是我們知道如何將數據包傳送到的目的地。當面對一個發往我們沒有特定路由表條目的目的地的數據包時,這個“預設網關”條目將始終匹配(因為它匹配目標地址的零位),並為我們提供了一個“最後的手段”位置,我們可以發送數據包以進行傳遞。您有時會聽到稱為“最後的網關”的預設網關。

為了使預設網關路由有效,它必須引用使用路由表中的其他條目可到達的路由器。例如,如果您嘗試在路由器 A 中指定預設網關 192.168.50.254,則傳送到此類預設網關將失敗。192.168.50.254 不是路由器 A 知道如何使用其路由表中的任何其他路由傳遞數據包的地址,因此這樣的地址作為預設網關無效。這可以簡明扼要地說:必須將預設網關設置為使用路由表中的另一條路由已經可以到達的地址。

真正的路由器通常將預設網關儲存為路由表中的最後一條路由,以便在它們未能匹配表中的所有其他條目後匹配數據包。

城市規劃和 IP 路由

將 IP 子網分解為更小的 IP 子網就像城市規劃一樣。在城市規劃中,分區用於適應景觀的自然特徵(河流、湖泊等),影響城市不同部分之間的交通流量,以及分隔不同類型的土地利用(工業、住宅等) . IP 子網劃分實際上是相同的。

對網路進行子網劃分的主要原因有三個:

  • 您可能希望通過不同的通信媒體進行通信。如果您在兩座建築物之間有 T1 WAN 連接,則可以將 IP 路由器放置在這些連接的末端,以促進跨 T1 的通信。每一端的網路(可能還有 T1 本身的“間隙”網路)將被分配到唯一的 IP 子網,以便路由器可以決定應該通過 T1 線路發送哪些流量。
  • 在乙太網中,您可以使用子網劃分來限製網路給定部分的廣播流量。應用層協議將乙太網的廣播功能用於非常有用的目的。但是,當您將越來越多的主機打包到同一個乙太網網路中時,有線(或無線乙太網中的空中)廣播流量的百分比可能會增加到一定程度,從而為非廣播流量的傳遞帶來問題。(在過去,廣播流量可能會迫使主機檢查每個廣播數據包,從而使主機的 CPU 不堪重負。如今這種情況不太可能發生。)交換乙太網上的過多流量也可能以“將幀泛洪到未知目的地”的形式出現。這種情況是由於乙太網交換機無法跟踪網路上的每個目的地造成的,這也是交換式乙太網無法擴展到無限數量的主機的原因。出於子網劃分的目的,將幀泛洪到未知目的地的影響類似於過度廣播流量的影響。
  • 您可能想要“監管”不同主機組之間的流量類型。也許您有列印伺服器設備,並且您只希望授權的列印隊列伺服器電腦向它們發送作業。通過限制允許流向列印伺服器設備子網的流量,使用者無法將其 PC 配置為直接與列印伺服器設備對話以繞過列印計費。您可以將列印伺服器設備單獨放入一個子網中,並在連接到該子網的路由器或防火牆中創建一個規則,以控制允許向列印伺服器設備發送流量的主機列表。(路由器和防火牆通常都可以根據數據包的源地址和目標地址來決定如何或是否發送數據包。防火牆通常是具有強迫性個性的路由器的一個子類。他們可能非常非常關心數據包的有效負載,而路由器通常會忽略有效負載而只是傳遞數據包。)

在規劃城市時,您可以規劃街道如何相互交叉,並且可以使用僅轉彎、單向和死胡同的街道來影響交通流量。您可能希望 Main Street 有 30 個街區長,每個街區最多有 99 座建築物。規劃街道編號非常容易,因此 Main Street 中的每個街區的街道編號範圍每街區增加 100。很容易知道每個後續塊中的“起始編號”應該是什麼。

在規劃 IP 子網時,您關心的是使用正確數量的可用主機 ID(建築物編號)建構正確數量的子網(街道),並使用路由器將子網相互連接(交叉點)。路由器中指定的有關允許的源地址和目標地址的規則可以進一步控制流量。防火牆可以像痴迷的交通警察。

出於此答案的目的,建構我們的子網是我們唯一的主要關注點。不像城市規劃那樣使用十進制,而是使用二進制來描述每個子網的邊界。

繼續:IPv4 子網如何工作?

(是的……我們達到了答案的最大大小(30000 個字元)。)

引用自:https://serverfault.com/questions/49765