基于類的地址系統(tǒng)工作的不錯,它在有效的地址使用和少量的網(wǎng)絡(luò)數(shù)目間做出了較好的折衷。但是隨著因特網(wǎng)意想不到的成長出現(xiàn)了兩個主要的問題:
已分配的網(wǎng)絡(luò)數(shù)目的增長使路由表大得難以管理,相當(dāng)程度上降低了路由器的處理速度。
僵化的地址分配方案使很多地址被浪費,尤其是B類地址十分匱乏。
為了解決第二個問題,可以分配多個較小的網(wǎng)絡(luò),例如,用多個C類網(wǎng)絡(luò)而不是一個B類網(wǎng)絡(luò)。雖然這樣能夠很有效地分配地址,但是更加劇了路由表的膨脹(第一個問題)。
在CIDR中,地址根據(jù)網(wǎng)絡(luò)拓?fù)鋪矸峙?。連續(xù)的一組網(wǎng)絡(luò)地址可以被分配給一個服務(wù)提供商,使整組地址作為一個網(wǎng)絡(luò)地址(很可能使用超網(wǎng)技術(shù))。例如:一個服務(wù)提供商被分配以256個C類地址,從213.79.0.0到213.79.255.0,服務(wù)提供商給每個用戶分配一個C類地址,但服務(wù)提供商外部的路由表只通過一個表項--掩碼為255.255.0.0的網(wǎng)絡(luò)213.79.0.0--來分辨這些路由。
這種方法明顯減少了路由表的增長,CIDR RFC的作者估計,如果90%的服務(wù)提供商使用了CIDR,路由表將以每3年54%的速度增長,而如果沒有使用CIDR,則增長速度為776%。如果可以重新組織現(xiàn)有的地址,則因特網(wǎng)骨干上的路由器廣播的路由數(shù)量將大大減少。但這實際是不可行的,因為將帶來巨大的管理負(fù)擔(dān)。
路由器 <四>
四、路由
1、路由表
如果一個主機有多個網(wǎng)絡(luò)接口,當(dāng)向一個特定的IP地址發(fā)送分組時,它怎樣決定使用哪個接口呢?答案就在路由表中。來看下面的例子:
目的 子網(wǎng)掩碼 網(wǎng)關(guān) 標(biāo)志 接口
201.66.37.0 255.255.255.0 201.66.37.74 U eth0
201.66.39.0 255.255.255.0 201.66.39.21 U eth1
主機將所有目的地為網(wǎng)絡(luò)201.66.37.0內(nèi)主機(201.66.37.1-201.66.37.254)的數(shù)據(jù)通過接口eth0(IP地址為201.66.37.74)發(fā)送,所有目的地為網(wǎng)絡(luò)201.66.39.0內(nèi)主機的數(shù)據(jù)通過接口eth1(IP地址為201.66.39.21)發(fā)送。標(biāo)志U表示該路由狀態(tài)為“up”(即激活狀態(tài))。對于直接連接的網(wǎng)絡(luò),一些軟件并不象上例中一樣給出接口的IP地址,而只列出接口。
此例只涉及了直接連接的主機,那么目的主機在遠(yuǎn)程網(wǎng)絡(luò)中如何呢?如果你通過IP地址為201.66.37.254的網(wǎng)關(guān)連接到網(wǎng)絡(luò)73.0.0.0,那么你可以在路由表中增加這樣一項:
目的
掩碼
網(wǎng)關(guān)
標(biāo)志
接口
73.0.0.0
255.0.0.0
201.66.37.254
UG
eth0
此項告訴主機所有目的地為網(wǎng)絡(luò)73.0.0.0內(nèi)主機的分組通過201.66.37.254路由過去。標(biāo)志G(gateway)表示此項把分組導(dǎo)向外部網(wǎng)關(guān)。類似的,也可以定義通過網(wǎng)關(guān)到達(dá)特定主機的路由,增加標(biāo)志H(host):
目的 掩碼 網(wǎng)關(guān) 標(biāo)志 接口
91.32.74.21 255.255.255.255 201.66.37.254 UGH eth0
下面是路由表的基礎(chǔ),除了特殊表項之外:
目的 掩碼 網(wǎng)關(guān) 標(biāo)志 接口
127.0.0.1 255.255.255.255 127.0.0.1 UH lo0
default 0.0.0.0 201.66.37.254 UG eth1
第一項是loopback接口,用于主機給自己發(fā)送數(shù)據(jù),通常用于測試和運行于IP之上但需要本地通信的應(yīng)用。這是到特定地址127.0.0.1的主機路由(接口lo0是IP協(xié)議棧內(nèi)部的“假”網(wǎng)卡)。第二項十分有意思,為了防止在主機上定義到因特網(wǎng)上每一個可能到達(dá)網(wǎng)絡(luò)的路由,可以定義一個缺省路由,如果在路由表中沒有與目的地址相匹配的項,該分組就被送到缺省網(wǎng)關(guān)。多數(shù)主機簡單地通過一個網(wǎng)卡連接到網(wǎng)絡(luò),因此只有通過一個路由器到其它網(wǎng)絡(luò),這樣在路由表中只有三項:loopback項、本地子網(wǎng)項和缺省項(指向路由器)。
2、重疊路由
假設(shè)在路由表中有下列重疊項:
目的 掩碼 網(wǎng)關(guān) 標(biāo)志 接口
1.2.3.4 255.255.255.255 201.66.37.253 UGH eth0
1.2.3.0 255.255.255.0 201.66.37.254 UG eth0
1.2.0.0 255.255.0.0 201.66.37.253 UG eth1
default 0.0.0.0 201.66.39.254 UG eth1
之所以說這些路由重疊是因為這四個路由都含有地址1.2.3.4,如果向1.2.3.4發(fā)送數(shù)據(jù),會選擇哪條路由呢?在這種情況下,會選擇第一條路由,通過網(wǎng)關(guān)201.66.37.253。原則是選擇具有最長(最精確)的子網(wǎng)掩碼。類似的,發(fā)往1.2.3.5的數(shù)據(jù)選擇第二條路由。
注意:這條原則只適用于間接路由(通過網(wǎng)關(guān))。把兩個接口定義在同一子網(wǎng)在很多軟件實現(xiàn)上是非法的。例如下面的設(shè)置通常是非法的(不過有些軟件將嘗試在兩個接口進(jìn)行負(fù)載平衡):
接口 IP地址 子網(wǎng)掩碼
eth0 201.66.37.1 255.255.255.0
eth1 201.66.37.2 255.255.255.0
對于重疊路由的策略是十分有用的,它允許缺省路由作為目的為0.0.0.0、子網(wǎng)掩碼為0.0.0.0的路由進(jìn)行工作,而不需要作為路由軟件的一個特殊情況來實現(xiàn)。


