網絡工程:3.1 RIP(Routing Information Protocol)協議

遵循協議:

    1、特網rip1標準文件:rfc1058? ? 網站 : https://tools.ietf.org/html/rfc1058

    2、因特網rip2標準文件:rfc1723? ? 網站 :https://tools.ietf.org/html/rfc1723

使用工具:

    GNS3

使用路由器文件:

    Cisco? c3745-a3jk9s-mz.123-4.T2.bin

路由協議性質:

    距離向量(distance vector):RIP IGRP?

    鏈路狀態(link state):OSPF IS-IS
    混合型(hybrid):EIGRP

距離向量概念:

  矢量(向量)算法:既有大小又有方向的量,例如速度、加速度、力等等

  收斂算法:開始構建網絡拓撲到回收網絡拓撲彼此學習、同步、回收過程的算法

  快速聚斂算法:所謂聚斂就是指所有路由器就最優路徑重新達成一致的過程。
      當因為某種原因使路由器出現問題而無法繼續正常使用時,路由器會
      發出路由更新信息傳遍整個網絡,重新計算最優路徑,并最終使所有
      路由器就新路徑達成一致。聚斂速度慢的路由算法可能會導致路由回路的出現

RIPv1

RIPv1報文結構

RIP每條消息包含兩個部分,分別為Header和Route Entries。其中Header包含Command和Version。Route Entries最多包含25個路由條目,每個路由條目包含Address Family Identity、路由可達的IP地址和跳數。?
報文格式各個字段解釋如下:

  • 【Command】:取值1或2,當取值為1時表示該消息為請求消息;當取值為2時表示該消息為響應消息。

  • 【Version】:當取值為1時表示該消息為RIPv1消息;當取值為2時表示該消息為RIPv2消息。

    -【 Address Family Identity】:對于IPv4協議,該字段取值為2。當該消息是對整張路由表的請求消息時,該字段取值為0。

  • 【IP Address】:該字段表示路由的目的地址。這一項可以是網絡地址、主機地址。

  • 【Metric】:該字段是指RIP中的跳數。雖然該字段取值范圍為0-2^32,但是在RIP中,該字段的取值范圍為1-16。

  例如:10 01 10? 11000000 10101000 01001110 01100100? ?00000000 0000000 00000000 00000001?? 底層數據傳輸形式

RIPv1特點:

1 有類別路由協議?
2.廣播更新?
3 基于UDP,端口號為520?
4 不支持認證?
5.不攜帶掩碼信息無法做路由聚合?
6 一個RIP報文最多攜帶25條路由(RIPv1數據包最大512byte,一條路由20byte、RIP報頭4byte,即RIP最大消息=4+(25*20)=504)

RIPv1工作過程:?
這里寫圖片描述?
路由器啟動時,路由表中只會包含直連路由。運行RIP之后,路由器會發送Request報文,用來請求鄰居路由器的RIP路由。運行RIP的鄰居路由器收到該Request報文后,會根據自己的路由表,生成Response報文進行回復。路由器在收到Response報文后,會將相應的路由添加到自己的路由表中。?
RIP網絡穩定以后,每個路由器會周期性地向鄰居路由器通告自己的整張路由表中的路由信息,默認周期為30秒。鄰居路由器根據收到的路由信息刷新自己的路由表。

工作過程分析?
這里寫圖片描述

?

?

RIP定時器

RIP主要使用三個定時器:

【更新定時器】:它定時觸發更新報文的發送,更新周期默認為30秒。?
【老化定時器】:RIP設備如果在老化時間內沒有收到鄰居發來的路由更新報文,則認為該路由不可達。老化定時器超時后,該路由條目設置為16。?
【垃圾收集定時器】:如果在垃圾收集時間內(默認為更新定時器的4倍,即120秒),不可達路由沒有收到來自同一鄰居的更新,則該路由將被從路由表中徹底刪除。

三個定時器之間的關系

1 RIP 的更新信息發布是由更新定時器控制的,默認為每30 秒發送一次。?
2 每一條路由表項對應兩個定時器:老化定時器和垃圾收集定時器。當學到一條路由并添加到路由表中時,老化定時器啟動。如果老化定時器超時,設備仍沒有收鄰居發來的更新報文,則把該路由的度量值置為16(表示路由不可達),并啟動垃圾收集定時器。如果垃圾收集定時器超時,設備仍然沒有收到更新報文,則在路由表中刪除該條目。

注意事項

(1)如果在沒有觸發更新的前提下,一個路由表項最多需要300秒才能被刪除(老化時間+垃圾收集時間)。?
(2)如果存在觸發更新,那么一個路由條目最多需要120秒才能被刪除(即為老化時間)。

RIP度量計算

RIP使用跳數作為度量值來衡量到達目的網絡的距離。在RIP中,路由器到與它直接相連網絡的跳數為0,每經過一個路由器后跳數加1。為限制收斂時間,RIP規定跳數的取值范圍為0~15之間的整數,大于15的跳數被定義為無窮大,即目的網絡或主機不可達。

RIP開銷控制

Metricin?
命令rip metricin 用于修改令所指定的度量值會與當前路由的度量值相加?
Metricout?
命令rip metricout用于路由器在通告RIP路由時修改路由的度量值。

RIPv2

RIPv2 報文結構

這里寫圖片描述?
RIPv2的報文格式的基本結構和RIPv1相同。RIPv2使用了RIPv1中部分未用字段以提供擴展功能。

報文格式部分字段解釋如下:

【Route Tag】:用于標記外部路由或者路由引入到RIPv2協議中的路由。?
【 Subnet Mask】:用來標識使用IPv4地址的網絡和子網部分。?
【NextHop】:表示比通告路由器地址更好的下一跳地址。如果該字段為0.0.0.0,則說明通告路由器地址為最優下一跳地址。

RIPv2–認證

 RIPv2支持對協議報文進行認證,認證方式有明文認證和MD5認證兩種。當RIPv2配置認證時,RIPv2會對報文第一條Route Entries進行修改。
  • 1
  • 2

具體修改如下:

  • Address Family Identity字段改為0XFFFF。
  • Route Tag字段改為Authentication Type字段。
  • IP Address、Subnet Mask、Next Hop和Metric會變為口令字段。

RIPv2工作過程?
這里寫圖片描述?
路由器運行RIPv2后,會首先組播發送路由更新請求,收到請求的路由器會發送自己的RIPv2路由進行響應。(默認運行RIPv2發送組播更新,可以在接口上控制以組播/廣播方式發送更新)?
網絡穩定后,路由器會周期性發送路由更新信息。

RIPv1,RIPv2區別

這里寫圖片描述

VLSM應用:

測試:采用 RIP Version 2? ?R1? ping R2? ? ? ? ? ? ? ? 通? ? R1 ping R3 不通? ? 結果:肯定有一方不支持VLSM導致無法ping通

  ? ?采用 RIP Version? 2? R3? ping R4? ? ? ? ? ? ? ? 不通??    ? ? ? ? ? ? ? 結果:Version 1不支持VLSM

?  ? 開通R3與R4的Version? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 測試Ping?     ? ? ?結果:完全OK

?

?

RIP默認傳輸數據

傳輸時只要開啟RIP傳輸,都會默認把當前路由器表傳輸給下一跳路由器進行算法比對

新路由器加入(這個規則簡單)

  例子:圖一 如果在10.1.0.0之前加入1.1.0.0,新加IP在A表示為1跳,B的路由表并沒有1.1.0.0,當A把自己的最新路由表傳遞到路由B時發現沒有1.1.0.0就會把1.1.0.0添加進B表中,記錄時并且上一跳路由的跳數基礎上進行累加1

跳數累加及方向的確定:當B路由同時接收到A和C的路由表該如何進行計算,如果B上接了D和E路由,四個同時傳遞路由表給B那該如何處理呢?如圖二

  解題思路:必要條件數據不可能同時處理,必須按隊列進行計算,一個路由多個分支的路由處理順序規則

    1、如果對于B來說,假如A C D E是按照表加入時間劃分優先級,ACDE先后在B中加入路由表,A優先級為最高優先級

    2、矢量方向判斷/跳數疊加算法? 假設:A把表送到B , if 所有路由器都有這個IP地址跳數表A > B && B>D 中的IP跳數,對于A路徑傳遞過來的地址方向就是FABD/FABE/FABC?

??    

          (圖一)

?

        ?(圖二)                          

?

可能存在的設計缺陷

  一、例圖一ABC的路由表更新時間頻率不一致

  二、例圖一 10.4.0.0斷開而無法及時進行全網路由通知更新

  三、B和C無限重發,造成路由環回

?

?

?

RIP缺陷性設計

?

?

?

?

?

?

?

思科動態路由小實驗

3560交換機配置
創建VLAN虛擬局域網空間S3560(config-if)#int vlan 10S3560(config-if)#ip add 192.168.1.1 255.255.255.0S3560(config-if)#no shS3560(config-if)#int  vlan 20S3560(config-if)#ip add 192.168.3.1 255.255.255.0S3560(config-if)#no shS3560(config-if)#exit把F0/2和F0/1放進Vlan10和Vlan2的局域網空間S3560(config)#interface f0/2S3560(config-if)#switchport access vlan 10S3560(config-if)#interface f0/1S3560(config-if)#switchport access vlan 20S3560(config-if)#exit手動添加rip協議表空間記錄S3560(config)#ip routing  ##打開交換機默認關閉的rip協議S3560(config)#route rip   ##啟動rip協議S3560(config-R1)#network 192.168.1.0S3560(config-R1)#network 192.168.1.3S3560(config-R1)#version 2S3560(config-R1)#endS3560(config)#do write  ##寫入當前配置R1路由器設置
設置RIP及同步時鐘R1(config)#interface s2/0R1(config-if)#ip add 192.168.4.1 255.255.255.0R1(config-if)#no shR1(config-if)#clock rate 64000R1(config-if)#route rip R1(config-R1)#network 192.168.3.0R1(config-R1)#network 192.168.4.0R1(config-R1)#version 2
下游交換機接口通訊設置R1(config-R1)#interface f0/0R1(config-if)#ip add 192.168.3.2 255.255.255.0R1(config-if)#no shR1(config-if)#do write  ##寫入當前配置R2路由器設置
設置RIP及同步時鐘R1(config)#interface s2/0R1(config-if)#ip add 192.168.4.2 255.255.255.0R1(config-if)#route rip R1(config-R1)#network 192.168.4.0R1(config-R1)#network 192.168.2.0R1(config-R1)#version 2
下游交換機接口通訊設置R1(config-R1)#interface f0/0R1(config-if)#ip add 192.168.2.1 255.255.255.0R1(config-if)#no shR1(config-if)#do write  ##寫入當前配置

測試過程必:須先從PC1 ping路由器1 再 ping 路由器2 再ping 交換機 再ping PC2 的過程稱之為RIP路由表學習在enable下使用show ip route查看學習到的地址表信息
       在沒學習到地址之前跨設備通信是不通的

?

16個跳數極限測試

第一個路由器顯示結果

?

?被動接口--單播測試

借上圖配置

被動接口-------在所有路由器上輸入如下代碼

      do show debug ip rip ----動態顯示30秒路由更新

      輸入后每個路由器會動態更新出現如下信息

        RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/0 (192.168.1.2) -----發送RIP的Log
        RIP: build update entries
        192.168.1.128/25 via 0.0.0.0, metric 1, tag 0

        RIP: received v2 update from 192.168.1.2 on GigabitEthernet0/0 -----接收RIP的Log
          192.168.1.192/27 via 0.0.0.0 in 1 hops

      第三個路由器輸入如下信息,其他路由依次輸入

       ? R3(config)#router rip //也是要在協議底下配置?

        R3(config-router)#passive-interface g0/1 //被動接口后配置單播更新--禁止G0/1進行UDP接口更新RIP表
       R3(config-router)#neighbor 192.168.1.190? //單播更新給?192.168.1.190? ?---此代碼沒有測試,模擬器2911缺少此功能

       R3(config-router)# clear ip route * ----清空路由表

  ? ? ? ?    

?

?      測試結果:

      ? ?R1?  ping? ? ? ?192.168.1.2 and 192.168.1.129 通? ? ? ? ? ? ? ? ? ? ping? ? ? ? ? 192.168.1.130 and 192.168.1.193 不通

?      ?

?      ?

DV中解決環路的幾種辦法
水平分割
原理:水平分割是指從這個接口收到的信息不回再從這個接口傳出去
R3(config-router)#passive-interface g0/1
R3(config-router)#neighbor xxx.xxx.xxx.xxx
毒性逆轉
原理:RIP從某個接口學到路由后,從原接口發回鄰居路由器,并將該路由的開銷設置為16(即指明該路由不可達)。利用這種方式,可以清除對方路由表中的無用路由。
保持失效定時器
觸發更新
最大跳數(終極武器)

?

轉載于:https://www.cnblogs.com/StrongIwan/p/9635862.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249398.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249398.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249398.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

為什么要有 hash 和 history

https://www.cnblogs.com/zhaobao1830/p/9269042.html

2:word定制工作界面

1.2,定制工作界面 一、功能區的折疊和展開 設計選項----右上方的向上的箭頭 功能區的選項:三個:自動隱藏功能區,顯示選項卡,顯示選項卡和命令 二、定制快速訪問工具欄 如何將一些常用的命令放到一個能便捷找到的地方 第…

JBPM中 使用JobExecutor執行timer定義的job

Job executor在jbpm.cfg.xml中是被缺省注釋的&#xff0c;所以只要去掉此行即可通過JobExecutor來定時觸發timer中的event-handler了 Xml代碼 <jbpm-configuration><import resource"jbpm.default.cfg.xml" /><import resource"jbpm.businessca…

二維碼生成

從vs Nugets搜索ThoughtWorks.QRCode下載ThoughtWorks.QRCode.dll private byte[] CreateQrcode(string code){ string enCodeString code;QRCodeEncoder qrCodeEncoder new QRCodeEncoder();qrCodeEncoder.QRCodeEncodeMode QRCodeEncoder.ENCODE_MODE.BYTE;qrCodeEncod…

vue created

https://blog.csdn.net/xdnloveme/article/details/78035065

Qt打開文件對話框同時選中多個文件或單個文件

Qt中打開單個文件 //str_path為文件路徑 QString str_path QFileDialog::getOpenFileName(this, tr("選擇轉碼文件"), tr("/home"), tr("視頻文件(*.mp4 *.m3u8);;所有文件&#xff08;*.*);;")); 打開多個文件 QString strs; QStringList file…

Activiti Explorer安裝

Activiti Explorer安裝 分類&#xff1a; activiti 2014-05-06 19:11 349人閱讀 評論(0) 收藏 舉報 一、Activiti Explorer介紹 流程引擎的用戶控制臺。使用它來啟動新流程&#xff0c;分配任務&#xff0c;查看并認領任務&#xff0c;等等。這個工具也可以用來管理Activ…

一招明白URL和URI的區別

URL和URI的區別(示例)&#xff1a; URL[統一資源定位器]&#xff1a; http://localhost:8080/api/account/queryAccountInfoURI[統一資源定位符]&#xff1a; /api/account/queryAccountInfo解釋&#xff1a;說白了&#xff0c;可以認為url是絕對路徑&#xff0c;uri是相對路徑…

JS ES6中export和import詳解

1.Export 模塊是獨立的文件&#xff0c;該文件內部的所有的變量外部都無法獲取。如果希望獲取某個變量&#xff0c;必須通過export輸出&#xff0c; // profile.js export var firstName Michael; export var lastName Jackson; export var year 1958;或者用更好的方式&am…

巧用地圖

L1-1 天梯賽座位分配&#xff08;20 分&#xff09; 天梯賽每年有大量參賽隊員&#xff0c;要保證同一所學校的所有隊員都不能相鄰&#xff0c;分配座位就成為一件比較麻煩的事情。為此我們制定如下策略&#xff1a;假設某賽場有 N 所學校參賽&#xff0c;第 i 所學校有 M[i] 支…

Mac系統中MongoChef鏈接MongoDB集群的方法

第一步&#xff1a;啟動Mongochef&#xff0c;點擊鏈接按鈕&#xff1b;第二步&#xff1a;打開連接配置面板&#xff0c;填寫數據庫名&#xff1b;第三步&#xff1a;選擇鏈接類型Connection Type&#xff0c;一般分為直接連接和集群鏈接&#xff0c;這里選擇集群鏈接 Replica…

nginx配置文件nginx.conf

user www www;#指定nginx運行的用戶及用戶組,默認為nobodyworker_processes 8;#開啟的線程數&#xff0c;一般跟邏輯CPU核數一致error_log /alidata/log/nginx/error.log crit; #定位全局錯誤日志文件&#xff0c;級別以notice顯示&#xff0c;還有debug,info,warn,error,crit模…

js 中async

一、終極解決 異步操作是 JavaScript 編程的麻煩事&#xff0c;麻煩到一直有人提出各種各樣的方案&#xff0c;試圖解決這個問題。 從最早的回調函數&#xff0c;到 Promise 對象&#xff0c;再到 Generator 函數&#xff0c;每次都有所改進&#xff0c;但又讓人覺得不徹底。…

Python查找指定文件

在當前目錄以及當前目錄的所有子目錄下查找文件名包含指定字符串的文件&#xff0c;并打印出相對路徑&#xff1a; import os testfiles [] testfilepaths [] L len(os.path.abspath(.))def searchfile(path):for item in os.listdir(path):if os.path.isdir(os.path.join(p…

搭建Mock Server

搭建Mock Server 1.為什么要搭建mock-server&#xff1f; 為了更好的分工合作&#xff0c;讓前端能在不依賴后端環境的情況下進行開發&#xff0c;其中一種手段就是為前端開發者提供一個 web 容器&#xff0c;這個本地環境就是 mock-server。 目前很多前端 mock 數據的方案的…

請問1到10000之前,有多少升數字?(華圖教育面試題)

升數字就是從左向右讀&#xff0c;數值是依次上升的即可&#xff0c;比如123&#xff0c;1256&#xff0c;1389&#xff0c;但是1123&#xff0c;165就不是。以下是我的思路 public static void main(String[] args) {/*** 【請問1到10000之前&#xff0c;有多少升數字&#xf…

crm 一級菜單排序,二級菜單選中并且展開,非菜單權限的歸屬,權限粒度控制到按鈕級別...

排序 /rbac/templatetags/rbac.py from django import template from django.conf import settings import re from collections import OrderedDict register template.Library()register.inclusion_tag(rbac/menu.html) def menu(request):ordered_dictOrderedDict()menu_d…

Maven工程的多模塊

一個大項目需要一個團隊來完成,然后一個大型項目就拆分成幾塊來同時開發,節省時間,提高效率. 大致分為以下幾個模塊(僅是自身經歷): 依賴管理工程模塊:一般現在開發都是以maven來管理jar包,方便.所以整個工程的依賴統一放在一個單獨工程中,一般叫做父工程xxx-parent. 注意事項…

《淺談架構之路:前后端分離模式》

前言&#xff1a;分離模式 對前后端分離研究了一段時間&#xff0c;恰逢公司有一個大項目決定嘗試使用前后端分離模式進行&#xff0c;便參與其中。該項目從2016年初立項至今&#xff0c;平平穩穩得度過&#xff0c;但也涌現出越來越多的問題&#xff0c;絕對不是說前后端分離模…

查詢語句

1.基本查詢語句 1.1 語法&#xff1a; SELECT 屬性列表 FROM 表名或視圖列表 WHERE 條件表達式1 GROUP BY 屬性名1 | HAVING 條件表達式2 ORDER BY 屬性名2 ASC DESC 2.單表查詢 1.應用&#xff1a;查詢表中所有的記錄 2.查詢指定字段&#xff1a;查詢表中所有name字段的記錄 …