我們都學過把原本大網(wǎng)絡分成若干小網(wǎng)絡的劃分子網(wǎng)。但是大家可曾聽說過把原本數(shù)量眾多的小網(wǎng)絡匯聚成一個大網(wǎng)絡的超網(wǎng)嗎?
沒有錯!我們今天的主角——構(gòu)成超網(wǎng),就是通過對IP地址的原有格式進行升級重組,進而產(chǎn)生的一種更為神奇的組網(wǎng)方式。
究竟有多“神奇”呢?讓我們接著往下看
01 ? 超網(wǎng)到底是什么東西?
構(gòu)成超網(wǎng)也稱CIDR(Classless Inter-Domain Routing,無類別域間路由選擇)。
簡單來說,它就是一種將多個同類IP地址聚合成一個”地址塊“的方法。超網(wǎng)的誕生使我們可以更加有效地分配 IPv4地址空間。
超網(wǎng)的運用可以使IPv6在大規(guī)模使用前容許互聯(lián)網(wǎng)的規(guī)模繼續(xù)增長。
02 ? 為什么要構(gòu)成超網(wǎng)?
在傳統(tǒng)的按照IP地址分類的方法中,不管是哪一類地址,網(wǎng)絡號和主機號所占的長度都是固定不變的,只要確定了這個地址的網(wǎng)絡號,那就是固定長度。
這種“頑固”的分類方法不僅使用起來不太靈活,同時也直接導致了路由器在交換路由表時所產(chǎn)生信息的冗余。
?
因此采用路由聚合構(gòu)造超網(wǎng),有利于減少路由器之間的路由選擇信息的交換,從而提高了整個互聯(lián)網(wǎng)的性能,避免路由信息的冗余。構(gòu)成超網(wǎng)在進行一番聚合操作后,原本包含成千上萬條轉(zhuǎn)發(fā)信息的路由表搖身一變,“瘦”成了可能只有幾條路由表項的路由表Mini。
03 ? 超網(wǎng)是如何進行聚合的?
接下來讓我們看個小例子,如下圖所示,在沒有進行構(gòu)造超網(wǎng)之前, 路由器每進行一次路由信息交換,R2就會收到R1更新的5條路由信息。
(此處省略十進制與二進制的轉(zhuǎn)換關系,畢竟我們都是機智的通信人)
而構(gòu)成超網(wǎng)會把網(wǎng)絡前綴都相同的IP地址組成一個“CIDR地址塊”,又稱聚合地址塊。
將上圖的五條地址轉(zhuǎn)為二進制后,我們發(fā)現(xiàn)它們的前20位都是相同的,于是乎,將這20位取出來作為地址塊中的共同前綴,而剩余的12位將默認補0作為地址塊中的主機號。
這五條地址信息進行聚合后,就形成了一個CIDR地址塊:168.100.128.0/20。此時,R2在接收R1的路由轉(zhuǎn)發(fā)表時,就只會收到一條CIDR地址信息了。
CIDR還使用“斜線記法”,即在IP地址后面加上斜線“/”,然后寫上網(wǎng)絡前綴所占的位數(shù)。
我們只要知道CIDR地址塊中的任何一個地址,再將地址中的主機號改成全0或全1,就可以得到這個地址塊中的最小地址和最大地址,而最大地址和最小地址之間所包含的這一片連續(xù)的地址,都可以用這個CIDR地址塊來表示。同時,根據(jù)地址塊中主機號的位數(shù)n,我們也可以得到這個地址塊中可以指派的地址數(shù):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個可以指派的地址)。我們可以用地址塊中的最小地址和網(wǎng)絡前綴的位數(shù)指明這個地址塊。例如,上面的最小地址塊可記為168.100.128.0/20。
我們驚奇地發(fā)現(xiàn),這個最小地址居然與前文提到的聚合地址時一模一樣的呀!
04 ? 超網(wǎng)是如何進行匹配的?
那既然提到了CIDR地址塊,就不能不提到與之相對應的最長前綴匹配機制。
這是因為我們在查找路由表項進行路由選擇時可能得到不止一個匹配結(jié)果。這樣就帶來一個問題:我們應當從這些匹配的結(jié)果中選擇哪一條路由呢?
直接公布正確答案:應當從匹配結(jié)果中選擇具有最長網(wǎng)絡前綴的路由。
當路由器收到一個IP數(shù)據(jù)包時,它會將數(shù)據(jù)包的目的IP地址與自己本地路由表中的所有路由表項分別進行逐位對比,對比完畢后,選擇與之匹配度最長的路由表項。
舉個例子:
假如本座5樓現(xiàn)在收到了一封X部門發(fā)往Y部門的郵件,已知Y部門的IP地址為:192.31.71.128,途經(jīng)5樓的一個路由器現(xiàn)有的路由表項信息分別為:192.31.71.0/26、192.31.68.0/22,那么該路由器在收到這封郵件后應該發(fā)往哪個下一跳地址呢?
路由表項 | 對應的子網(wǎng)掩碼 | 下一跳地址 |
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 所對應的二進制數(shù)為:11000000.00011111.01000111.10000000 |
Tips
這里需要解釋的是,雖然CIDR不使用子網(wǎng)了,但由于目前仍有一些網(wǎng)絡還在使用子網(wǎng)劃分和子網(wǎng)掩碼,為了更方便地進行路由選擇,CIDR所使用的32位地址掩碼也可繼續(xù)稱為子網(wǎng)掩碼。
例如,/20地址塊的地址掩碼是:11111111 11111111 11110000 00000000 (20個連續(xù)的1)。斜線記法中,斜線后面的數(shù)字就是地址掩碼中1的個數(shù)。
將每一個路由表項所對應的子網(wǎng)掩碼與目的地址的二進制展開式兩兩進行“邏輯與”運算后再轉(zhuǎn)換為十進制可得:192.31.71.0、192.31.68.0,運算步驟如下圖所示:
我們發(fā)現(xiàn):經(jīng)過運算后所得到的地址都與對應路由表項相匹配,說明表中兩條路由信息都可以作為下一跳地址進行分配。
But!根據(jù)最長前綴匹配機制,我們應該選擇路由表項1所對應的下一跳地址作為轉(zhuǎn)發(fā)地址,這是因為網(wǎng)絡前綴越長,地址塊越小,路由就越具體。
05 總結(jié)一下下~
CIDR消除了傳統(tǒng)的A,B,C類地址和劃分子網(wǎng)的概念,更有效地分配IPv4的地址空間,使IP地址從三級編址(網(wǎng)絡號,子網(wǎng)號,主機號)又回到無分類的兩級編址,如下圖所示。
CIDR還使用“斜線記法”,即在IP地址后面加上“/”然后指明網(wǎng)絡前綴所占的位數(shù)。CIDR把網(wǎng)絡前綴都相同的連續(xù)IP地址組成一個“CIDR地址塊”,即構(gòu)成超網(wǎng)。
在使用CIDR時,在路由表中可能會有不止一個匹配結(jié)果,這時應當從所有匹配結(jié)果中選擇能夠匹配更長網(wǎng)絡前綴的路由,因為網(wǎng)絡前綴越長,其地址塊就越小,所得路由就越具體。
編輯:黃飛
?
評論
查看更多