我們都學過把原本大網絡分成若干小網絡的劃分子網。但是大家可曾聽說過把原本數量眾多的小網絡匯聚成一個大網絡的超網嗎?
沒有錯!我們今天的主角——構成超網,就是通過對IP地址的原有格式進行升級重組,進而產生的一種更為神奇的組網方式。
究竟有多“神奇”呢?讓我們接著往下看
01 ? 超網到底是什么東西?
構成超網也稱CIDR(Classless Inter-Domain Routing,無類別域間路由選擇)。
簡單來說,它就是一種將多個同類IP地址聚合成一個”地址塊“的方法。超網的誕生使我們可以更加有效地分配 IPv4地址空間。
超網的運用可以使IPv6在大規模使用前容許互聯網的規模繼續增長。
02 ? 為什么要構成超網?
在傳統的按照IP地址分類的方法中,不管是哪一類地址,網絡號和主機號所占的長度都是固定不變的,只要確定了這個地址的網絡號,那就是固定長度。
這種“頑固”的分類方法不僅使用起來不太靈活,同時也直接導致了路由器在交換路由表時所產生信息的冗余。
?
因此采用路由聚合構造超網,有利于減少路由器之間的路由選擇信息的交換,從而提高了整個互聯網的性能,避免路由信息的冗余。構成超網在進行一番聚合操作后,原本包含成千上萬條轉發信息的路由表搖身一變,“瘦”成了可能只有幾條路由表項的路由表Mini。
03 ? 超網是如何進行聚合的?
接下來讓我們看個小例子,如下圖所示,在沒有進行構造超網之前, 路由器每進行一次路由信息交換,R2就會收到R1更新的5條路由信息。

(此處省略十進制與二進制的轉換關系,畢竟我們都是機智的通信人)
而構成超網會把網絡前綴都相同的IP地址組成一個“CIDR地址塊”,又稱聚合地址塊。
將上圖的五條地址轉為二進制后,我們發現它們的前20位都是相同的,于是乎,將這20位取出來作為地址塊中的共同前綴,而剩余的12位將默認補0作為地址塊中的主機號。
這五條地址信息進行聚合后,就形成了一個CIDR地址塊:168.100.128.0/20。此時,R2在接收R1的路由轉發表時,就只會收到一條CIDR地址信息了。
CIDR還使用“斜線記法”,即在IP地址后面加上斜線“/”,然后寫上網絡前綴所占的位數。

我們只要知道CIDR地址塊中的任何一個地址,再將地址中的主機號改成全0或全1,就可以得到這個地址塊中的最小地址和最大地址,而最大地址和最小地址之間所包含的這一片連續的地址,都可以用這個CIDR地址塊來表示。同時,根據地址塊中主機號的位數n,我們也可以得到這個地址塊中可以指派的地址數:2n-2。
“減2”是因為主機號為全0和全1的兩個地址為特殊地址,一般不作為源地址或者目的地址使用。
聚合得出的168.100.128.0/20,把它展開成二進制后,這個地址所在的地址塊中的最小地址和最大地址可以很方便地得出,如下表所示。
?
| 最小地址 | 168.100.128.0 | 10101000.01100100.1000 0000.00000000 |
| 最大地址 | 168.100.143.255 | 10101000.01100100.1000 1111.11111111 |
?
不難算出,這個地址塊中能夠包含4096個地址(4094個可以指派的地址)。我們可以用地址塊中的最小地址和網絡前綴的位數指明這個地址塊。例如,上面的最小地址塊可記為168.100.128.0/20。
我們驚奇地發現,這個最小地址居然與前文提到的聚合地址時一模一樣的呀!
04 ? 超網是如何進行匹配的?
那既然提到了CIDR地址塊,就不能不提到與之相對應的最長前綴匹配機制。
這是因為我們在查找路由表項進行路由選擇時可能得到不止一個匹配結果。這樣就帶來一個問題:我們應當從這些匹配的結果中選擇哪一條路由呢?
直接公布正確答案:應當從匹配結果中選擇具有最長網絡前綴的路由。
當路由器收到一個IP數據包時,它會將數據包的目的IP地址與自己本地路由表中的所有路由表項分別進行逐位對比,對比完畢后,選擇與之匹配度最長的路由表項。
舉個例子:
假如本座5樓現在收到了一封X部門發往Y部門的郵件,已知Y部門的IP地址為:192.31.71.128,途經5樓的一個路由器現有的路由表項信息分別為:192.31.71.0/26、192.31.68.0/22,那么該路由器在收到這封郵件后應該發往哪個下一跳地址呢?
| 路由表項 | 對應的子網掩碼 | 下一跳地址 |
| 192.31.71.0/26 | 11111111.11111111.11111111.11000000 | 192.31.31.19 |
| 192.31.68.0/22 | 11111111.11111111.11111100.00000000 | 192.31.31.89 |
|
目的地址 :192.31.71.128 所對應的二進制數為:11000000.00011111.01000111.10000000 |
||
Tips
這里需要解釋的是,雖然CIDR不使用子網了,但由于目前仍有一些網絡還在使用子網劃分和子網掩碼,為了更方便地進行路由選擇,CIDR所使用的32位地址掩碼也可繼續稱為子網掩碼。
例如,/20地址塊的地址掩碼是:11111111 11111111 11110000 00000000 (20個連續的1)。斜線記法中,斜線后面的數字就是地址掩碼中1的個數。
將每一個路由表項所對應的子網掩碼與目的地址的二進制展開式兩兩進行“邏輯與”運算后再轉換為十進制可得:192.31.71.0、192.31.68.0,運算步驟如下圖所示:

我們發現:經過運算后所得到的地址都與對應路由表項相匹配,說明表中兩條路由信息都可以作為下一跳地址進行分配。
But!根據最長前綴匹配機制,我們應該選擇路由表項1所對應的下一跳地址作為轉發地址,這是因為網絡前綴越長,地址塊越小,路由就越具體。
05 總結一下下~
CIDR消除了傳統的A,B,C類地址和劃分子網的概念,更有效地分配IPv4的地址空間,使IP地址從三級編址(網絡號,子網號,主機號)又回到無分類的兩級編址,如下圖所示。

CIDR還使用“斜線記法”,即在IP地址后面加上“/”然后指明網絡前綴所占的位數。CIDR把網絡前綴都相同的連續IP地址組成一個“CIDR地址塊”,即構成超網。
在使用CIDR時,在路由表中可能會有不止一個匹配結果,這時應當從所有匹配結果中選擇能夠匹配更長網絡前綴的路由,因為網絡前綴越長,其地址塊就越小,所得路由就越具體。
編輯:黃飛
?
電子發燒友App






















評論