Classful 和 Classless IP 一定是剛接觸網路的會有疑惑的的點
但其實他們是非常好懂的 可以先從定義、網路大小來瞭解
從這幾點中可以看出為何 Classless 成為現代常用的定址系統
但為什麼還是常聽到 Classful 的網路呢
我們先可以看看 RFC1918 這個規範的定義
他定義了 3 組 Private 的 IP 分別為
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
這三組 IP 剛好就是基於 Class A,B,C 來定義的
每一個 Class 有一個自己的 Private IP Range
時至今日 我們依舊在使用這三組 Private IP 來建立自己的內網環境
當有人說出 Class A Private IP 時就能清楚的理解他說的網段 Range 是多少
而還有一部分是因 Multicast(多播) 使用的網段也還是依照 Classful 的 D 段網路定義
在開始規劃網路前先來瞭解一下 Classless IP 的計算
如果要計算一個網路的網段
通常會先拿到一個 IP 和他的子網路遮罩
以 192.168.0.4 和 /24 來做舉例
先把十進制的 IP 和遮罩換成二進制表示來看
(/24 是以二進制表示時有 24 個 1 存在)
11000000.10101000.00000000.00000100 # IP
11111111.11111111.11111111.00000000 # 遮罩
可以想像沒被子網路遮罩罩住的 bit 是能更動的
11000000.10101000.00000000.00000100 # IP
11111111.11111111.11111111.00000000 # 遮罩
00000000.00000000.00000000.11111111 # 結果(Wildcard)
也就是得到最後的 8Bit 是能夠更動的
接著來找這個網段的網路IP(第一個IP)
把剛剛知道能更動的 Bit 全部歸0就可以找到
11000000.10101000.00000000.00000100 # IP
00000000.00000000.00000000.11111111 # 可更動範圍
11000000.10101000.00000000.00000000 # 網路位置
再來把廣播IP(最後一個IP)找到 就知道範圍了
把能更動的 Bit 全部添1就可以找到
11000000.10101000.00000000.00000100 # IP
00000000.00000000.00000000.11111111 # 可更動範圍
11000000.10101000.00000000.11111111 # 廣播位置
最後再把二進制換回十進制就能得到答案了
也就是得到 192.168.0.0 和 192.168.0.255
而扣除了這兩個 IP 就是我們能使用的 IP Range 了
這邊我再提供一個簡單許多的方法
假設把 11111111(255) 每一個bit分別換成十進制會得到
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 這八個數字
把子網路遮罩換成這樣表示再用加減乘除就能知道網段網路和廣播 IP
以 192.168.0.0/25 來說
25 的遮罩是第三個小數點後 10000000 也就是 128
256(8b 內所有的 IP 數量) - 128(剛剛得出來的數字) = 128 就得到這個網段所有 IP 數
0 / 128 = 0 , 也就是說他是第一個( 以 0 作為第一組開始算)
算出他在第幾個網段找出他的網路 IP, 0 代表就是第一個組網段
由於是第一組網段就由 0 (8bit 內第一個 IP) 開始算
0 + 128(遮罩) - 1(廣播 IP 占掉的) = 127
就能知道這一個網段是 192.168.0.0 ~ .127
下一段是 127 + 1 (下一個 IP) = 128 (第二個網段的起始 IP)
128 + 128 - 1 = 255
這樣子就能快速推出網段範圍
而當今天是給比較複雜的 IP 也是能計算
以 12.34.56.78/20 作為目標找出他的網段範圍
先把 /20 料理成第二個小數點後 11110000 也就是 240(128 + 64 + 32 + 16)
256 - 240 = 16
56 / 16 = 3 (算出他在第幾個網段找出他的網路 IP)
0 + 16 * 3 = 48
這邊就能得出網路 IP 是 12.34.48.0 接著算廣播 IP
48 + 16 - 1 = 63
就得到廣播 IP 為 12.34.63.255
這樣就能非常有效率的計算 IP 位置了