<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          萬字長文爆肝路由協(xié)議!

          共 8787字,需瀏覽 18分鐘

           ·

          2022-05-31 23:43

          想必我們大家都鼓搗過路由器,路由器可以說是我們?nèi)粘I钪斜夭豢缮俚囊粋€(gè)裝備了,就算你不是程序員,想必你隔壁的七大姑八大姨估計(jì)也讓你配置過路由器。但是大家有沒有想過一個(gè)問題,這個(gè)路由器是干啥用的?你可能知道這是為終端設(shè)備提供 WI-FI 連接上網(wǎng)的一種設(shè)備,當(dāng)我們終端設(shè)備連接 WI-FI 后,就可以通過路由器把數(shù)據(jù)從我的設(shè)備傳到我想要的地方(其他終端設(shè)備),然后實(shí)現(xiàn)我想要的東西和內(nèi)容。

          這個(gè)回答整體上是能說通的,但是這里我就要問你一個(gè)問題了。

          路由器是如何把數(shù)據(jù)發(fā)送給其他路由器的呢?

          這個(gè)問題要回答上來,就要從路由協(xié)議來說起了。

          在互聯(lián)網(wǎng)中,不管是局域網(wǎng)還是廣域網(wǎng),一個(gè)數(shù)據(jù)包是可以通過合理的路由控制從一個(gè)終端傳輸?shù)搅硪粋€(gè)終端的。而起到控制這個(gè)數(shù)據(jù)包發(fā)送過程就是路由控制模塊,路由控制模塊遵循路由協(xié)議,路由協(xié)議是整個(gè)互聯(lián)網(wǎng)的數(shù)據(jù)路由的規(guī)范和標(biāo)準(zhǔn)。

          路由

          為了能夠讓數(shù)據(jù)包正確的到達(dá)目標(biāo)主機(jī),路由器必須要在數(shù)據(jù)發(fā)送的過程中進(jìn)行正確的轉(zhuǎn)發(fā),這也是路由器的第一個(gè)作用:數(shù)據(jù)處理,除了能夠轉(zhuǎn)發(fā)外,數(shù)據(jù)處理還包括對(duì)數(shù)據(jù)進(jìn)行分組過濾、加密、壓縮等。

          那么路由器是怎么知道這個(gè)數(shù)據(jù)是要發(fā)往哪里的呢?

          路由器內(nèi)部維護(hù)了一個(gè)路由表,這個(gè)路由表會(huì)記錄數(shù)據(jù)包中目標(biāo)主機(jī)的 IP 地址和輸出路徑。路由器的主要工作就是為每個(gè)經(jīng)過路由的數(shù)據(jù)包尋找一個(gè)最佳的傳輸路徑,關(guān)于路由器的一些結(jié)構(gòu)和轉(zhuǎn)發(fā)規(guī)則我們已經(jīng)在 路由器你竟然是這樣的... 這篇文章中提到過了。

          靜態(tài)路由和動(dòng)態(tài)路由

          我們通常會(huì)把路由器分為靜態(tài)路由和動(dòng)態(tài)路由兩種,不管是靜態(tài)路由還是動(dòng)態(tài)路由,都不會(huì)脫離路由表。如果數(shù)據(jù)發(fā)送前你已經(jīng)把路由規(guī)則設(shè)置好,在發(fā)送時(shí)數(shù)據(jù)會(huì)按照你事先設(shè)置好的路徑進(jìn)行轉(zhuǎn)發(fā)的話,這就是靜態(tài)路由,如果你事先沒有設(shè)置路由規(guī)則,只是讓數(shù)據(jù)在發(fā)送的過程中按照路由協(xié)議的既定規(guī)則進(jìn)行轉(zhuǎn)發(fā)的話,這就是動(dòng)態(tài)路由,這兩種路由方式各有利弊。

          靜態(tài)路由會(huì)讓你做大量且重復(fù)的設(shè)置路由的工作,效率低而且任務(wù)量很大,并且擴(kuò)展性比較差,一旦新增一個(gè)路由,就會(huì)讓你把所有的路由重新設(shè)置一遍,甚至還有單點(diǎn)問題,當(dāng)傳輸節(jié)點(diǎn)中某一個(gè)路由出現(xiàn)故障時(shí),數(shù)據(jù)基本不會(huì)繞過這個(gè)路由,需要管理員把路由重新設(shè)置才能繼續(xù)發(fā)送。

          使用動(dòng)態(tài)路由也需要手動(dòng)設(shè)置一些東西,只不過需要設(shè)置的是路由協(xié)議,每個(gè)路由協(xié)議的復(fù)雜程度不同,所以設(shè)置的難以程度也不同,比如 RIP 協(xié)議的設(shè)置過程就比較簡(jiǎn)單,OSPF 的設(shè)置過程就比較繁瑣。不過一旦設(shè)置完成后,如果要新增加一個(gè)路由,就只需要設(shè)置新增加的單個(gè)路由就可以,而且避免了單點(diǎn)問題,動(dòng)態(tài)路由能夠選擇其他路徑從而繞過故障路由。

          雖然靜態(tài)路由和動(dòng)態(tài)路由都各有利弊,但是你把他們結(jié)合一來一起使用就可以了。成年人全都要。

          路由協(xié)議

          上面討論了動(dòng)態(tài)路由會(huì)根據(jù)網(wǎng)絡(luò)情況動(dòng)態(tài)調(diào)整數(shù)據(jù)的轉(zhuǎn)發(fā)路徑,那么這種行為方式是以什么為基礎(chǔ)的呢?

          答案是通過路由之間相互交換路由表來實(shí)現(xiàn)的。路由器之間會(huì)在合適的時(shí)間交換路由表,通過這種方式,可以讓網(wǎng)絡(luò)之間所有的路由器都能夠動(dòng)態(tài)調(diào)整數(shù)據(jù)的轉(zhuǎn)發(fā)路徑。當(dāng)網(wǎng)絡(luò)情況發(fā)生變化時(shí),路由器之間彼此交換的路由信息會(huì)告知對(duì)方網(wǎng)絡(luò)的這種變化,通過信息擴(kuò)散使所有路由器都能得知網(wǎng)絡(luò)變化。

          常見的動(dòng)態(tài)路由協(xié)議有RIP、OSPF、BGP、MPLS 等,根據(jù)不同的自治系統(tǒng)還可以分為 IGP(內(nèi)部網(wǎng)關(guān)協(xié)議) 和 EGP(外部網(wǎng)關(guān)協(xié)議)。這個(gè)內(nèi)外有啥區(qū)別呢?

          這就需要先了解一下什么是自治系統(tǒng):

          一個(gè)自治系統(tǒng)(AS)就是處于一個(gè) ISP 網(wǎng)絡(luò)服務(wù)提供商管理控制下的路由器和網(wǎng)絡(luò)群組,它可以是一個(gè)路由器直接連接到 LAN 上,同時(shí)連接到 Internet 上,也可以是由企業(yè)骨干網(wǎng)互聯(lián)的多個(gè)局域網(wǎng)。

          自治系統(tǒng)內(nèi)部的動(dòng)態(tài)路由采用的是域內(nèi)路由協(xié)議 IGP,而自治系統(tǒng)之間的路由控制采用的是域間路由協(xié)議 EGP。IGP 和 EGP 又可以叫做內(nèi)部網(wǎng)關(guān)協(xié)議和外部網(wǎng)關(guān)協(xié)議。IGP 和 EGP 是相輔相成的關(guān)系,沒有 EGP 就不可能實(shí)現(xiàn)在不同機(jī)構(gòu)之間的通信,沒有 IGP 也就不可能實(shí)現(xiàn)自治系統(tǒng)的內(nèi)部通信。IGP 協(xié)議可以細(xì)分為 RIP、RIP 2、OSPF 等眾多協(xié)議。EGP 協(xié)議使用的是 BGP 協(xié)議。

          我們下面就來認(rèn)識(shí)一下這些協(xié)議。

          RIP 協(xié)議

          RIP 的全稱是 Routing Information Protocol,路由信息協(xié)議。它是 IGP 中最先得到廣泛應(yīng)用的一種協(xié)議,就像很多剛誕生的萌芽一樣,最開始一定是非常簡(jiǎn)單的。

          RIP 協(xié)議要求每個(gè)路由器都要維持一個(gè)集合,這個(gè)集合主要記錄了路由器到目的網(wǎng)絡(luò)所走過的距離,如果路由器與目的網(wǎng)絡(luò)直接相連,那么這個(gè)距離就是 1 ,否則,在路由器到目的網(wǎng)絡(luò)的這段距離中,只要走過一個(gè)路由器,它的距離就會(huì) + 1,這個(gè)距離也稱為**跳數(shù)(hop count)**,也就是說,每經(jīng)過一個(gè)路由器,跳數(shù)就會(huì) + 1,不過,這個(gè)跳數(shù)是有次數(shù)限制的,最大不能超過 15,所以,由此可見,RIP 只適用于小型互聯(lián)網(wǎng)。

          RIP 不能在兩個(gè)網(wǎng)絡(luò)之間使用多個(gè)路由,相反的,它會(huì)選擇一條途經(jīng)路由最少的線路進(jìn)行傳輸,哪怕選擇這條最少路由傳輸?shù)木€路時(shí)延大也沒關(guān)系。

          由此我們可以歸納出 RIP 協(xié)議的兩個(gè)特點(diǎn):第一個(gè)特點(diǎn)就是它只會(huì)和相鄰的路由器交換消息,那么這個(gè)"相鄰"該如何判斷呢?如果兩個(gè)路由器之間的通信不需要再經(jīng)過另一個(gè)路由器,就說這兩個(gè)路由器是相鄰的。RIP 還規(guī)定不相鄰的路由器不會(huì)交換信息。第二個(gè)特點(diǎn)就是說每個(gè)路由器會(huì)毫不保留的交換自己知道的全部信息,也就是交換彼此的路由表。

          還有一個(gè)非常重要的問題我們沒有考慮到,既然我們知道 RIP 協(xié)議規(guī)定了交換信息的規(guī)則,那它是如何規(guī)定交換的時(shí)間間隔呢?

          RIP 協(xié)議規(guī)定按照固定的時(shí)間間隔交換路由信息,當(dāng)路由信息發(fā)生變更時(shí),它會(huì)及時(shí)向相鄰的路由器通過交換路由表的方式進(jìn)行更新,更新的原則是路由器要找出最短路徑,使用的是距離向量算法

          距離向量算法

          對(duì)于每一個(gè)相鄰路由器發(fā)送過來的 RIP 報(bào)文,通常會(huì)進(jìn)行以下操作:

          1. 修改 RIP 報(bào)文中的內(nèi)容,會(huì)把 RIP 報(bào)文中的"下一跳地址" N 、"距離" D 字段的值 + 1。

          2. 對(duì)修改后的 RIP 報(bào)文中的每一個(gè)內(nèi)容,進(jìn)行以下步驟:

            • 如果原來路由表中沒有目的網(wǎng)絡(luò)的地址 R ,就會(huì)修改 RIP 報(bào)文中的目的網(wǎng)絡(luò)地址。
            • 如果原來路由表中有目的網(wǎng)絡(luò)的地址,而且下一跳路由的地址是 N,就把收到的 RIP 報(bào)文內(nèi)容替換原路由表中的內(nèi)容。
            • 如果原來路由表中有目的網(wǎng)絡(luò)的地址,但下一跳路由的地址不是 N,如果收到的 RIP 報(bào)文中的距離 D 小于路由表中的距離,就會(huì)進(jìn)行更新。
          3. 如果一段時(shí)間內(nèi)沒有收到相鄰路由器的路由表更新消息,就把此相鄰的路由器標(biāo)記為不可達(dá),并把距離設(shè)置為 16,距離 16 表示為不可達(dá)。

          RIP 協(xié)議報(bào)文格式

          RIP 協(xié)議現(xiàn)階段主要有兩個(gè)版本:RIP 1 和 RIP 2 ,現(xiàn)在更多的使用 RIP 2 的版本,RIP 2 協(xié)議RIP 協(xié)議使用 UDP 協(xié)議進(jìn)行傳輸控制。

          RIP 1 和 RIP 2 的主要區(qū)別如下:

          • RIP 1 是一個(gè)有類路由協(xié)議,RIP 報(bào)文中不包含子網(wǎng)掩碼,這就要求網(wǎng)絡(luò)中所有設(shè)備使用相同的子網(wǎng)掩碼,而 RIP 2 是一個(gè)無類路由協(xié)議,它使用子網(wǎng)掩碼。
          • RIP 1 在發(fā)送更新包的時(shí)候是使用的廣播方式進(jìn)行的,而 RIP 2 默認(rèn)使用的是組播,當(dāng)然 RIP 2 也支持廣播發(fā)送,但是使用組播的方式既能夠滿足需要,又能夠節(jié)省帶寬。
          • 第三個(gè)區(qū)別是 RIP 2 支持明文或者是 MD5 驗(yàn)證,要求兩臺(tái)路由器在同步路由表的時(shí)候必須進(jìn)行驗(yàn)證,這樣可以加強(qiáng)安全性。

          下面是 RIP 2 的報(bào)文格式。

          RIP 2 報(bào)文可以細(xì)分為首部部分和路由部分。

          首部部分主要有命令、版本和必為 0字段,其中命令標(biāo)識(shí)報(bào)文的類型,1 標(biāo)識(shí) Request 請(qǐng)求,向相鄰路由請(qǐng)求全部或者部分路由信息;2 標(biāo)識(shí) Response 請(qǐng)求,向相鄰路由器發(fā)送自己全部或者部分信息。然后是 RIP 版本,表示是 RIP 1 還是 RIP 2。后面的必為 0 其實(shí)主要為了要補(bǔ)齊 4 字節(jié)設(shè)計(jì)的。

          下面是 RIP 報(bào)文的路由信息:

          • 地址簇標(biāo)識(shí)符:其值為 2 時(shí)表示 IP 協(xié)議。對(duì)于 Request 報(bào)文,此字段值為 0。
          • 路由標(biāo)記:這個(gè)一般填入自治系統(tǒng)號(hào),有可能存在 RIP 收到自治系統(tǒng)以外的路由選擇信息。
          • 網(wǎng)絡(luò)地址:這個(gè)就表示目的網(wǎng)絡(luò)地址。
          • 子網(wǎng)掩碼:目的地址的子網(wǎng)掩碼。
          • 下一跳路由器地址:表示路由器的下一跳地址,如果為 0.0.0.0,則表示發(fā)布此路由的路由器地址就是最優(yōu)下一跳地址。
          • 跳數(shù):需要經(jīng)過的路由數(shù)量。

          RIP 存在一個(gè)問題是當(dāng)網(wǎng)絡(luò)故障時(shí),會(huì)經(jīng)過較長時(shí)間才能將信息同步到所有的路由器。

          RIP 的主要問題以及解決辦法

          如下圖所示,有一個(gè)網(wǎng)絡(luò)1 和路由器 1,路由器 1 到網(wǎng)絡(luò) 1 的 RIP 報(bào)文中的路由信息(為了方便描述,省略其他報(bào)字段信息)是"1,1,直接交付",這個(gè)意思就是說:到網(wǎng)絡(luò) 1 的距離是 1 個(gè)路由器的跳數(shù),是直連的方式。

          此時(shí)加進(jìn)來了網(wǎng)絡(luò) 2 和路由器 R2,R2 到網(wǎng)絡(luò) 1 的 RIP 報(bào)文是 "1,2,R1",它表示路由器 R2 到網(wǎng)絡(luò) 1 的距離是 2 跳,下一個(gè)路由器是 R1。

          好了,上面兩幅圖中都能正常發(fā)送 RIP 報(bào)文,相安無事。此時(shí)網(wǎng)絡(luò) 1 出現(xiàn)了故障,導(dǎo)致 R1 無法直接到達(dá)網(wǎng)絡(luò) 1,那么R1、 R2 此時(shí) RIP 的報(bào)文該如何發(fā)送呢?

          實(shí)際上,與網(wǎng)絡(luò) 1 直接相連的是 R1,所以 R1 首先知道網(wǎng)絡(luò) 1 是不可用的,一旦 R1 知道網(wǎng)絡(luò) 1 不可用,就會(huì)修改 RIP 報(bào)文為 "1,16,直接",然后向 R2 同步路由表,如下圖所示:

          但是由于 RIP 協(xié)議本身的特性,這個(gè)路由表同步過程沒那么快速的完成,而此時(shí) R2 不知道網(wǎng)絡(luò) 1 不可用,所以它還是繼續(xù)經(jīng)過 R1 向網(wǎng)絡(luò) 1 發(fā)送報(bào)文。

          一旦 R2 的報(bào)文發(fā)送給 R1 ,R1 就會(huì)認(rèn)為經(jīng)過 R2 可以到達(dá)網(wǎng)絡(luò) 1 ,所以 R1 就會(huì)把 RIP 報(bào)文修改為 "1,3,R2",表明我到網(wǎng)絡(luò) 1 的距離是 3 跳,下一個(gè)路由器要經(jīng)過 R2 ,如下圖所示

          同理,R2 收到 R1 的報(bào)文后會(huì)將其 RIP 報(bào)文修改為 "1,4,R1"。。。。。。然后不斷進(jìn)行 R1 和 R2 的循環(huán)。

          這個(gè)循環(huán)什么時(shí)候終止呢?

          直到 R1 和 R2 的跳數(shù)都增大到 16 時(shí),R1 和 R2 才知道網(wǎng)絡(luò) 1 是不可達(dá)的。這不就是白干么?不過這就是 RIP 協(xié)議的一個(gè)特點(diǎn)。這個(gè)特點(diǎn)通俗一點(diǎn)來講就是好消息傳播的快,壞消息傳播的慢。

          有沒有什么方法能夠補(bǔ)救一下這種傳播慢的方式?

          一種方式就是控制跳數(shù)為 16,這相當(dāng)于是從報(bào)文傳輸時(shí)間上進(jìn)行控制;二是規(guī)定路由器不會(huì)再把收到的消息反向傳輸給發(fā)送端,這種方式被稱為水平分割,如下圖所示

          還有一種方式就是當(dāng)路由信息發(fā)生變化時(shí),不等待一定的時(shí)間(例如 30 秒)而是直接發(fā)送出去,這看起來是更容易想到的方式,想想也是,網(wǎng)絡(luò)都斷了,還要等待 30 s 才發(fā)送,真的很雞肋。

          總之,因?yàn)槠鋮f(xié)議特征和報(bào)文限制了其只能用在小型網(wǎng)絡(luò)中。

          OSPF 協(xié)議

          OSPF 是為了克服 RIP 的缺點(diǎn)在 1989 年開發(fā)出來的,OSPF 稱為 開放最短路徑優(yōu)先 ( Open Shortest Path First ) 協(xié)議。注意雖然它被叫做最短路徑優(yōu)先協(xié)議,但是卻并不能說明其他協(xié)議不是最短路徑優(yōu)先的,一般自治系統(tǒng)內(nèi)的路由器都會(huì)選擇一個(gè)最短路徑來進(jìn)行傳輸。

          OSPF 使用的是分布式的鏈路狀態(tài)協(xié)議,而非像 RIP 那樣的距離向量協(xié)議。和 RIP 協(xié)議相比,OSPF 主要有下面這些變化:

          • OSPF 會(huì)向自治系統(tǒng)內(nèi)的所有路由器發(fā)送消息,OSPF 首先會(huì)向相鄰的路由器發(fā)送消息,然后相鄰的路由器又向與之相鄰的路由器發(fā)送消息,漸漸的會(huì)同步所有的路由器。而 RIP 僅僅會(huì)向周圍幾個(gè)距離比較近的路由器發(fā)送消息。
          • OSPF 發(fā)送的消息就是路由器相鄰的所有路由器的鏈路狀態(tài),這些狀態(tài)包括了路由器都與哪些路由器相鄰,以及鏈路的 metric,其實(shí)就是 RIP 中的跳數(shù)。對(duì)于 RIP 協(xié)議來說,它僅僅會(huì)向相鄰的路由器同步整個(gè)路由表。
          • OSPF 會(huì)在鏈路發(fā)生變化時(shí)向所有路由器同步消息,而 RIP 在不管網(wǎng)絡(luò)狀態(tài)是否發(fā)生變化,都會(huì)定期交換路由表信息。

          由此來看,OSPF 和 RIP 的區(qū)別還是比較大的。

          由于 OSPF 會(huì)定期向周圍的路由器同步鏈路信息,因此這些路由器可以建立一個(gè)鏈路狀態(tài)數(shù)據(jù)庫,每一個(gè)路由器都知道自治系統(tǒng)內(nèi)有多少路由器,以及和這些路由器的 metric,因此每個(gè)路由器都可以以自己為根來構(gòu)建一個(gè)路由表。RIP 協(xié)議雖然也能知道這些信息,只不過它無法知悉整個(gè)自治系統(tǒng)內(nèi)的所有路由信息。

          說了這么多,那為什么 OSPF 協(xié)議為啥比 RIP 協(xié)議更適用于大型網(wǎng)絡(luò)?

          首先 OSPF 沒有跳數(shù)限制,而且 OSPF 會(huì)將自治系統(tǒng)劃分為更小的區(qū)域,每個(gè)區(qū)域都有一個(gè)標(biāo)識(shí),當(dāng)然區(qū)域的劃分也是有范圍的,最大不能超過 200 個(gè),下面就是一個(gè) OSPF 對(duì)自治系統(tǒng)內(nèi)不同區(qū)域的劃分。

          這么做的好處是能夠提高區(qū)域內(nèi)的消息傳輸效率,減少通信量。想象一下,如果是一個(gè)特別大的自治系統(tǒng)內(nèi)部不做任何劃分的話,那么每個(gè)路由器同步一次消息需要多大的通信量啊。

          OSPF 的劃分采用的是一種分層的方式,分為上下兩層,在上層的叫做主干區(qū)域,主干區(qū)域的標(biāo)識(shí)符規(guī)定為 0.0.0.0,主干區(qū)域的作用主要用來連接其他在下層的區(qū)域,每個(gè)區(qū)域內(nèi)部都有負(fù)責(zé)和主干區(qū)域路由器通信的中間路由器,這個(gè)中間路由器叫做 區(qū)域邊界路由器,而主干區(qū)域內(nèi)的路由器叫做 主干路由器,主干路由器可以是區(qū)域邊界路由器,在所有的主干路由器中,還有一個(gè)負(fù)責(zé)和外部自治系統(tǒng)進(jìn)行通信的路由器,這個(gè)路由器叫做自制邊界系統(tǒng)路由器。

          分層思想雖然解決了 OSPF 內(nèi)通信量龐大的問題,但是通信的種類大大增加,讓 OSPF 這個(gè)協(xié)議變的很復(fù)雜。不過,分層的思想是極其重要的,因?yàn)槿魏未笮途W(wǎng)絡(luò)也好,操作系統(tǒng)也好,都會(huì)體現(xiàn)分層的思想,畢竟解耦是一門藝術(shù)。

          OSPF 沒有使用任何傳輸層協(xié)議進(jìn)行通信,相反的它會(huì)直接傳輸 IP 數(shù)據(jù)報(bào)。

          那么問題來了,為什么還有協(xié)議不會(huì)使用傳輸層協(xié)議傳輸報(bào)文呢?

          因?yàn)?OSPF 需要執(zhí)行可靠的多播操作,它會(huì)盡可能和自治系統(tǒng)內(nèi)的多個(gè)鄰居路由器通信,而 TCP 是不支持多播的,并且 UDP 無法保證可靠傳輸,所以 OSPF 實(shí)現(xiàn)了自己的傳輸機(jī)制,從而繞過了 TCP 和 UDP。

          OSPF 構(gòu)成的數(shù)據(jù)包不大,這樣可以減少通信量,還有一個(gè)好處就是不必將數(shù)據(jù)包進(jìn)行分片,因?yàn)榈卜制蟮臄?shù)據(jù)片丟失任意一個(gè),就無法組裝成發(fā)送的數(shù)據(jù)包,必須進(jìn)行重傳。

          下面是 OSPF 的報(bào)文以及各個(gè)字段的含義。

          ( 1 ) 版本 Version :當(dāng)前 OSPF 版本號(hào)是 v2 ,主要標(biāo)準(zhǔn)是 RFC 1583 和 RFC 2328。

          ( 2 ) 類型 Type:OSPF 的報(bào)文類型有五類,這個(gè)類型可以表示任何一類 OSPF 報(bào)文。

          ( 3 ) 分組長度 Packet length:包括 OSPF 首部在內(nèi)的分組長度,以字節(jié)為單位。

          ( 4 ) 路由器標(biāo)識(shí)符 Router ID:標(biāo)志這個(gè)分組是由哪個(gè)路由器接口發(fā)出的,這個(gè)路由器的 IP 地址。

          ( 5 ) 區(qū)域標(biāo)識(shí)符 Area ID:表示這個(gè)分組屬于哪個(gè)區(qū)域,它的一個(gè)標(biāo)識(shí)符。

          ( 6 ) 檢驗(yàn)和:用于檢測(cè)分組中是否出現(xiàn)差錯(cuò)。

          ( 7 ) 鑒別類型:目前只有兩種鑒別類型,0 (不用) 和 1(口令)。

          ( 8 ) 認(rèn)證數(shù)據(jù)(鑒別):類型為 0 就填 0 ,為 1 時(shí)就填入 8 個(gè)字符口令。

          OSPF 除了上述這些報(bào)文的特點(diǎn)之外,還有一些其他特點(diǎn):

          ( 1 ) 如果到一個(gè)目的網(wǎng)絡(luò)有多條相同 metric 的路徑,那么 OSPF 會(huì)通過負(fù)載均衡的方式來使用每一條路徑。

          ( 2 ) OSPF 允許管理員手動(dòng)的設(shè)置 metric,如果是敏感的業(yè)務(wù)就可以設(shè)置較高的 metric,如果對(duì)于敏感性要求沒那么高,就可以設(shè)置較低的 metric。這在 RIP 中根本不可能,RIP 只允許一條最短路徑。

          ( 3 ) OSPF 分組具有鑒別功能,這保證了傳輸鏈路信息的安全性。

          ( 4 ) OSPF 支持可變長度的子網(wǎng)劃分和無分類編址 CIDR 。

          ( 5 ) 由于網(wǎng)絡(luò)中的鏈路狀態(tài)經(jīng)常會(huì)發(fā)生變化,因此 OSPF 會(huì)讓每一個(gè)鏈路帶上一個(gè) 32 位的序號(hào),序號(hào)越大狀態(tài)越新。

          上面說到 OSPF 有五種報(bào)文類型,主要有下面這五種:

          • 類型 1 :hello 報(bào)文,這個(gè)報(bào)文會(huì)定期以組播的形式發(fā)送,主要作用就是維護(hù)和鄰居路由器的可達(dá)性,確保能夠雙向通信,但是并不是所有的報(bào)文都會(huì)建立關(guān)系,必須和報(bào)文中的所有字段都匹配后,才能建立。下面是 hello 報(bào)文的字段。

          Nestwork Mask:網(wǎng)絡(luò)掩碼。

          Hello Interval:發(fā)送 hello 報(bào)文的時(shí)間間隔。默認(rèn)情況下,OSPF 在 P2P 或廣播類型的接口上發(fā)送 hello 間隔為10 s,在 NBMA 和 P2MP 類型接口上hello間隔為 30 s。

          Options:可選項(xiàng),路由器通過設(shè)置 options 字段來通告自己能夠支持某種特性

          Router Pri:路由器優(yōu)先級(jí)

          Router Dead Interval :路由器失效時(shí)間。默認(rèn)情況下該路由接口為 hello interval 的 4 倍關(guān)系,如果在此時(shí)間內(nèi)未收到鄰居發(fā)來的 hello 報(bào)文,則認(rèn)為鄰居失效。

          Designated Router:指定路由器。如果字段為 0.0.0.0 表示 DR 尚未指定或者沒有 DR。Backup Designated Router:備份指定路由器。網(wǎng)絡(luò)中 BDR 的接口 IP 地址。如果字段為 0.0.0.0 表示 BDR 尚未指定或者沒有 BDR。Neighbor:鄰居。此處填充的是鄰居的 Router ID。

          • 類型 2 :數(shù)據(jù)庫分組(Database Description),用于向相鄰站點(diǎn)同步自己的鏈路數(shù)據(jù)庫中的鏈路狀態(tài)信息。

          Interface MTU:最大接口數(shù)據(jù)單元,由此接口發(fā)出最大的 IP 數(shù)據(jù)長度,默認(rèn)為 0 。

          I:initial bit,初始標(biāo)志位,當(dāng)連續(xù)發(fā)送多個(gè) DD 報(bào)文時(shí),如果此報(bào)文時(shí)第一個(gè)就是 1 ,否則就是 0 。

          M:more ,如果設(shè)置為1表示后面還有其他的 DD 報(bào)文,如果這是最后一個(gè) DD 報(bào)文則設(shè)置為 0。

          M/S:此位設(shè)置為 1 表示為 master 路由器。

          DD sequence number DD 報(bào)文序列號(hào)。主從雙方利用序列號(hào)來保證 DD 報(bào)文傳輸?shù)目煽啃院屯暾浴SA headers:DD 報(bào)文中所含 LSA 的頭部信息。

          • 類型 3:鏈路狀態(tài)請(qǐng)求 ( Link State Request ) 分組,用 LSR 報(bào)文請(qǐng)求完整的 LSA 消息。

          LS Type :鏈路狀態(tài)類型。

          Link State ID:LSA 標(biāo)識(shí)。

          Advertising Router:產(chǎn)生該 LSA 的路由器 Router ID。

          • 類型 4: 鏈路狀態(tài)更新 ( Link State Update ) 分組,

          路由器收到 LSR 后會(huì)以 LSU 報(bào)文進(jìn)行回應(yīng),在 LSU 報(bào)文中就包含了對(duì)方請(qǐng)求的 LSA 完整的信息。

          詳細(xì)的 LSA 報(bào)文通常會(huì)分開來寫,包括 LSA Header,Router-LSA,Network-LSA。

          • 類型 5: 鏈路狀態(tài)確認(rèn) ( Link State Acknowledgment ) 分組,用來對(duì)接收到的 LSU 報(bào)文進(jìn)行確認(rèn)。內(nèi)容是需要確認(rèn)的 LS A的 header,一個(gè) LSACK 報(bào)文可以對(duì)多個(gè) LSA 進(jìn)行確認(rèn)。

          OSPF 規(guī)定,每隔 10 s 就要交換一次 Hello 分組,來判斷網(wǎng)絡(luò)鏈路是否可達(dá),這就很像某種心跳檢測(cè)機(jī)制。路由表就會(huì)根據(jù) Hello 分組的檢測(cè)結(jié)果來制定的。在正常情況下,絕大多數(shù)分組都是 Hello 分組,如果在 40 s 內(nèi)沒有收到發(fā)過來的 Hello 分組,就會(huì)認(rèn)為相鄰路由器不可達(dá),應(yīng)該立刻修改鏈路狀態(tài)數(shù)據(jù)庫中所記錄的鏈路信息,還要重新制定路由表。

          其他四種 OSPF 報(bào)文都是用來進(jìn)行鏈路狀態(tài)數(shù)據(jù)庫同步的。這個(gè)同步的意思就是說不同路由器的鏈路狀態(tài)相同。兩個(gè)同步的路由器被稱為完全相鄰的。并不是在物理距離上離的比較近就被稱為相鄰,而是要判斷它的鏈路狀態(tài)。

          總結(jié)一下上面五種報(bào)文類型的用途:通過發(fā)送 Hello 報(bào)文確認(rèn)是否連接;通過 DD 分組來進(jìn)行鏈路狀態(tài)信息同步;在路由運(yùn)行階段,通過鏈路狀態(tài)請(qǐng)求包請(qǐng)求路由控制信息,然后由鏈路狀態(tài)更新包接收路由同步信息,最后通過鏈路狀態(tài)確認(rèn)包通知已接收到路由控制信息。

          當(dāng)新加一個(gè)路由器開始工作時(shí),它不知道應(yīng)該向誰同步鏈路信息,所以它需要通過分組來判斷相鄰的路由器都有哪些,以及向相鄰路由器發(fā)送的 metric 是多少,如果所有的路由器都把自己的狀態(tài)信息對(duì)全網(wǎng)進(jìn)行廣播的話,那么各個(gè)路由器把鏈路狀態(tài)信息組合起來就能得到狀態(tài)鏈路數(shù)據(jù)庫,不過這樣開銷太大了。

          所以,OSPF 通過使用數(shù)據(jù)庫分組和相鄰路由器交換鏈路信息狀態(tài)來得到全網(wǎng)的狀態(tài)鏈路數(shù)據(jù)庫,下面是組合成狀態(tài)鏈路數(shù)據(jù)庫所需要發(fā)送過的 OSPF 報(bào)文。

          這樣一來,就會(huì)建立狀態(tài)鏈路數(shù)據(jù)庫,在網(wǎng)絡(luò)運(yùn)行過程中發(fā)生路由狀態(tài)變更的話,只需要發(fā)送鏈路狀態(tài)更新分組即可,更新完成后需要發(fā)送鏈路狀態(tài)確認(rèn)報(bào)文。

          而且 OSPF 不像 RIP 一樣具有好消息傳播快,壞消息傳播慢的問題。


          ?往期推薦?

          ??

          DNS,給你安排明白了!

          Java 中的語法糖,真甜。

          10 分鐘聊聊計(jì)算機(jī)

          計(jì)算機(jī)的本質(zhì)是哲學(xué)。


          瀏覽 68
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人妻懂色av粉嫩av浪潮av | 欧美A片免费在线观看 | 中文字幕一区二区三区四区五区 | 青草无码视频 | 五月天毛片 |