路由器工作在网络层,它可以实现网络层及其以下各层协议不相同的多个网络之间的互连,如图 5-11 所示。
路由器负责接收来自各个网络入口的分组,并把分组从其相应的出口转发出去,它涉及到两个方面问题:首先,要为分组找到相应的出口,这可以通过查找路由表来实现;其次,将分组从入口送到出口转发出去。
使用路由器连接网络,实现多个网络互连的示意图如图 5-12 所示。
1. 路由器的相关概念:
1.IP 路由和路由段
路由器将分组报文从进入网络算起到离开网络为止的一个网络,在逻辑上看成是一个路由单位,称为一跳(Hop)。而相邻的路由器是指这两个路由器都连接在同一个网络上。
例如,在图 5-13 中,主机 A 到主机 C 的最短路径共经过了3个网络和2个路由器,跳数为3。
若一节点通过一个网络与另一节点相连接,则此两节点相隔一个路由段,因而在网络中是相邻的。图 5-13 中的粗箭头表示的就是路由段。一个路由器到其直连网络中的某个主机的路由段数为零。
由于网络大小可能相差很大,而每个路由段的实际长度并不相同。因此对不同的网络,可以将其路由段乘以一个加权系数,用加权后的路由段数来衡量通路的长短。
注意,采用路由段数最小的路由有时也并不一定是最理想的。比如,经过三个局域网路由段的路由就可能比经过两个广域网路由段的路由要快得多。
2. 路由表
路由表用于为每个 IP 包选择输出端口或下一跳地址。
每台路由器中都保存着一张路由表,用来记录相关网站的地址,路由器转发数据报时选择路径的关键是查找路由表。路由表中每条路由项都指明数据报到某网络或主机时应通过路由器的哪个物理端口发送。路由器根据路由表决定将数据报转发到下一个路由器,或者传送到与其直接相连网络中的目的主机。
(1) 路由表的组成。
路由表是由目的地址、子网掩码、输出端口和下一跳 IP 地址组成的,如图 5-14 所示。
① 目的地址:用来标识 IP 数据报的目的地址或目的网络。
② 子网掩码:与目的地址一起来标识目的主机所在的网络地址。
③ 输出端口:说明 IP 数据报将从该路由器的哪个端口转发出去。
④ 下一跳 IP 地址:说明 IP 数据报所经过的下一个路由器的 IP 地址。
在如图 5-14 所示的网络中,各网络中的数字是该网络的网络地址。路由器 R8 分别与3 个网络 11.0.0.0、10.0.0.0 和13.0.0.0 相连,因此有 3 个 IP 地址与 R8 的物理端口 1、端口2、端口 3 相对应,这 3 个 IP 地址分别是 11.0.0.1、10.0.0.1 和 13.0.0.4。因此,10.0.0.2、13.0.0.3、13.0.0.2、13.0.0.1 和 11.0.0.2 都是路由器 R8 的下一跳 IP 地址。路由器 R8 的路由表在图 5-14 的右侧表中列出。
(2) 路由表的优先级。
针对同一目的地,可能存在不同下一跳的若干条路由,这些不同的路由可能是由不同的路由协议发现的,当然也可能是由手工配置的静态路由。优先级高的(数值小)将成为当前的最优路由。用户可以配置多条到同一目的地但优先级不同的路由,路由器将按优先级顺序选取唯一的一条路由供 IP 转发数据包时使用。
3. 路由的类型
一般而言,路由分为直连路由、静态路由、默认路由和动态路由。
(1) 直连路由。
直连路由是指那些与路由器端口直接相连的网段,路由器在运行过程中根据接口状态和用户配置,自动获得这些直接路由。
例如,在图 5-15 中,网络 1.0.0.0、2.0.0.0 和网络 3.0.0.0 通过路由器 R1 和 R2 连接起来,其中 1.0.0.1 和 2.0.0.1 是路由器 R1 的端口,2.0.0.2 和 3.0.0.1 是 R2 的端口。
如表 5-7 所示给出了路由器 R1 的直接路由。
(2) 静态路由。
静态路由是手工管理的路由,由管理员手工配置而成。在组网结构简单或到给定目标主机只有一条路径的网络中,只需配置静态路由就能使路由器正常工作。
由于不发送路由选择更新信息,静态路由选择减少了额外开支。同时正确地设置和使用静态路由能有效地保障网络安全,并能够为重要的应用保证带宽。
使用静态路由的缺陷是当网络出现问题或因其他原因引起拓扑变化时,静态路由不会自动发生改变,必须要有网络管理员的介入。
在图 5-15 中,可以为路由器 R1 配置静态路由,其路由表如表 5-8 所示。
(3) 默认路由。
默认路由也是一种静态路由。默认路由就是在没有找到任何匹配路由项的情况下才使用的路由。在路由表中,默认路由的目的网络号是 0.0.0.0(子网掩码为 0.0.0.0)。路由器在转发报文时,若报文的目的地不在路由表中,也无默认路由存在时,该报文将被丢弃,同时路由器将返回源端一个 ICMP 报文,指出该目的地址或网络不可达信息。
默认路由在网络中是非常有用的。在一个包含上百个路由器的典型网络中,运行动态路由选择协议可能会耗费大量的带宽资源,而使用默认路由就可节约因路由选择所占用的时间与包转发所占用的带宽资源,这样就能在一定程度上满足大量用户同时进行通信的需求。
(4) 动态路由。
在实际网络中,网络拓扑结构经常发生变化,对使用静态路由而言,维护是非常困难的。动态路由能够实现路由的发现和自动更新,动态路由必须依赖路由协议(OSPF 协议、RIP 协议等)来实现。在实际应用中动态路由和静态路由是共同起作用的。