CIDR(Classless Inter-Domain Routing),是IPv4地址分配和路由表選擇的一種靈活且高效的方法。在過去,IPv4地址空間被劃分為固定大小的網絡類別,如A、B和C類,但這導致了地址空間的浪費。CIDR的引入旨在解決這個問題,它允許更靈活地分配IP地址,並更有效地利用地址空間。
CIDR的核心思想是將IP地址劃分為前綴和後綴兩部分,其中前綴表示網絡的標識,而後綴表示主機的標識。CIDR使用斜線符號(/)後跟一個前綴長度來表示地址塊。前綴長度指定了網絡部分的位數,即網絡前綴的長度。這使得網絡管理員可以根據需要劃分和分配IP地址,而不再受到固定類別的限制。
舉例來説,考慮一個CIDR表示法的IPv4地址塊:192.168.1.0/24。在這裏,192.168.1.0是網絡的基本地址,而/24表示前綴長度為24位。這意味着前24位用於網絡標識,剩餘的8位用於主機標識。通過這個CIDR表示法,我們可以輕鬆理解這個地址塊包含了從192.168.1.0到192.168.1.255的所有主機。
CIDR還支持更靈活的前綴長度,例如,10.0.0.0/8表示一個具有8位前綴的地址塊,包含了從10.0.0.0到10.255.255.255的所有地址。相比之下,10.0.0.0/16表示一個具有16位前綴的子網,包含了從10.0.0.0到10.0.255.255的所有地址。
CIDR的靈活性在路由表選擇方面也非常明顯。傳統的路由表需要包含多個條目來表示不同的網絡類別,而CIDR允許更緊湊的路由表,減少了路由表的大小,提高了路由的效率。這對於全球互聯的大規模互聯網至關重要,因為它降低了路由表的維護成本,並提高了網絡的性能。
CIDR的實施也促使了VLSM(Variable Length Subnet Masking)的廣泛應用,使網絡管理員能夠在同一網絡內使用不同的子網掩碼,進一步提高了IP地址的利用率。
總的來説,CIDR作為一種地址分配和路由選擇的技術,通過引入前綴長度的概念,使得IP地址的分配更加靈活,減少了地址空間的浪費,提高了路由表的效率,是互聯網發展中的一項重要創新。
CIDR,或者完全稱為 Classless Inter-Domain Routing,是我們在網絡編程領域非常常用的一個概念。它是一種用於 IP 地址分配和路由選擇的方法,其特色就在於沒有預定義的網絡類別,而是在每一個 IP 地址後面加上一個「斜線格式」的網絡前綴長度。這樣一來,一個 CIDR 符號既包含了一個 IP 地址,也表明了子網掩碼的長度,方便我們準確地劃定和識別網絡範圍。值得注意的是,CIDR 提供的子網範圍可以非常靈活,而且還節省了大量 IP 地址。
比如我們看到的 192.168.1.0/24,這個就是一個典型的 CIDR 符號。其中 192.168.1.0 是一個 IPv4 地址,/24 則指明瞭網絡前綴長度是 24 位。因此,我們可以説,這個 CIDR 範圍覆蓋了從 192.168.1.0 到 192.168.1.255 的全部 IP 地址。也就是説,屬於 192.168.1.0/24 這個 CIDR 範圍的 IP 地址,前面 24 位都是固定的 192.168.1,只有後面 8 位是可變的,所以共有 256 個(2 的 8 次方)可能的 IP 地址。
這就是 CIDR 的基本概念和標準示例。但是你也許還會有疑問,為什麼我們需要 CIDR 呢?其實這跟 IP 地址的歷史演變有關。早期的互聯網使用的是所謂的「分類」 IP 地址。這個「分類」並不是説 IP 地址本身有什麼區別,而是根據 IP 地址的前幾位,把它們分成 A、B、C、D、E 5 類。這5類 IP 地址,每類符合特定的前綴,分配給特定的網絡。但是這種方案在 IP 地址分配上非常不均勻,導致出現一些 IP 地址過剩,一些 IP 地址嚴重不足的情況。
CIDR 就是為了解決這個問題而出現的。它擯棄了「分類」的概念,取而代之的,是任意長度的子網掩碼。我們可以根據實際需要,靈活地劃分出不同大小的網絡,就像剛才那個 192.168.1.0/24 CIDR,網絡前綴長度可以是任何從 0 到 32 的數字。這樣,我們不僅僅可以更好地滿足網絡規劃的需求,還可以高效地節省 IP 地址,防止其浪費。
另一方面,CIDR 在路由選擇上也有很大的優勢。由於 CIDR 允許我們自由地劃分網絡範圍,那麼更大的網絡可以用一個 CIDR 表達,減少路由表項的數量。比如在連續的 IP 地址段中,以前可能需要多個 B 類地址表示的網絡,現在使用 CIDR 可以簡化為一個表達式,大大降低了路由器的路由表容量,提升了路由效率。
思考到這裏,你也許已經看到了 CIDR 的威力了。它在 IP 地址分配和路由選擇上的優越性,讓我們的網絡變得更加靈活、高效。而且,無論是 IPv4 還是 IPv6,CIDR 都可以勝任。我們在實踐中,經常會涉及到 CIDR。無論是在寫網絡程序,還是在配置路由器、防火牆,甚至在設計大型的互聯網架構,CIDR 都是我們的重要工具。