基于GNS3 web UI配置RIP协议(Wireshark 分析)

RIP(Routing Information Protocol)路由信息协议,是一种分布式的基于距离向量的路由选择协议。对每个相邻路由器(假设其地址为 X)发送过来的 RIP 报文,路由器处理遵循以下算法:

(1) 修改 RIP 报文中的所有项目(即路由):把"下一跳"字段中的地址都改为 X,并把所有的"距离"字段的值加 1。

(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤: 若路由表中没有目的网络N,则把该项目添加到路由表中。否则

  • 若路由表中网络 N 的下一跳路由器为 X,则用收到的项目替换原路由表中的项目。

否则

  • 若收到项目中的距离小于路由表中的距离,则用收到项目更新原路由表中的项目。
  • 否则 什么也不做。

(3) 若 3 分钟还未收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。

(4) 返回。

1、在GNS3中,点击tools选择Web UI-Beta进入GNS3图形配置界面:

可以通过上方按钮执行相关操作,如+可以添加网络设备,如下所示:

这里显示的设备和GNS3界面中一模一样。

2 完成拓扑后,可以启动wireshark(这里我们在位置R1的S0/1接口抓取数据)

3.配置RIP路由(这里省略地址配置步骤,请根据地址结构,自行完成)

  • router rip(命令启用RIP进程);
  • version 2(设置RIP版本为2);
  • network 192.168.0.0(通告网络);
  • network 172.16.12.0(通告网络)。



4.RIP路由(路由器启用RIP v2 以后,各自形成自己的路由表,这里我只显示RIP条目,直连网络没有显示)

路由条目中,左侧R表示,这是RIP路由,[120/2],[120/1],其中120表示管理距离,RIP默认的管理距离是120,2和1表示的是距离。

路由器R1到达目标网络172.16.23.0的距离是1,因为中间隔了一个路由器R2,这里默认直连网络的距离是0,一些教材上可能定义的是1,这并不影响,这样所有路由器都这样认定就可以了。

路由器R1到达目标网络192.168.1.0的距离是2,因为中间隔了两个路由器R2和R3。


路由器R2到达网络192.168.0.0的距离是1,中间隔了一个R1路由器。

路由器R2达到网络192.168.1.0的距离是1,中间隔了一个R3路由器。


路由器R3到达网络192.168.0.0的距离是2,中间隔了路由器R1和R2.

路由器R3到达网络172.16.12.0的距离是1,中间隔了路由器R2。

5.Wireshark抓包

(1)请求

(2)响应

RIP路由条目的格式:

RIP头部:

command:1表示请求,2表示响应。

Version:版本(1,2)

Address Family:(IP为2)

Route Tag:0(用于标记外部路由或重分布到RIPv2的路由)

192.168.0.0:(网络地址)

子网掩码:

下一跳:(0.0.0.0直连的网络)

Metric:(1,度量值为1)

从请求和响应中,我们可以看到,当Command字段值为1时表示这是一个Request,当command字段值为2时,表示这是一个响应。

我们可以看到在RIP Request中,封装成IP数据报的时候,TTL=2,很多人可能问为什么要设置成2,主要原因在于RIP只和相邻路由器交换信息,因此只要到邻居路由器TTL减1不等于0即可,没有必要设置大。这点OSPF就不会这么设置,因为OSPF协议是链路状态协议。两者有本质区别。

RIP协议用UDP进行封装,源端口号和目标端口号都是520。之后再封装成IP数据报,从图中我们可以看到在RIP v2中,目标地址都是组播都是224.0.0.9,源地址都是发送路由器地址,这一点和RIP v1有区别,在v1中,目标地址是255.255.255.255广播地址。

如图所示的响应,R1把192.168.0.0网络通告给R2,网络:192.168.0.0 metric:1(默认情况下,直连网络的metric为0,在发出时进行了+1操作,所以R2在收到后,不会再加1,这点需要注意,否则可能感觉和上面的算法不一样),R2收到后,执行上述RIP算法,关于192.168.0.0的网络路由条目变为:

管理距离120,metric 1,下一跳地址172.16.12.1,接口S0/1。其它的分析类似,请自行完成分析。





相关推荐
义一2 小时前
华为eNSP示例说明网关地址和终端IP地址不在同一网段能正常通信吗
网络
测试19985 小时前
接口自动化测试套件封装示例详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
minji...5 小时前
Linux 基础IO(一) (C语言文件接口、系统调用文件调用接口open,write,close、文件fd)
linux·运维·服务器·网络·数据结构·c++
真正的醒悟6 小时前
202503-经验之道
服务器·网络·php
qq_251616197 小时前
ubuntu nginx文件服务器
linux·服务器·网络
云计算练习生7 小时前
渗透测试行业术语—— 网络攻击方式与漏洞利用
服务器·网络·安全·渗透测试术语·网络安全术语
乾元7 小时前
SDN 与 AI 协同:控制面策略自动化与策略一致性校验
运维·网络·人工智能·网络协议·华为·系统架构·ansible
锡兰_CC7 小时前
无缝触达,卓越体验:开启openEuler世界的任意门
服务器·网络·数据库·c++·图像处理·qt·nginx
橘子真甜~7 小时前
C/C++ Linux网络编程10 - http协议
linux·服务器·网络·c++·网络协议·http
十五年专注C++开发8 小时前
async_simple:一个轻量级C++异步协程框架
开发语言·网络·c++·boost·asio