系列TCP/IP协议-动态IP选路协议(008)

1,270 阅读5分钟

一、引言

前一章已经说过了IP数据包是如何分发的。为啥这一章还要说这个问题?在网络很小、只有单个连接点、没有多余的路由的时候,使用静态选路是可以的。但是一旦网络变大一点就会出现各种问题。在大网络中的网络选路将在该节说明。   动态选路协议用于路由器间的通信。该章主要介绍3种动态选路协议:RIP,OSPF,BGP。在Internet这样的大型的网络系统中,将这些主机划分若干个系统(分组)中,一台主机只属于一个系统(组)中,如将一个公司或学校定一个为一个系统(组),这些系统(组)叫做自治系统(AS,Autonomous System).正如其名一样。每一个AS通常由单个实体管理。一组AS组织成Internet。在同一AS中在该系统下的所有路由器选择同一种选路协议。我们称这种路由协议为IGP(Interior Gateway Protocol,内部网关协议);在不同的AS中的路由器的选路协议我们称为EGP(Exterier Gateway Protocol,外部网关协议)。常用的IGP协议有RIP与OSPF,常用的EGP协议有BGP。

二、RIP协议

RIP(Routing Infromation Protocol 路由信息协议)数据包包含在UDP数据包中。RIP协议现在总共分两个版本RIP-1与RIP2,RIP常用UDP端口号是520.

1. RIP-1协议

RIP-1数据包如下:

图1.RIP1数据包头部

  • 命令:长度一个字节。1-请求,2-应答,3/4-舍弃不用,5-轮询,6-轮询表项;
  • 版本字段:长度一个字节。RIP-1协议为1,RIP-2协议为2;
  • 一条路由项:长度20个字节。
    • 地址系列: 2个字节,指明是何种地址。值为2表示IP地址。
    • 度量:路由器跳转数,直连为1,最大为16

2.运行流程

  • 初始化:在启动路由守护程序,先判断有哪些网络端口,并且在每一个接口上发送一个RIP请求数据包。对于点对点的网络中,直接发给连接主机。如果是网络,这种请求是以广播的形式发送出去的。这种请求报文的命令字段为 1,但地址系列字段设置为 0,而度量字段设置为 16。这是一种要求另一端完整路由表的特殊请求报文。
  • 接收请求:如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者。就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为16(度量为16是一种称为“无穷大”的特殊值,它意味着没有到达目的的路由)。然后发回响应。
  • 接收到的响应:使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除。
  • 定期选路更新:每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的。
  • 触发更新:每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,而只需要发送那些发生变化的表项。

3.RIP-2协议

RIP-2协议是对RIP-1协议的扩充,该协议不改变RIP-1协议内容,只是所有的填充0区域利用上了。

图2. RIP-2数据包

  • 路由域:一个选路守护程序的标识符,它指出了这个数据报的所有者。在一个Unix实现中,它可以是选路守护程序的进程号。该域允许管理者在单个路由器上运行多个RIP实例,每个实例在一个选路域内运行。
  • 路由标记:为了支持外部网关协议而存在的。它携带着一个 EGP和BGP的自治系统号。
  • 32位子网掩码:每个表项的子网掩码应用于相应的IP地址上。

三、OSPF协议

OSPF(Open Shortest Path First 开放式最短路径优先)是除RIP外的另一个IGP协议。它克服了RIP的所有限制。   与采用距离向量的 R I P协议不同的是, O S P F是一个链路状态协议。距离向量的意思是,R I P发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接收到邻站的这些距离向量来更新自己的路由表。   在一个链路状态协议中,路由器并不与其邻站交换距离信息。它采用的是每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。 参考链接:kalng.blog.51cto.com/3145815/829…

四、BGP协议

BGP(Border Gateway Protocol 边界网关协议)是一种不同自治系统的路由器之间进行通信的EGP协议。   BGP与RIP和OSPF的不同之处在于BGP使用TCP作为其传输层协议。两个运行BGP的系统之间建立一条TCP连接,然后交换整个BGP路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。   BGP是一个距离向量协议,但是与(通告到目的地址跳数的)RIP不同的是,BGP列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离向量协议的问题。采用16 bit 数字表示自治系统标识。   BGP通过定期发送keepalive数据包给其邻站来检测 TCP连接对端的链路或主机失败。两个报文之间的时间间隔建议值为30秒。

都看到这里了,要不要扫二维码关注一下微信公众号林湾村龙猫

微信公众号rudy_tan_home