概述
与传输层和应用层不同,在网络的每一台主机和路由器都有网络层部分。如下图所示,在一个具有两台主机H1和H2和H1和H2之间有几台路由器的简单网络。假设H1正向H2发送信息:H1的网络层从其传输层取得报文段,并将每个报文段封装成一个数据包,然后将数据包向相邻路由器R1发送。接受主机H2的网络层从其相邻路由器R2取得数据包,并提取出传输层报文段,并交付给上面的传输层。
网络层主要的协议如下图所示:
转发与路由选择
转发
每个路由器都有一个转发表,当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路。因此路由器可以根据数据报上的地址信息并结合转法表,将该数据报转发至合适的输出链路接口。
路由选择
当分组从发送方 流向接收方时,网络层需要决定这些分组所采用的路由或路径,计算路径的算法称为路由选择算法。
路由器
路由器的功能是路由选择和分组转发,将数据传送到正确的网络。它由交换结构、一组输入端口和一组输出端口三部分组成。
路由表中的字段
- 网络地址、网络掩码:网络地址和网络掩码相与的结果用于定义本地计算机可以到达的网络目的地址范围。
- 网关:数据包发送到的下一跳服务器
- 跃点数:代表到达目标地址所需要经过的跃点数量,一个跃点代表经过一个路由器。
- 接口:接口定义了针对特定的网络目的地址,本地计算机用于发送数据包的网络接口。
分组转法流程
- 从数据报的首部提取目的主机的 IP 地址 D,目的网络地址 N。
- 若 N 是与此路由器直接相连的某个网络地址,则进行直接交付;
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器;
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器;
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
- 否则,报告转发分组出错。
路由选择协议
路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。
互联网可以划分为许多较小的自治系统 AS,即一个(有时是多个)实体管辖下的所有IP网络和路由器的组合,它们对互联网执行共同的路由策略。
可以把路由选择协议划分为两大类:
- 自治系统内部的路由选择(内部网关协议):路由信息协议RIP和 开放最短路径优先OSPF
- 自治系统间的路由选择(外部网关协议):边界网关协议BGP
路由信息协议RIP
RIP 是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1。跳数最多为 15,超过 15 表示不可达。
RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。
距离向量算法:
- 对地址为 C 的相邻路由器发来的 RIP 报文,先修改报文中的所有项目,把下一跳字段中的地址改为 C,并把所有的距离字段加 1;
- 对修改后的 RIP 报文中的每一个项目,进行以下步骤:
- 若原来的路由表中没有目的网络 N,则把该项目添加到路由表中;
- 否则:若下一跳路由器地址是 C,则把收到的项目替换原来路由表中的项目;否则:若收到的项目中的距离 d 小于路由表中的距离,则进行更新;
- 否则什么也不做。
- 若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。
举例说明:假设路由器B的路由表如下所示:
目的网络 距离 下一跳路由器 N1 7 A N2 2 C N6 8 F N8 4 E N9 4 F
然后B收到C发来的路由信息:
目的网络 距离 N2 4 N3 N6 4 N8 3 N9 5 写出路由器B更新后的路由表
1)首先将C发来的路由信息中的距离加1,并把下一条设置为C
目的网络 距离 N2 5 N3 9 N6 5 N8 4 N9 6 2)将该表与B的路由表对比可得:
目的网络 距离和下一条 说明 N1 7 A C中没有N1,不改变 N2 5 C 两个路由表下一条相同,更新为C的 N3 8 C B中无此项,添加 N6 5 C 下一跳不同,改为地址更短的 N8 4 E 下一跳不同,距离都相同,不变 N9 4 F 下一跳不同,地址更短,不变 RIP 协议实现简单,开销小。但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。
开放最短路径优先OSPF
OSPF 具有以下特点:
- OSPF是基于链路状态,而不是像RIP基于距离向量。所谓的链路
- 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
- OSPF采用Dijstra算法。
- 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。
- 只有当链路状态发生变化时,路由器才会发送信息。
工作原理
OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。Hello分组封装在IP数据报中,发往组播地址。
每隔一个发送周期发送一次,若一段时间未收到邻居路由器的Hello分组,则认为