1.功能目的
1) 主要功能:負(fù)責(zé)點(diǎn)到點(diǎn)(point-to-point)的傳輸(這里的“點(diǎn)”指主機(jī)或路由器) 網(wǎng)絡(luò)層是為傳輸層提供服務(wù)的,傳送的協(xié)議數(shù)據(jù)單元稱為數(shù)據(jù)包或分組。該層的主要作用是解決如何使數(shù)據(jù)包通過各結(jié)點(diǎn)傳送的問題,即通過路徑選擇算法(路由)將數(shù)據(jù)包送到目的地。另外,為避免通信子網(wǎng)中出現(xiàn)過多的數(shù)據(jù)包而造成網(wǎng)絡(luò)阻塞,需要對(duì)流入的數(shù)據(jù)包數(shù)量進(jìn)行控制(擁塞控制)。當(dāng)數(shù)據(jù)包要跨越多個(gè)通信子網(wǎng)才能到達(dá)目的地時(shí),還要解決網(wǎng)際互連的問題。 2) 網(wǎng)絡(luò)地址: 網(wǎng)絡(luò)層地址由兩部分地址組成:網(wǎng)絡(luò)地址和主機(jī)地址。網(wǎng)絡(luò)地址是全局唯一的。 3)路由尋址:
1.通過路由選擇算法為分組通過通信子網(wǎng)選擇最佳路么.
2.網(wǎng)絡(luò)層協(xié)議
網(wǎng)絡(luò)層的主要協(xié)議:IP,ARP、RARP ARP協(xié)議用來找到目標(biāo)主機(jī)的Ethernet網(wǎng)卡Mac地址,IP則承載要發(fā)送的消息。數(shù)據(jù)鏈路層可以從ARP得到數(shù)據(jù)的傳送信息,而從IP得到要傳輸?shù)臄?shù)據(jù)信息。 1.IP協(xié)議IP協(xié)議是TCP/IP協(xié)議的核心,所有的TCP,UDP,IMCP,IGCP的數(shù)據(jù)都以IP數(shù)據(jù)格式傳輸。要注意的是,IP不是可靠的協(xié)議,這是說,IP協(xié)議沒有提供一種數(shù)據(jù)未傳達(dá)以后的處理機(jī)制--這被認(rèn)為是上層協(xié)議--TCP或UDP要做的事情。所以這也就出現(xiàn)了TCP是一個(gè)可靠的協(xié)議,而UDP就沒有那么可靠的區(qū)別。這是后話,暫且不提 |
IP地址 | 140.252.20.68 | 8C FC 14 44 |
子網(wǎng)掩碼 | 255.255.255.0 | FF FF FF 00 |
網(wǎng)絡(luò)號(hào) | 140.252.20.0 | 8C FC 14 00 |
子網(wǎng)地址范圍 | 140.252.20.0~140.252.20.255 |
劃分子網(wǎng)的例子2
IP地址 | 140.252.20.68 | 8C FC 14 44 |
子網(wǎng)掩碼 | 255.255.255.240 | FF FF FF F0 |
網(wǎng)絡(luò)號(hào) | 140.252.20.64 | 8C FC 14 40 |
子網(wǎng)地址范圍 | 140.252.20.64~140.252.20.79 |
可見,IP地址與子網(wǎng)掩碼做與運(yùn)算可以得到網(wǎng)絡(luò)號(hào),主機(jī)號(hào)從全0到全1就是子網(wǎng)的地址范圍。IP地址和子網(wǎng)掩碼還有一種更簡(jiǎn)潔的表示方法,例如140.252.20.68/24,表示IP地址為140.252.20.68,子網(wǎng)掩碼的高24位是1,也就是255.255.255.0。
如果一個(gè)組織內(nèi)部組建局域網(wǎng),IP地址只用于局域網(wǎng)內(nèi)的通信,而不直接連到Internet上,理論上使用任意的IP地址都可以,但是RFC 1918規(guī)定了用于組建局域網(wǎng)的私有IP地址,這些地址不會(huì)出現(xiàn)在Internet上,如下表所示。
10.*,前8位是網(wǎng)絡(luò)號(hào),共16,777,216個(gè)地址
172.16.*到172.31.*,前12位是網(wǎng)絡(luò)號(hào),共1,048,576個(gè)地址
192.168.*,前16位是網(wǎng)絡(luò)號(hào),共65,536個(gè)地址
使用私有IP地址的局域網(wǎng)主機(jī)雖然沒有Internet的IP地址,但也可以通過代理服務(wù)器或NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)等技術(shù)連到Internet上。
除了私有IP地址之外,還有幾種特殊的IP地址。127.*的IP地址用于本機(jī)環(huán)回(loop back)測(cè)試,通常是127.0.0.1。loopback是系統(tǒng)中一種特殊的網(wǎng)絡(luò)設(shè)備,如果發(fā)送數(shù)據(jù)包的目的地址是環(huán)回地址,或者與本機(jī)其它網(wǎng)絡(luò)設(shè)備的IP地址相同,則數(shù)據(jù)包不會(huì)發(fā)送到網(wǎng)絡(luò)介質(zhì)上,而是通過環(huán)回設(shè)備再發(fā)回給上層協(xié)議和應(yīng)用程序,主要用于測(cè)試。如下圖所示)。
還有一些不能用作主機(jī)IP地址的特殊地址:
目的地址為255.255.255.255,表示本網(wǎng)絡(luò)內(nèi)部廣播,路由器不轉(zhuǎn)發(fā)這樣的廣播數(shù)據(jù)包。
主機(jī)號(hào)全為0的地址只表示網(wǎng)絡(luò)而不能表示某個(gè)主機(jī),如192.168.10.0(假設(shè)子網(wǎng)掩碼為255.255.255.0)。
目的地址的主機(jī)號(hào)為全1,表示廣播至某個(gè)網(wǎng)絡(luò)的所有主機(jī),例如目的地址192.168.10.255表示廣播至192.168.10.0網(wǎng)絡(luò)(假設(shè)子網(wǎng)掩碼為255.255.255.0)。
下面介紹路由的過程,首先正式定義幾個(gè)名詞:
數(shù)據(jù)包從源地址到目的地址所經(jīng)過的路徑,由一系列路由節(jié)點(diǎn)組成。
某個(gè)路由節(jié)點(diǎn)為數(shù)據(jù)報(bào)選擇投遞方向的選路過程。
一個(gè)具有路由能力的主機(jī)或路由器,它維護(hù)一張路由表,通過查詢路由表來決定向哪個(gè)接口發(fā)送數(shù)據(jù)包。
路由節(jié)點(diǎn)與某個(gè)網(wǎng)絡(luò)相連的網(wǎng)卡接口。
由很多路由條目組成,每個(gè)條目都指明去往某個(gè)網(wǎng)絡(luò)的數(shù)據(jù)包應(yīng)該經(jīng)由哪個(gè)接口發(fā)送,其中最后一條是缺省路由條目。
路由表中的一行,每個(gè)條目主要由目的網(wǎng)絡(luò)地址、子網(wǎng)掩碼、下一跳地址、發(fā)送接口四部分組成,如果要發(fā)送的數(shù)據(jù)包的目的網(wǎng)絡(luò)地址匹配路由表中的某一行,就按規(guī)定的接口發(fā)送到下一跳地址。
路由表中的最后一行,主要由下一跳地址和發(fā)送接口兩部分組成,當(dāng)目的地址與路由表中其它行都不匹配時(shí),就按缺省路由條目規(guī)定的接口發(fā)送到下一跳地址。
假設(shè)某主機(jī)上的網(wǎng)絡(luò)接口配置和路由表如下:
$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:C2:8D:7E inet addr:192.168.10.223 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:420 (420.0 b) Interrupt:10 Base address:0x10a0 eth1 Link encap:Ethernet HWaddr 00:0C:29:C2:8D:88 inet addr:192.168.56.136 Bcast:192.168.56.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:603 errors:0 dropped:0 overruns:0 frame:0 TX packets:110 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:55551 (54.2 Kb) TX bytes:7601 (7.4 Kb) Interrupt:9 Base address:0x10c0 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:37 errors:0 dropped:0 overruns:0 frame:0 TX packets:37 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3020 (2.9 Kb) TX bytes:3020 (2.9 Kb) $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.10.0 * 255.255.255.0 U 0 0 0 eth0 192.168.56.0 * 255.255.255.0 U 0 0 0 eth1 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
這臺(tái)主機(jī)有兩個(gè)網(wǎng)絡(luò)接口,一個(gè)網(wǎng)絡(luò)接口連到192.168.10.0/24網(wǎng)絡(luò),另一個(gè)網(wǎng)絡(luò)接口連到192.168.56.0/24網(wǎng)絡(luò)。路由表的Destination是目的網(wǎng)絡(luò)地址,Genmask是子網(wǎng)掩碼,Gateway是下一跳地址,Iface是發(fā)送接口,F(xiàn)lags中的U標(biāo)志表示此條目有效(可以禁用某些條目),G標(biāo)志表示此條目的下一跳地址是某個(gè)路由器的地址,沒有G標(biāo)志的條目表示目的網(wǎng)絡(luò)地址是與本機(jī)接口直接相連的網(wǎng)絡(luò),不必經(jīng)路由器轉(zhuǎn)發(fā),因此下一跳地址處記為*號(hào)。
如果要發(fā)送的數(shù)據(jù)包的目的地址是192.168.56.3,跟第一行的子網(wǎng)掩碼做與運(yùn)算得到192.168.56.0,與第一行的目的網(wǎng)絡(luò)地址不符,再跟第二行的子網(wǎng)掩碼做與運(yùn)算得到192.168.56.0,正是第二行的目的網(wǎng)絡(luò)地址,因此從eth1接口發(fā)送出去,由于192.168.56.0/24正是與eth1接口直接相連的網(wǎng)絡(luò),因此可以直接發(fā)到目的主機(jī),不需要經(jīng)路由器轉(zhuǎn)發(fā)。
如果要發(fā)送的數(shù)據(jù)包的目的地址是202.10.1.2,跟前三行路由表?xiàng)l目都不匹配,那么就要按缺省路由條目,從eth0接口發(fā)出去,首先發(fā)往192.168.10.1路由器,再讓路由器根據(jù)它的路由表決定下一跳地址。
路由器在網(wǎng)絡(luò)層,所以是第三層設(shè)備。Internet上有大量路由器負(fù)責(zé)根據(jù)IP地址選擇合適的路徑轉(zhuǎn)發(fā)數(shù)據(jù)包,數(shù)據(jù)包從Internet上的源主機(jī)到目的主機(jī)往往要經(jīng)過十多個(gè)路由器。路由器是工作在第三層的網(wǎng)絡(luò)設(shè)備,同時(shí)兼有交換機(jī)的功能,可以在不同的鏈路層接口之間轉(zhuǎn)發(fā)數(shù)據(jù)包,因此路由器需要將進(jìn)來的數(shù)據(jù)包拆掉網(wǎng)絡(luò)層和鏈路層兩層首部并重新封裝。IP協(xié)議不保證傳輸?shù)目煽啃?,?shù)據(jù)包在傳輸過程中可能丟失,可靠性可以在上層協(xié)議或應(yīng)用程序中提供支持。
二層交換機(jī)和三層路由器是性能和功能的矛盾體,交換機(jī)交換速度快,但控制功能弱,路由器控制性能強(qiáng),但報(bào)文轉(zhuǎn)發(fā)速度慢。解決這個(gè)矛盾的最新技術(shù)是三層交換,既有交換機(jī)線速轉(zhuǎn)發(fā)報(bào)文能力,又有路由器良好的路由和尋址控制功能。
1)異種網(wǎng)絡(luò)的互聯(lián)
可用完全不同的數(shù)據(jù)分組和介質(zhì)訪問方法互聯(lián)各種子網(wǎng)。只接收源站或其他路由器的信息,而不關(guān)心各子網(wǎng)所用的硬件設(shè)備(但要求運(yùn)行與網(wǎng)絡(luò)層協(xié)議相一致的軟件)。
2)網(wǎng)絡(luò)地址判斷、最佳路由選擇和數(shù)據(jù)處理(加密/優(yōu)先級(jí)/過濾等)
3)支持復(fù)雜的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
4)絡(luò)互聯(lián)和路由選擇(中間節(jié)點(diǎn)路由器)
5)分隔子網(wǎng)和隔離廣播(邊界路由器)
路由器主要任務(wù)是接收來自一個(gè)網(wǎng)絡(luò)接口的數(shù)據(jù)包,根據(jù)其中所含的目的地址,決定轉(zhuǎn)發(fā)到下一個(gè)目的地址。因此,路由器首先得在轉(zhuǎn)發(fā)路由表中查找它的目的地址,若找到了目的地址,就在數(shù)據(jù)包的幀格前添加下一個(gè)MAC地址,同時(shí)IP數(shù)據(jù)包頭的TTL (Time To Live)域也開始減數(shù),并重新計(jì)算校驗(yàn)和。當(dāng)數(shù)據(jù)包被送到輸出端口時(shí),它需要按順序等待,以便被傳送到輸出鏈路上。
路由器在工作時(shí)能夠按照某種路由通信協(xié)議查找設(shè)備中的路由表。如果到某一特定節(jié)點(diǎn)有一條以上的路徑,則基本預(yù)先確定的路由準(zhǔn)則是選擇最優(yōu)(或最經(jīng)濟(jì))的傳輸路徑。由于各種網(wǎng)絡(luò)段和其相互連接情況可能會(huì)因環(huán)境變化而變化,因此路由情況的信息一般也按所使用的路由信息協(xié)議的規(guī)定而定時(shí)更新。
網(wǎng)絡(luò)中,每個(gè)路由器的基本功能都是按照一定的規(guī)則來動(dòng)態(tài)地更新它所保持的路由表,以便保持路由信息的有效性。為了便于在網(wǎng)絡(luò)間傳送報(bào)文,路由器總是先按照預(yù)定的規(guī)則把較大的數(shù)據(jù)分解成適當(dāng)大小的數(shù)據(jù)包,再將這些數(shù)據(jù)包分別通過相同或不同路徑發(fā)送出去。當(dāng)這些數(shù)據(jù)包按先后秩序到達(dá)目的地后,再把分解的數(shù)據(jù)包按照一定順序包裝成原有的報(bào)文形式。路由器的分層尋址功能是路由器的重要功能之一,該功能可以幫助具有很多節(jié)點(diǎn)站的網(wǎng)絡(luò)來存儲(chǔ)尋址信息,同時(shí)還能在網(wǎng)絡(luò)間截獲發(fā)送到遠(yuǎn)地網(wǎng)段的報(bào)文,起轉(zhuǎn)發(fā)作用;選擇最合理的路由,引導(dǎo)通信也是路由器基本功能;多協(xié)議路由器還可以連接使用不同通信協(xié)議的網(wǎng)絡(luò)段,成為不同通信協(xié)議網(wǎng)絡(luò)段之間的通信平臺(tái)。
一般來說,路由器的主要工作是對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)轉(zhuǎn)發(fā),具體過程如下:
第一步:當(dāng)數(shù)據(jù)包到達(dá)路由器,根據(jù)網(wǎng)絡(luò)物理接口的類型,路由器調(diào)用相應(yīng)的鏈路層功能模塊,以解釋處理此數(shù)據(jù)包的鏈路層協(xié)議報(bào)頭。這一步處理比較簡(jiǎn)單,主要是對(duì)數(shù)據(jù)的完整性進(jìn)行驗(yàn)證,如CRC校驗(yàn)、幀長(zhǎng)度檢查等。
第二步:在鏈路層完成對(duì)數(shù)據(jù)幀的完整性驗(yàn)證后,路由器開始處理此數(shù)據(jù)幀的IP層。這一過程是路由器功能的核心。根據(jù)數(shù)據(jù)幀中IP包頭的目的IP地址,路由器在路由表中查找下一跳的IP地址;同時(shí),IP數(shù)據(jù)包頭的TTL(Time To Live)域開始減數(shù),并重新計(jì)算校驗(yàn)和(Checksum)。
第三步:根據(jù)路由表中所查到的下一跳IP地址,將IP數(shù)據(jù)包送往相應(yīng)的輸出鏈路層,被封裝上相應(yīng)的鏈路層包頭,最后經(jīng)輸出網(wǎng)絡(luò)物理接口發(fā)送出去。
簡(jiǎn)單地說,路由器的主要工作就是為經(jīng)過路由器的每個(gè)數(shù)據(jù)包尋找一條最佳傳輸路徑,并將該數(shù)據(jù)包有效地傳送到目的站點(diǎn)。由此可見,選擇最佳路徑策略或叫選擇最佳路由算法是路由器的關(guān)鍵所在。為了完成這項(xiàng)工作,在路由器中保存著各種傳輸路徑的相關(guān)數(shù)據(jù)——路由表(Routing Table),供路由選擇時(shí)使用。上述過程描述了路由器的主要而且關(guān)鍵的工作過程,但沒有說明其它附加性能,例如訪問控制、網(wǎng)絡(luò)地址轉(zhuǎn)換、排隊(duì)優(yōu)先級(jí)等。
首先來看一下路由器是怎么工作的。對(duì)于普通用戶來說,所能夠接觸到的只是局域網(wǎng)的范圍,通過在PC上設(shè)置默認(rèn)網(wǎng)關(guān)就可以是局域網(wǎng)的計(jì)算機(jī)與Internet進(jìn)行通信,
其實(shí)在計(jì)算機(jī)上所設(shè)置的默認(rèn)網(wǎng)關(guān)就是路由器以太口的IP地址,如果局域網(wǎng)的計(jì)算機(jī)要和外面的計(jì)算機(jī)進(jìn)行通信,只要把請(qǐng)求提交給路由器的以太口就可以了,接下來的工作就由路由器來完成了。因此可以說路由器就是互聯(lián)網(wǎng)的中轉(zhuǎn)站,網(wǎng)絡(luò)中的包就是通過一個(gè)一個(gè)的路由器轉(zhuǎn)發(fā)到目的網(wǎng)絡(luò)的。
那么路由器是如何 進(jìn)行包的轉(zhuǎn)發(fā)的呢?就像一個(gè)人如果在去某個(gè)地方,一定要在他的腦海里有一張地圖,在每個(gè)路由器的內(nèi)部也有一張地圖,這張地圖就是路由表。
在這個(gè)路由表中包含有該路由器掌握的所有目地網(wǎng)絡(luò)地址,以及通過此路由器到達(dá)這些網(wǎng)絡(luò)中最佳路徑,這個(gè)最佳路徑指的是路由器的某個(gè)接口或下一條路由器的地址。
這是由于路由表的存在,路由器才可以依據(jù)路由表進(jìn)行包的轉(zhuǎn)發(fā),如下面圖所示網(wǎng)絡(luò)為例。介紹路由器轉(zhuǎn)發(fā)數(shù)據(jù)的過程。為了方便,將網(wǎng)段192.168.1.0/24簡(jiǎn)寫為0,其他網(wǎng)段也做類似處理。
主機(jī)1.1要發(fā)送數(shù)據(jù)包給主機(jī)4.1,因?yàn)镮P地址不再同一網(wǎng)段,主機(jī)會(huì)將數(shù)據(jù)包發(fā)送給本網(wǎng)段的網(wǎng)關(guān)路由器A。
路由器A接收到數(shù)據(jù)包,查看數(shù)據(jù)包IP中的目標(biāo)IP地址,在查找自己的路由表,數(shù)據(jù)包的目標(biāo)IP地址是4.1,屬于4.0網(wǎng)段,路由器A在路由表中查到4。0網(wǎng)段轉(zhuǎn)發(fā)的接口是SO接口。于是,路由表A將數(shù)據(jù)包從SO接口轉(zhuǎn)發(fā)出去。
網(wǎng)絡(luò)中的每個(gè)路由器都是按這樣的步驟去轉(zhuǎn)發(fā)數(shù)據(jù),直到到達(dá)了路由器B,用同樣的轉(zhuǎn)發(fā)方法,從EO口轉(zhuǎn)發(fā)出去,4.1主機(jī)接收發(fā)哦這個(gè)數(shù)據(jù)包。
在轉(zhuǎn)發(fā)數(shù)據(jù)的過程中,如果在路由表中沒有找到包的目的地地址,則根據(jù)路由器的配置轉(zhuǎn)發(fā)到默認(rèn)接口或者用戶返回目標(biāo)地址不可達(dá)的信息。
選路是IP層最重要的一個(gè)功能之一。前面的部分已經(jīng)簡(jiǎn)單的講過路由器是通過何種規(guī)則來根據(jù)IP數(shù)據(jù)包的IP地址來選擇路由。這里就不重復(fù)了。首先來看看一個(gè)簡(jiǎn)單的系統(tǒng)路由表。
對(duì)于一個(gè)給定的路由器,可以打印出五種不同的flag。
U沒啥可說的,G說明這是一個(gè)網(wǎng)關(guān),如果你要發(fā)數(shù)據(jù)給Destination,IP頭應(yīng)該寫Destination的IP地址,而數(shù)據(jù)鏈路層的MAC地址就應(yīng)該是GateWay的Mac地址了;反之,如果沒有G標(biāo)志,那么數(shù)據(jù)鏈路層和IP層的地址應(yīng)該是對(duì)應(yīng)的。H說明了Destination的性質(zhì),如果是H的,則說明該地址是一個(gè)完整的地址,既有網(wǎng)絡(luò)號(hào)又有主機(jī)號(hào),那么再匹配的時(shí)候就既要匹配網(wǎng)絡(luò)號(hào),又要匹配主機(jī)號(hào);反之,Destination就代表一個(gè)網(wǎng)絡(luò),在匹配的時(shí)候只要匹配一下網(wǎng)絡(luò)號(hào)就可以了。
這樣,IP選路的方式就可以更加具體化了。如下
順便提一下那個(gè)GenMask(還記得子網(wǎng)掩碼么),它指定了目的地址的子網(wǎng)號(hào),例如第一條的子網(wǎng)就是11。
一般,我們?cè)谂渲煤靡粋€(gè)網(wǎng)絡(luò)接口的時(shí)候,一個(gè)路由就被直接創(chuàng)建好了。當(dāng)然我們也可以手動(dòng)添加路由。用route add命令就可以了。
而當(dāng)一個(gè)IP包在某一個(gè)路由器的時(shí)候發(fā)現(xiàn)沒有路由可走,那么該路由器就會(huì)給源主機(jī)發(fā)送“主機(jī)不可達(dá)”或者“網(wǎng)絡(luò)不可達(dá)”的ICMP包來報(bào)錯(cuò)。
注意,一般的操作系統(tǒng)默認(rèn)是沒有路由功能的,這需要自己配置。這些歷史原因就不細(xì)說了,
當(dāng)IP包在某一個(gè)地方轉(zhuǎn)向的時(shí)候,都回給發(fā)送IP報(bào)的源主機(jī)一個(gè)ICMP重定向報(bào)文,而源主機(jī)就可以利用這個(gè)信息來更新自己的路由表,這樣,隨著網(wǎng)絡(luò)通信的逐漸增多,路由表也就越來越完備,數(shù)據(jù)轉(zhuǎn)發(fā)的速度也會(huì)越來越快。我們需要注意的是:
在主機(jī)引導(dǎo)的時(shí)候,一般會(huì)發(fā)送在網(wǎng)內(nèi)廣播一個(gè)路由請(qǐng)求的ICMP報(bào)文,而多個(gè)路由器則會(huì)回應(yīng)一個(gè)路由通告報(bào)文。而且,路由其本身不定期的在網(wǎng)絡(luò)內(nèi)發(fā)布路由通告報(bào)文,這樣,根據(jù)這些報(bào)文,每一個(gè)主機(jī)都會(huì)有機(jī)會(huì)建立自己的路由表而實(shí)現(xiàn)網(wǎng)絡(luò)通信。路由器在一份通告報(bào)文中可以通告多個(gè)地址,并且給出每一個(gè)地址的優(yōu)先等級(jí),這個(gè)優(yōu)先等級(jí)是該IP作為默認(rèn)路由的等級(jí),至于怎么算的就不深究了。
路由器一般會(huì)在450-600秒的時(shí)間間隔內(nèi)發(fā)布一次通告,而一個(gè)給定的通告報(bào)文的壽命是30分鐘。而主機(jī)在引導(dǎo)的時(shí)候會(huì)每三秒發(fā)送一次請(qǐng)求報(bào)文,一旦接受到一個(gè)有效的通告報(bào)文,就停止發(fā)送請(qǐng)求報(bào)文。
在TCP/IP詳解編寫的時(shí)候,只有Solaris2.x支持這兩種報(bào)文,大多數(shù)系統(tǒng)還不支持這兩種報(bào)文。(后面還會(huì)講到一些有用的路由報(bào)文)
前面的選路方法叫做靜態(tài)選路,簡(jiǎn)要地說就是在配置接口的時(shí)候,以默認(rèn)的方式生成路由表項(xiàng)。并通過route來增加表項(xiàng),或者通過ICMP報(bào)文來更新表項(xiàng)(通常在默認(rèn)方式出錯(cuò)的情況下)。 而如果上訴三種方法都不能滿足,那么我們就使用動(dòng)態(tài)選路。
動(dòng)態(tài)選路協(xié)議是用于動(dòng)態(tài)選路的重要組成部分,但是他們只是使用在路由器之間,相鄰路由器之間互相通信。系統(tǒng)(路有選擇程序)選擇比較合適的路有放到核心路由表中,然后系統(tǒng)就可以根據(jù)這個(gè)核心路有表找到最合適的網(wǎng)路。也就是說,動(dòng)態(tài)選路是在系統(tǒng)核心網(wǎng)絡(luò)外部進(jìn)行的,它只是用一些選路的策略影響路由表,而不會(huì)影響到最后通過路由表選擇路由的那一部分。選路協(xié)議有一大類常用的叫做內(nèi)部網(wǎng)關(guān)協(xié)議(IGP),而在IGP中,RIP就是其中最重要的協(xié)議。一種新的IGP協(xié)議叫做開放最短路經(jīng)優(yōu)先(OSPF)協(xié)議,其意在取代RIP。另一種最早用在網(wǎng)路骨干網(wǎng)上的IGP協(xié)議--HELLO,現(xiàn)在已經(jīng)不用了。
如今,任何支持動(dòng)態(tài)選路的路由器都必須同時(shí)支持OSPF和RIP,還可以選擇性的支持其他的IGP協(xié)議。
Unix系統(tǒng)上面通常都有路由守護(hù)程序--routed。還有一個(gè)叫做gate。gate所支持的協(xié)議要比routed多,routed只是支持RIPv1版本。而gate則支持RIPv1、v2,BGPv1 等等。
它的定義可以在RFC1058內(nèi)找到,這種協(xié)議使用UDP作為載體(也就是UDP的上層協(xié)議)。我們最關(guān)心的就是RIP其中的一個(gè)段,叫做度量的段,這是一個(gè)以hop作為計(jì)數(shù)器(就是以走過多少路由為計(jì)數(shù)器)的段(IP協(xié)議里面也有一個(gè)TTL不是么)。這個(gè)度量段將最終影響到路由表的建立。參考圖:
一般說來routed要承擔(dān)如下的工作:
這個(gè)協(xié)議看起來會(huì)工作的很好,但是,這里面其實(shí)有很多隱藏的憂患,比如說RIP沒有子網(wǎng)的概念,比如說環(huán)路的危險(xiǎn)。而且hop數(shù)的上限也限制了網(wǎng)絡(luò)的大小。
因此,出現(xiàn)了很多RIPv1的替代品,比如說RIPv2,比如說OSPF。他們都是通過某種策略來影響路由表,所以就不說了。
5、常用命令
1、 tracert命令
tracert/ traceroute(linux) IP地址或域名
2、router配置路由
|