路由信息协议(RIP)是一种动态路由协议,它使用跃点数作为路由度量来查找源网络和目标网络之间的最佳路径。而RIP协议封装在UDP之上,端口为520,它是一种距离矢量路由协议,具有AD值120,适用于OSI模型的应用层。
RIP协议有哪些版本
RIP是最古老的距离矢量协议路由协议之一,于1980年代发明。它使用跳数(源和目标网络之间的路由器数量)作为度量标准,并且配置非常简单。开发了两种版本的协议,主要是RIPv1,RIPv2,RIPng
- RIPv1
RIPv1仅支持有类路由协议,并且在路由更新中不发送子网掩码。使用广播每30秒发送一次完整的更新。
- RIPv2
RIPv2 支持无类路由,并在路由更新中发送子网掩码。
在RIP中的身份验证中,路由信息协议RIPv2的Cisco实现支持身份验证,密钥管理,路由汇总,无类域间路由(CIDR)和可变长度子网掩码(VLSM)。
RIPv1不支持身份验证。如果要发送和接收RIP v2数据包,则可以在接口上启用RIP身份验证。
RIP消息格式
现在,我们看一下RIP消息格式的结构。消息格式用于在不同路由器之间共享信息。RIP在消息中包含以下字段:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| command (1) | version (1) | must be zero (2) |
+---------------+---------------+-------------------------------+
| address family identifier (2) | must be zero (2) |
+-------------------------------+-------------------------------+
| IP address (4) |
+---------------------------------------------------------------+
| must be zero (4) |
+---------------------------------------------------------------+
| must be zero (4) |
+---------------------------------------------------------------+
| metric (4) |
+---------------------------------------------------------------+
command :这是一个8位字段,用于请求或答复。请求的值为1,回复的值为2。
version :这里的版本表示我们正在使用的协议版本。假设我们使用的是版本1的协议,然后将1放在此字段中。
must be zero :这是一个保留字段,因此用零填充。
address family identifier:这是一个16位字段。由于我们使用的是TCP / IP系列,因此我们在此字段中输入2值。
IP address:定义为14个字节的字段。如果使用IPv4版本,则使用4个字节,其他10个字节全为零。
metric :距离字段指定跳数,即到达目的地的跳数。
如何确定跳数?
当路由器将数据包发送到网段时,将其计为单跳。
在上图中,当路由器1将数据包转发到路由器2时,它将计为1跳计数。同样,当路由器2将数据包转发到路由器3时,它将计为2跳数,而当路由器3将数据包转发到路由器4时,它将计为3跳数。
同样,RIP最多可以支持15个跃点,这意味着可以在RIP中配置16个路由器。
RIP如何工作?
如果网络中有8个路由器,路由器1希望将数据发送到路由器3。如果网络配置了RIP,它将选择跳数最少的路由。
上面的网络中有3条路由,即路由1,路由2和路由3。路由2包含的跳数最少,即2,其中路由1包含3跳,路由3包含4跳,因此RIP将选择路线2。
RIP协议解析
int main(int argc, char* argv[])
{
char errbuf[1024];
pcap_t *desc = 0;
char *filename = argv[1];
if (argc != 2)
{
printf("usage: ./dissect_imap [pcap file]\n");
return -1;
}
return 0;
}
编译运行
RIPv1
RIPv2
总结
路由信息在RIP网络中通过RIP请求和RIP响应数据包进行交换。刚刚启动的路由器可以在所有启用RIP的接口上广播RIP请求。
在那些链路上运行RIP的任何路由器都会收到请求并通过立即向路由器发送RIP响应数据包来做出响应。
在没有RIP请求数据包的情况下,所有RIP路由器每30秒在所有启用RIP的接口上广播RIP响应数据包。RIP广播是在整个网络中泛洪拓扑信息的主要方式。
参考:http:/ /www.ietf.org/rfc/rfc2082.txt
欢迎关注微信公众号【程序猿编码】,需要RIP源码和报文的添加本人微信号(17865354792)