從原理出發(fā)學(xué)習(xí)路由協(xié)議
我們的網(wǎng)絡(luò)越來(lái)越龐大。那么支持這些網(wǎng)絡(luò)中信息的傳遞和收發(fā)的協(xié)議就是路由協(xié)議。這個(gè)可謂是網(wǎng)絡(luò)公路中的指引規(guī)則是如何形成的呢?今天我們就來(lái)了解一下路由協(xié)議的相關(guān)概念。首先還是讓我們來(lái)了解一下路由原理。
當(dāng)IP子網(wǎng)中的一臺(tái)主機(jī)發(fā)送IP分組給同一IP子網(wǎng)的另一臺(tái)主機(jī)時(shí),它將直接把IP分組送到網(wǎng)絡(luò)上,對(duì)方就能收到。而要送給不同IP于網(wǎng)上的主機(jī)時(shí),它要選擇一個(gè)能到達(dá)目的子網(wǎng)上的路由器,把IP分組送給該路由器,由路由器負(fù)責(zé)把IP分組送到目的地。如果沒(méi)有找到這樣的路由器,主機(jī)就把IP分組送給一個(gè)稱(chēng)為“缺省網(wǎng)關(guān)(default gateway)”的路由器上。“缺省網(wǎng)關(guān)”是每臺(tái)主機(jī)上的一個(gè)配置參數(shù),它是接在同一個(gè)網(wǎng)絡(luò)上的某個(gè)路由器端口的IP地址。
路由器轉(zhuǎn)發(fā)IP分組時(shí),只根據(jù)IP分組目的IP地址的網(wǎng)絡(luò)號(hào)部分,選擇合適的端口,把IP分組送出去。同主機(jī)一樣,路由器也要判定端口所接的是否是目的子網(wǎng),如果是,就直接把分組通過(guò)端口送到網(wǎng)絡(luò)上,否則,也要選擇下一個(gè)路由器來(lái)傳送分組。路由器也有它的缺省網(wǎng)關(guān),用來(lái)傳送不知道往哪兒送的IP分組。這樣,通過(guò)路由器把知道如何傳送的IP分組正確轉(zhuǎn)發(fā)出去,不知道的IP分組送給“缺省網(wǎng)關(guān)”路由器,這樣一級(jí)級(jí)地傳送,IP分組最終將送到目的地,送不到目的地的IP分組則被網(wǎng)絡(luò)丟棄了。
目前TCP/IP網(wǎng)絡(luò),全部是通過(guò)路由器互連起來(lái)的,Internet就是成千上萬(wàn)個(gè)IP子網(wǎng)通過(guò)路由器互連起來(lái)的國(guó)際性網(wǎng)絡(luò)。這種網(wǎng)絡(luò)稱(chēng)為以路由器為基礎(chǔ)的網(wǎng)絡(luò)(router based network),形成了以路由器為節(jié)點(diǎn)的“網(wǎng)間網(wǎng)”。在“網(wǎng)間網(wǎng)”中,路由器不僅負(fù)責(zé)對(duì)IP分組的轉(zhuǎn)發(fā),還要負(fù)責(zé)與別的路由器進(jìn)行聯(lián)絡(luò),共同確定“網(wǎng)間網(wǎng)”的路由選擇和維護(hù)路由表。
路由動(dòng)作包括兩項(xiàng)基本內(nèi)容:尋徑和轉(zhuǎn)發(fā)。尋徑即判定到達(dá)目的地的***路徑,由路由選擇算法來(lái)實(shí)現(xiàn)。由于涉及到不同的路由選擇協(xié)議和路由選擇算法,要相對(duì)復(fù)雜一些。為了判定***路徑,路由選擇算法必須啟動(dòng)并維護(hù)包含路由信息的路由表,其中路由信息依賴(lài)于所用的路由選擇算法而不盡相同。路由選擇算法將收集到的不同信息填入路由表中,根據(jù)路由表可將目的網(wǎng)絡(luò)與下一站(nexthop)的關(guān)系告訴路由器。路由器間互通信息進(jìn)行路由更新,更新維護(hù)路由表使之正確反映網(wǎng)絡(luò)的拓?fù)渥兓?,并由路由器根?jù)量度來(lái)決定***路徑。這就是路由選擇協(xié)議(routing protocol),例如路由信息協(xié)議(RIP)、開(kāi)放式最短路徑優(yōu)先協(xié)議(OSPF)和邊界網(wǎng)關(guān)協(xié)議(BGP)等。
轉(zhuǎn)發(fā)即沿尋徑好的***路徑傳送信息分組。路由器首先在路由表中查找,判明是否知道如何將分組發(fā)送到下一個(gè)站點(diǎn)(路由器或主機(jī)),如果路由器不知道如何發(fā)送分組,通常將該分組丟棄;否則就根據(jù)路由表的相應(yīng)表項(xiàng)將分組發(fā)送到下一個(gè)站點(diǎn),如果目的網(wǎng)絡(luò)直接與路由器相連,路由器就把分組直接送到相應(yīng)的端口上。這就是路由轉(zhuǎn)發(fā)協(xié)議(routed protocol)。
路由轉(zhuǎn)發(fā)協(xié)議和路由選擇協(xié)議是相互配合又相互獨(dú)立的概念,前者使用后者維護(hù)的路由表,同時(shí)后者要利用前者提供的功能來(lái)發(fā)布路由協(xié)議數(shù)據(jù)分組。下文中提到的路由協(xié)議,除非特別說(shuō)明,都是指路由選擇協(xié)議,這也是普遍的習(xí)慣。
路由協(xié)議
典型的路由選擇方式有兩種:靜態(tài)路由和動(dòng)態(tài)路由。
靜態(tài)路由是在路由器中設(shè)置的固定的路由表。除非網(wǎng)絡(luò)管理員干預(yù),否則靜態(tài)路由不會(huì)發(fā)生變化。由于靜態(tài)路由不能對(duì)網(wǎng)絡(luò)的改變作出反映,一般用于網(wǎng)絡(luò)規(guī)模不大、拓?fù)浣Y(jié)構(gòu)固定的網(wǎng)絡(luò)中。靜態(tài)路由的優(yōu)點(diǎn)是簡(jiǎn)單、高效、可靠。在所有的路由中,靜態(tài)路由優(yōu)先級(jí)***。當(dāng)動(dòng)態(tài)路由與靜態(tài)路由發(fā)生沖突時(shí),以靜態(tài)路由為準(zhǔn)。
動(dòng)態(tài)路由是網(wǎng)絡(luò)中的路由器之間相互通信,傳遞路由信息,利用收到的路由信息更新路由器表的過(guò)程。它能實(shí)時(shí)地適應(yīng)網(wǎng)絡(luò)結(jié)構(gòu)的變化。如果路由更新信息表明發(fā)生了網(wǎng)絡(luò)變化,路由選擇軟件就會(huì)重新計(jì)算路由,并發(fā)出新的路由更新信息。這些信息通過(guò)各個(gè)網(wǎng)絡(luò),引起各路由器重新啟動(dòng)其路由算法,并更新各自的路由表以動(dòng)態(tài)地反映網(wǎng)絡(luò)拓?fù)渥兓?。?dòng)態(tài)路由適用于網(wǎng)絡(luò)規(guī)模大、網(wǎng)絡(luò)拓?fù)鋸?fù)雜的網(wǎng)絡(luò)。當(dāng)然,各種動(dòng)態(tài)路由協(xié)議會(huì)不同程度地占用網(wǎng)絡(luò)帶寬和CPU資源。
靜態(tài)路由和動(dòng)態(tài)路由有各自的特點(diǎn)和適用范圍,因此在網(wǎng)絡(luò)中動(dòng)態(tài)路由通常作為靜態(tài)路由的補(bǔ)充。當(dāng)一個(gè)分組在路由器中進(jìn)行尋徑時(shí),路由器首先查找靜態(tài)路由,如果查到則根據(jù)相應(yīng)的靜態(tài)路由轉(zhuǎn)發(fā)分組;否則再查找動(dòng)態(tài)路由。