說明:本文僅供學習交流,轉載請标明出處,歡迎轉載!
本文是如下參考文獻相關内容的總結:
[1] 《tcp/ip詳解 卷1:協定》
[2] 《tcp/ip協定族》
[3] 《計算機網絡 第5版》
rip全稱routing information protocal(路由資訊協定),它是一種基于距離向量的路由選擇協定(而ospf是基于鍊路狀态的路由選擇協定),目前被廣泛應用于小型網絡中。既然rip是基于距離向量的路由選擇協定,是以我們好奇的是究竟什麼是距離向量算法?不過在總結距離向量算法之前,我們先介紹點預備知識。
預備知識:
1.rip中的距離以“跳"為機關,表示經過的路由器的個數。rip規定,一個路由器到其直接向量的網絡的距離為1,距離為16表示目的不可達,16被定義為無窮大,也就是說rip規定,一跳路徑最多包含15個路由器。
2.rip中每個路由表的表項包含三個内容:目的網絡,跳數(度量機關),下一跳路由器。
3.rip協定僅和相鄰路由器按照固定的時間間隔交換路由資訊。
距離向量算法:
假設路由器r0向路由器r1發送了一個rip封包(顯然r0與r1是相鄰的路由器,根據預備知識1),則路由器r1收到r0發來的rip封包後會根據自己的路由表和收到的路由資訊中的每一條路由,來生成新的路由表。對于收到的路由資訊中的每一條路由,都做如下處理:(r1收到r0發來的路由資訊)
加入該路由項對應的資訊為:(n1,k,rx)
a.目的位址n1在r1中不存在,(n1,k+1,r0)新增加到r1的路由表中。
b.目的位址n1在r1中存在,且該表項下一跳的位址為r0,此時不管三七二十一,将(n1,k+1,r0)覆寫掉r0中的該表項。
c.目的位址n1在r1存在,但是該表項的下一跳位址不是r0,假設為(n1,m,rt),此時比較k+1與m的大小。若k+1較小,則将(n1,k+1,r0)覆寫掉該表項,否則忽略該路由資訊。
d.若在180s的時間内未收到任何某相鄰路由更新資訊,則将該将此相鄰路由器的距離置為16,表示不可達。
rip協定封包
通過上圖我們可以從宏觀上觀察rip資料報,可以得出:rip封包被封裝在udp資料報中。下面我們從微觀上來分析rip封包。
rip的封包格式如上圖所示。下面分析各個字段的含義:
指令:8位,1表示請求,2表示應答,3和4舍棄不用,5和6表示非正式的輪詢指令;
版本:8位,包括rip和rip2,1表示rip,2表示rip2;
位址系列:16位,對于tcp/ip這個值固定為2;
ip位址,距離:這兩個前面已經提過,很熟悉了應該。
notice:一個rip封包中,最多可包含25個路由,這是為了保證rip封包的總長度小于512b。可以計算下,一個rip封包最多占用4b+25*20b=504b。是以每個rip封包最多隻能攜帶25個路由(路由隻的是路由項,不是路由器),是以,為了發送整個路由表,通常需要發送多個rip封包。
每過30s所有或部分路由器會将其完整路由表發送給相鄰路由器 ;每當一條路由的距離發生變化時,就對它進行更新,不需要發送完整路由表,而隻需要發送哪些變化的表項。
rip協定是基于路由向量選擇的非常簡單的協定,從上面的rip封包中,我們可以很明顯地看出,rip沒有子網位址的概念,若某個ip位址的主機号不為0,rip無法區分非0部分是否包含子網号,rip2則克服了這一缺陷。
rip2協定封包
rip2對rip的改進在于,充分利用了很多全0的字段。
選路域:指明了該資料報的所有者,該域是一個選路守護程式的辨別符pid;
選路标記:為了支援egp,攜帶着一個egp和bgp的自治系統号;
子網路遮罩:使得rip2支援無分類編制和cidr。
下一站ip位址:表示下一跳位址。若兩個自治系統共享一個網絡(如主幹網),則這個字段特别有用。這個封包可以定義分組發往的路由器,不管這個路由器是在同樣的自治系統或在另一個自治系統。該字段為0時,表示發往目的位址的封包應該發給發送rip封包的系統。
rip-2支援廣播和多點傳播。
點點滴滴:
1.rip是基于距離向量的協定。
2.rip中僅将路由資訊發送給相鄰的路由器。
3.當網絡出現故障時,rip通常表現為慢收斂,即“慢消息傳得快,壞消息傳的慢”!“收斂”指的是在自治系統中所有結點都得到路由資訊的過程,即很長時間才能穩定下來。
4.rip2是對rip的改進,使其支援無分類編址cidr、廣播、多點傳播。