自學網絡協議(五):網間通信——子網掩碼

前文回顧:

  1. 自學網絡協議(一):HTTP請求與響應——GET和POST真的不一樣嗎?
  2. 自學網絡協議(二):OSI第一層——物理層Physical layer
  3. 自學網絡協議(三):OSI第二層——機器通信那點事
  4. 自學網絡協議(四):OSI第三層——網絡層的作用(上)

前面說OSI第3層的作用是“互連網絡”。
我們也開始了IP的學習,IP —— Internet Protocol,即“互聯網協議”,它毫無疑問是網絡協議中主要的協議簇。
而IP地址,它實際上分爲兩部分 —— 網絡地址 & 機器地址。
實際上,我們在互聯網上定位一個主機,就類似於去一個小區找人:首先通過網絡地址找到這個人是哪個小區的,再用主機地址(機器地址)從小區中找到這個人。

那麼,我們怎麼知道IP地址中的哪個部分代表什麼呢?

子網掩碼

子網掩碼 算是一個“額外的信息”了。它和IP地址是密不可分的。因爲正是子網掩碼指明瞭IP地址的哪一部分是網絡地址,哪一部分是主機地址。
還記得ifconfig / ipconfig 嗎?它不僅包含了MAC地址,還有IP地址和子網掩碼:enp0s3(以太網接口)、inet(IP地址)、netmask(子網掩碼)
我們看到,子網掩碼和IPV4的IP地址格式一致——4個字節,用點分十進制表示,是因爲IPV6格式的地址不需要子網掩碼。

子網掩碼中爲1的二進制位代表IP地址中的網絡部分。
因爲二進制只由0、1組成,因此:子網掩碼中爲0的二進制位代表IP地址的主機部分。

如IP地址192.168.0.1與子網掩碼255.255.0.0相關聯。

255.255.0.0 -> 11111111.11111111.00000000.00000000
192.168.0.1 -> 11000000.10101000.00000000.00000001

如上,二進制中黃色部分代表IP的網絡地址,其餘代表主機地址。

然而,上述只是非常簡單的一個例子。衆所周知,分割經常會發生在一個字節的中間:

255.255.240.0 -> 11111111.11111111.1111 0000.00000000
192.168.0.1 -> 11000000.10101000.0000 0000.00000000

這次分割又變成了這樣!

其實,子網掩碼中字節可以取的值是特定的。這是由於子網掩碼中0和1的排列造成的。

與子網掩碼相關的問題

二進制位的連續性

事實上,在二進制子網掩碼中,爲1的位必須在左邊,爲0的位必須在右邊,不能混用0和1

所以… 子網掩碼這樣寫:11111111.11100011.00000000.00000000 是錯的!

也就是說,子網掩碼的4個字節中的每一個字節能取的值將始終是以下值:

00000000 -> 0
10000000 -> 128
11000000 -> 192
11100000 -> 224
11110000 -> 240
11111000 -> 248
11111100 -> 252
11111110 -> 254
11111111 -> 255

好的,看來我們有必要實踐一下,如何確定與子網掩碼相關的IP地址範圍。

IP地址範圍是指由相關聯的IP地址和子網掩碼所確定的一組地址,從最小的到最大的。

我們知道,一個網絡中,往往不只有一臺主機。就像你一個小區裏面,雖然我Mxc用戶可以通過查找我的網絡地址和主機地址來確定,但我也很想知道,這個小區可以容納多少住戶,這些住戶的可用地址又是在哪個範圍裏的。

IP地址範圍的計算 —— 計算第一個和最後一個地址
我們還是將目光放向了192.168.0.1255.255.240.0相關聯。
要知道,屬於同一網絡的所有主機,他們的網絡地址的所有位都是相同的!
對於這個例子,顯然,他們的網絡地址都等於11000000.10101000.0000
然而,其中主機地址是可以變化的
在這個網絡中,主機地址可以取很多值 —— 這取決於我們將主機地址的某些爲設置爲0還是1。
總的來說,他們(這些IP地址)將是:
在這裏插入圖片描述
如此,我們通過改變IP地址中主機地址的位,就找到了此網絡中所有可被主機所用的IP地址。

網絡的第一個IP地址是主機地址所有位皆爲0的地址;
網絡的最後一個IP地址是主機地址所有位皆爲1的地址;

那麼問題又來了,此網絡中有多少個真正可用IP地址?

  • 若主機地址只有一位,那麼只有兩種選擇:0或1
  • 若主機地址有兩位,那就有2的2次方個可能的地址(00、01、10、11)

以此類推,要找到網絡中的地址數量,只需知道主機地址的二進制位數即可。

而IP地址中的主機地址是由子網掩碼定義的,也就是說,網絡中的可用主機數取決於子網掩碼!
那麼,我們完全可以定義:網絡中可用的IP數=2的“子網掩碼中0的個數”次方個

網絡地址和廣播地址
在由相關聯的 IP 地址和子網掩碼所確定的 IP 地址範圍中,有兩個是特殊的:第一個 IP 地址和最後一個 IP 地址。

  • 地址範圍中的第一個 IP 地址是這個網絡的地址本身,此地址不能爲某個主機所用。
  • 地址範圍中的最後一個 IP 地址是一個特殊地址,即廣播地址。該地址也不能爲某個主機所用。(實際上,它用於標識該網絡中的所有主機)

當我們向某網絡的廣播地址發送消息時,此網絡上的所有主機都將收到此消息。

因此,假設一個網絡有 16 個可用的 IP 地址,網絡中的主機卻只能使用 14 個地址,因爲第一個和最後一個將保留給該網絡的地址和廣播地址。這條規則對於任何網絡都是如此,總是有 2 個不能爲主機所用的地址。

上一個例子,就是相關聯的 IP 地址 192.168.0.1 和子網掩碼 255.255.240.0 的示例中,網絡中的主機可以使用的地址數是 4096(2的12次方) - 2 = 4094 個,因此理論上此網絡可以容納 4094 臺主機。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章