《用tcp/ip進行網際互聯》第9章 無分類和子網地址擴展(CIDR)

目前IP地址資源緊缺,爲了使得IP地址能夠高效地利用,所以發明了很多方式來節省或者“創造”出IP地址,這篇博文主要討論的就是這個方面。

第一種——代理ARP

我個人對這個東西的理解不透徹,只能談一些概念了。


假設有兩個物理網絡,但是都被H4這個路由器相連接,假設H1想和H5進行通信,發送ARP報文,由於ARP報文是廣播的,所以H4可以將其截獲,H4發現它可以把報文轉發給H5,所以,它將自己的物理地址反饋給H1,同時將報文傳給H5。同理,H2想要和H5通信,也是如此。這就是代理ARP。書上對這個方面的討論不是那麼詳細,我對此也很有疑問。

第二種——子網編址

這個處理方法在當前的網絡中的應用應該可以算得上是廣泛的了。


這裏路由器R連接了兩個物理網絡,如果沒有子網劃分的技巧,那麼應該申請兩個IP地址來分別標識兩個物理網絡,子網編址的出現改善了這種情況。在路由器R外部的其他網絡上來看這兩個物理網絡是一個網絡,但是在網絡內部,卻用本地部分的一個八位組來標識子網絡,其中一個子網絡是128.10.1.X另一個是128.10.2.X。


這裏可以看出本地部分被劃分出了兩個部分,一部分標識本地的物理網絡,另一個標識每個物理網絡上的主機。這裏需要有一個注意的地方,由於全0的本地部分和全1的本地部分有特殊的含義,所以在物理網絡和主機好這兩個部分不能出現全0和全1的情況。所以下面這幅圖就比較好理解了。


這裏就體現了子網劃分的靈活性,可以根據實際情況中的主機數量和物理網絡數量指定合適的子網劃分。

爲了區分本地部分的物理網絡地址,就需要子網掩碼,用子網掩碼和IP地址相與就能推算出本地部分的物理網絡地址。舉個例子,假設128.10.1.2這個IP地址有八位物理網絡地址(不考慮不連續的情況)那麼在這裏子網掩碼就是255.255.255.0。IP地址和子網掩碼相與得到128.10.1.0這個就是子網的網絡號。

我們之前介紹了IP數據報的標準轉發算法,其實子網轉發算法和標準轉發算法是可以同意起來了,只需要在路由表的每一項當中加入一個屬性——子網掩碼。我個人覺得書上給出的算法有些問題,這裏我參考了其他的書籍,認爲合理的算法應該是這樣的。

(1)從收到的數據報的首部提取目的IP地址D

(2)先查看是否是直接轉發。抽取與路由器相連接的網絡的子網掩碼,將掩碼和D相與得到網絡地址N,看網絡地址是否和對應的網絡地址相匹配,如果匹配就轉發,不匹配就說明是間接轉發,執行(3)

(3)查看路由表中是否有特定的路由,如果有則將數據報轉發給改路由器,否則執行(4)

(4)對路由表(目的網絡地址,子網掩碼,下一跳)中的每一行抽取子網掩碼,並用掩碼和D相與得到N,查看是否和目的網絡地址相同,如果相同,則將數據報傳給下一跳。

(5)查看是否有默認路由,如果有則將數據報轉發給默認路由,否則執行(6)

(6)轉發數據報出錯。

第三種——CIDR(無分類域間路由選擇)

CIDR的特點主要有兩個。

第一點,CIDR消除了傳統的A類,B類,C類地址以及劃分子網的概念,因此也就可以更好地分配IP地址空間。這個時候IP地址分爲兩個部分 IP地址 = {<網絡前綴> , <主機號>}。CIDR還使用斜線記法,在IP地址的後面加上/,再跟上網絡前綴的位數。

第二點,CIDR將網絡前綴相同的IP地址組成一個“CIDR”塊。給定一個斜線記法的IP地址,我們就可以很容易地得出這個CIDR塊的範圍。例如:128.14.35.7/20


當然,在這裏全0和全1的地址一般不會使用。 

CIDR 的功能一般被稱爲“構成超網”和“路由聚合”,可以有效地使路由表中的項數變少。 例如:206.0.64.0/18這個CIDR塊,如果按照分類的方法,那麼要想完全到達塊中的所有網絡需要64個路由表項(這個CIDR塊包含了64個C類網絡),而使用CIDR的表示方法,這裏就只需要1個路由表項。

現在路由表中只有網絡前綴和下一跳的地址,但是在CIDR的匹配過程中可能會出現兩個路由表項都成功的情況,這個時候應該選擇最長前綴匹配的方法。因爲這樣可以使得數據報到達的地方更爲具體,網絡前綴越短所包含的IP地址就越多,範圍就越不精確。

現在我們討論在使用CIDR情況下的路由轉發算法,由於路由轉發算法從某種程度上決定了一個網絡的吞吐率,所以,這個算法的速度尤爲重要,如何快速的選擇路由那?

首先將每個路由項中的目的地址取唯一前綴,再用唯一前綴構建一個二叉樹。這顆二叉樹的每一個葉節點都代表着一個目的網絡地址。







                                                                                                   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章