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