在介紹分級之前,先來瞭解 IP(IPv4)總共有 32 位元(bits),為了方便判讀,我們將它每 8 個位元(bits)用一個 點 . 分隔,並且將二進轉換成十進位表示。
例如,常見的區域網路分享器預設 IP 位址 192.168.0.1 十進位是給人看的,電腦其實是辨認它的二進位 11000000.10101000.00000000.00000001 同理可推,全部的 IP(IPv4)範圍會介於 0.0.0.0 到 255.255.255.255 之間, 因為其二進位最小與最大值是 00000000.00000000.00000000.00000000 與 11111111.11111111.11111111.11111111 有了這樣的觀念,接下來就可以進入主題了。
IP 等級(Class)
在一個組織內部,希望將網路分成內部網路與外部網路,員工可以從內部網路(同一網段)中存取公司的 FTP Server 來交換檔案,但同時在外部網路(不同網段)是沒辦法存取的,因為要避免資安問題,外部網路只能瀏覽公司的網頁, 以及公司對外 Server 上的檔案,這個觀念在很早以前就形成了,一直到 1990 那個年代中期為止,IP 都是以 Class A 、Class B、Class C、Class D 來做分級,所謂的分級,其實就是制定出一套規範,來表示這個 IP 前幾碼代表網路位址 ,後幾碼代表主機位址,如果今天 A 跟 B 有相同的網路位址,則可以說他們在相同的網段,屬於同個組織下的網路, 也就允許使用公司的 FTP Server。
Class A
第 1 個 bit 一定是 0,只要 IP 轉換成二進位是 0 開頭的,就可以認定它是屬於 Class A 級的 IP。前 8 個 bits 決定了它的網路位址,剩下的 24 個 bits 都是主機位址(藍色是網路位址,綠色是主機位址)。
Class A 級 IP 範圍:0.0.0.0 ~ 127.0.0.0(第 1 個 bit 一定要是 0,所以前 8 個 bits 最大到 01111111,也就是 127)。
例如,可以透過 IP 就猜到 13.0.0.1 跟 13.250.249.248 是屬於同單位內的網段。(通常比較大型的組織或政府機構才有辦法拿到 Class A 級的 IP)
Class B
前 2 個 bit 一定是 10,只要 IP 轉換成二進位是 10 開頭的,就可以認定它是屬於 Class B 級的 IP。前 16 個 bits 決定了它的網路位址,剩下的 16 個 bits 都是主機位址 (藍色是網路位址,綠色是主機位址)。
Class B 級 IP 範圍:128.0.0.0 ~ 191.255.0.0(前 2 個 bit 一定要是 10,所以前 16 個 bits 最大到 10111111.11111111,也就是 191.255)。
例如,可以透過 IP 就猜到 140.112.0.1 跟 140.112.250.251 是屬於同單位內的網段。(140.112 開頭其實就是台大,不信你去台大連他們網路看看)。
Class C
前 3 個 bit 一定是 110,只要 IP 轉換成二進位是 110 開頭的,就可以認定它是屬於 Class C 級的 IP。前 24 個 bits 決定了它的網路位址,剩下的 8 個 bits 都是主機位址 (藍色是網路位址,綠色是主機位址)。
Class C 級 IP 範圍:192.0.0.0 ~ 223.255.255.0(前 3 個 bit 一定要是 110,所以前 16 個 bits 最大到 11011111.11111111.11111111,也就是 223.255.255)。
例如,可以透過 IP 就猜到 192.83.167 跟 192.83.167.254 是屬於同單位內的網段。(192.83.167 開頭是台中教,可能是比較晚申請或規模沒有台大那樣大所以只有拿到 Class C 級的 IP 吧)。
Class D
Class D 級 IP 比較特別,是拿來做群播用途,前 4 個 bits 是 1110 開頭,它也沒有主機位址,因為群播就是對另一個網段的所有主機做廣播,所以用這個理由來解釋也很說得過去。
Class D 級 IP 範圍:224.0.0.0 ~ 239.255.255.255(11101111.11111111.11111111.1111111 已經是 max 了,如果再加 1 開頭前 8 個 bits 就會進位到 11110000)。
額外補充 Class E
其實還有 Class E 等級,IP 是以 1111 開頭,但沒有被定義用途,所以這邊也沒有東西可以討論。
無法分配 IP 的主機位址全為 0 或 1
在分配 IP 的主機位址時,無法將其全部設成 0 或 1(請注意下圖綠色部分主機位址的數值)。
例如 Class C 的 192.168.1.0 或 192.168.1.255。
Class B 的 140.112.0.0 或 140.112.255.255。
Class A 的 10.0.0.0 或 10.255.255.255。
這是因為 IPv4 將每個網段的最開頭及最尾端的位址保留起來了。
每個網段最開頭的 IP 位址(也就是主機位址全為 0 的那個)是給任意、未知或不確定 IP 位址使用的。
例如,開啟了一個 Port,但只想限定我目前所屬網段的電腦能存取,於是我限定的 IP 就可以設為 192.168.1.0,如此一來,只有目前所屬網段 192.168.1.X 的設備能連上此 Port。
至於每個網段最尾端的 IP 位址(也就是主機位址全為 1 的那個)是將封包廣播給同網段內的所有設備用的。
例如,用 Wireshark 很常看到的 who has 封包,當某個裝置 ARP table 內沒有要發送的封包目的地 mac 位址。
就會發廣播封包詢問同個網段下的所有設備,有沒有人知道它的 mac 位址,請知道的人告訴某某這就是會把目的地 IP 的主機位址全設成 1 變成廣播封包的其中一種用途。
子網路遮罩(SubNetwork Mask)
隨著網路的普及,在 1990 年代後期逐漸發現用 Class A、Class B、Class C、Class D 來將 IP 分級很沒有效率,例如獲得一個 Class A 級 IP 的組織則有 16,777,216(2^24)個主機位址可用,很明顯的,沒有一個組織會有多達 1 千 6 百萬個裝置,並且歸在同個網段下(即便是一家超巨型跨國企業,也不會希望台北分公司可以直接存取紐約總公司的資 料庫);然而,獲得一個 Class C 級 IP 的組織卻只有 255(2^8)個主機位址能用,因此,多數的企業或組織轉而申請 Class B 級的 IP,導致大量的 Class B 級 IP 不敷使用,Class B 最多只能分配給 16,384(2^(6+8))個組織,將原本就很稀少(只有 2^7 個)的 Class A 級 IP 分配出去會造成太多浪費沒使用的主機位址,治不了標也治不了不治本;最後,船到橋頭自然直,採用了子網路遮罩的概念,不再特別強調 Class A、Class B、Class C,而是所有的 IP 位址都可以使用子網路遮罩來分割出自己的網段。
子網路遮罩與 IP(IPv4)位址類似,都是以 32 個 bits 的二進位來運算,運算結果是由子網路遮罩內,被 1 遮到的地方當成網路位址;被 0 遮到的地方當成主機位址。
例如,假如今天擁有 192.83.167.X(Class C 級的 IP)的台中教,希望將 192.83.167.1 到 192.83.167.254 的 IP 數量切一半,將 192.83.167.1 到 192.83.167.127 給電腦教室學生用,192.83.167.128 到 192.83.167.254 給教授及行政用(可以存取學校的 Server,例如上傳成績等),就可以將子網路遮罩設成 255.255.255.128,二進位相當於
設為 1 的 25 個 bits 決定網路位址,設為 0 的剩下 7 個 bits 決定主機位址,接下來,讓上面的 IP 經過子網路遮罩後
(藍色是遮罩後的網路位址,綠色是遮罩後的主機位址),可以看到,192.83.167 的 Class C 級網段又被我們再切成兩段了
最後 8 個 bits 0 到 127 為一個網段(_00000000 到 _01111111)
最後 8 個 bits 128 到 255 為另一個網段(_10000000 到 _11111111)
現在 Class C 級的 IP 有兩個網段了!
上面提到的無法分配 IP 的主機位址全為 0 或 1
除了原本的兩組 IP
192.83.167.0(最後 8 個 bits 為 00000000)
192.83.167.255(最後 8 個 bits 為 11111111)
現在又多了兩組 IP
192.83.167.127(最後 8 個 bits 為 01111111)
192.83.167.128(最後 8 個 bits 為 10000000)
這四組 IP 已經變成保留 IP 無法使用
192.83.167.0 及 192.83.167.128(最後決定主機位址的 7 個 bits 為 0000000)代表自己所屬網段任意、未知或不確定 IP 所使用的位址。
192.83.167.127 及 192.83.167.255(最後決定主機位址的 7 個 bits 為 1111111)代表自己所屬網段的廣播位 址。
不清楚的請參考上面無法分配 IP 的主機位址全為 0 或 1。