在满足以下条件的网络中
A、网络很小
B、与其他网络只有单个连接点且
C、没有多于路由时
采用
1、 在配置接口时,以默认方式生成路由表项,并用route命令增加表项
2、 通过ICMP重定向生成表项
是可行的。然而若A、B、C不能全满足的话,通常使用动态选路。
动态选路
当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时候就出现了动态选路。
路由器上有一个进程称为路由守护程序,它运行选路协议,并与其相邻的一些路由器进行通信。路由守护程序根据它从相邻路由器接收到的信息更新内核中的路由表。
动态选路并没有改变内核选路方式 ---- 查找主机路由、网络路由以及默认路由, 其改变的仅仅是放置到路由表中的信息: 当路由随时间变化,路由是由路由守护程序动态的增加或删除,而不是来自于route命令等。
Internet是由一组自制系统组成的。
每个自治系统可以选择自治系统中各路由器之间的选路协议,即Interior GateWay Protocol (IGP,内部网关协议), 最常用的IGP是选路信息协议RIP,还有一种常用的是OSPF。OSPF意在取代RIP
各个自治系统之间使用外部网关协议,即 Exterior Gateway Protocol, 常用的为EGP,BGP。BGP意在取代EGP
Unix系统中,常有routed的路由守护程序,仅支持RIP。另一个是gated,看下图:
RIP:选路信息协议:
首先,报文格式如下:
RIP报文包含在UDP数据报中,以下给出了使用IP地址时的RIP报文格式:
命令字段为1表示请求,2表示应答。
“请求”表示要求其他系统发送其全部或部分路由表。
“应答“则包含发送者全部或部分路由表
版本字段,第一版为1,第二版RIP为2
紧跟在后的20字节,地址系列(address family),IP地址,度量,接下来这种20字节的部分还可以有24个
采用这种20字节格式的RIP报文可以通报多达25条路由。上限25是用来保证RIP报文的总长度为 20*25+4=504, 小于512字节。由于每个报文仅发送25个路由,因此为了发送整个路由表,需要多个报文
正常运行:
初始化:
在启动一个路由守护进程时,它先判断启动了哪些接口,并在每个接口上发送请求报文,要求其他路由器发送完整路由表。如果网络支持广播,这种请求时以广播形式发送的,目的UDP端口号是520.
这种请求报文的命令字段为1,地址系列为0,度量字段设置为16。这是一种要求另一端完整路由表的特殊请求报文
接收到请求:
如果这个请求时上面提到的特殊请求,那么路由器就将完整的路由表发送给请求者。否则,就处理请求中的每一个表项:
如果有连接到指明地址的路由,则将度量设置成我们的值,否则就将度量设置为16(度量16是理解为无穷大的值,意味着没有到达目的的路由)。然后发回响应。
(这里我看到计算机网络书上说是每次都交换所有信息的,所以会随着网络规模的扩大,交换信息的开销也会增加)
接收到响应:
使响应生效,可能会更改路由表。
定期选路更新:
每过30秒,所有或部分路由器会将其完整的路由表发送给相邻的路由器。
触发更新:
每当一条路由的度量发生变化时,就会对它进行更新,不需要发送完整的路由表,只需要发送那些发生变化的表项。
每个路由都有与之相关的定时器,如果运行RIP的系统发现一条路由在3分钟内没更新,就将该路由设置为无限大,即16,标注为删除
度量:
这里的度量是以跳来计算的。
度量最大值为15,这意味着RIP只能用于在主机间最大跳数为15的AS内,度量为16就表示无法到达该IP地址
RIP存在的问题:
1、 RIP没有子网地址的概念
例如如果标准B类地址中的16位主机号不为0,那么RIP不能区分非零部分是一个子网号或是主机地址
2、 在路由器或链路发生故障,可能发生路由环路
3、 采用跳数忽略了许多其他该考虑的因素
4、 度量最大值的限制
RIP版本2
报文格式如下:
Routing domain 是一个路由守护程序的标识符,可以是系统中路由守护进程的进程ID
Routing tag 是为了支持外部网关协议而存在的,携带一个EGP和BGP的自治系统号
关于其他协议,暂时不写出。