首页 > 代码库 > 《网络协议》路由协议
《网络协议》路由协议
概述
在互联网中,网络结构是相当复杂的(存在复杂的局域网或广域网),若想要将数据包从一个主机成功发送到目的主机,则需要合理的路由将数据转发最终发送到目的主机。而要使路由能够正确的工作,需要路由控制模块和相关的路由协议来支持路由的工作。
路由控制
互联网是由路由器连接的网络组合而成,为了能让数据包正确到达目的主机,路由器必须能够正确的转发数据包,对数据包的转发处理需要路由控制来进行。路由器根据路由控制表来转发数据包,它根据接收到数据包中目主机的 IP 地址与路由控制表比较得出下一个应该接收数据包的路由器。因此,路由控制表应该正确记录信息。
路由控制可分为:静态路由和动态路由;静态路由是指由管理员事先手动设置好路由器和主机中并将路由信息固定的一种方法;动态路由是指让路由协议在运行过程中自动设置路由控制信息的一种方法;
路由算法
最基本的算法是距离向量算法和链路状态算法:
- 距离向量算法:是根据距离和方向决定目标网络或目标主机的位置的一种方法。路由器之间可以互换目标网络的距离和方向相关信息,并以这些信息为基础制作路由控制表。
- 链路状态算法:是路由器在了解网络整体连接状态的基础上生成的路由控制表的一种方法。该方法中每个路由器必须保持同样的信息才能进行路由选择。
距离路由算法中每个路由器的信息都不同,通往每个网络所耗的距离也根据路由器的不同而不同。因此,该算法的一个缺点是不能判断路由器上的信息是否正确。
链路状态算法所以路由器所持的信息都相同,对任何一台路由器,网络拓扑都一样。因此,只要某一台路由器与其他路由器保持的同样的路由控制信息,则该路由器上的信息就是正确的。只要每个路由器尽快的与其他路由器保持同步的路由信息,就可以使路由信息到达一个稳定的状态。因此,即使网路结构再复杂,每个路由器也能保持正确的路由信息、进行稳定的路由选择。
路由协议
路由协议大致可分为两类:用于同一自治系统各路由器之间的内部网关协议(Interior Gateway Protocol,IGP)和用于不同自治系统内部路由器通信的外部网关协议(Exterior Gateway Protocol,EGP)。
IP 地址分为网络部分和主机部分,他们有各自的分工。IGP 与 EPG 的关系类似 IP 地址的网络部分和主机部分的关系,就像根据 IP 地址的网络部分可以在网路之间进行路由选择、根据 IP 地址主机部分在链路内部进行主机识别一样。可以根据 EGP 在区域网络之间进行路由选择、根据 IGP 在区域网络内部进行主机识别。
---IGP 协议主要有:RIP(Routing Information Protocol,路由信息协议)、RIP2和OSPF(Open Shortest Path First,开放式最短路径优先);
---EGP 协议主要有:BGP(Border Gateway Protocol,边界网关协议);
RIP 协议
广播路由控制信息: RIP 将路由信息定期(30 秒一次)向全网广播,没有收到路由控制信息,连接就会被断开。没收到路由控制信息有可能是丢弃 IP 数据报所引起,因此 RIP 规定等待 5 次,若在第 6 次仍未收到路由控制信息,则真正将连接关闭。
RIP 协议是基于距离向量算法确定路径。距离的单位是“跳数”,跳数是指所经过路由器的个数。RIP 希望尽可能少的经过路由器将数据报发送到目的主机的 IP 地址。
RIP 虽然不交换子网掩码信息,但是可以用于使用子网掩码的网络环境,但必须注意以下情况:
- 从接口 IP 地址对应分类得出网路地址后,与根据路由控制信息流过此路由器的包的 IP 地址对应分类得出的网络地址进行比较。若两个网络地址相同,则就以接口网络地址的长度为标准。若不相同,则以 IP 地址分类所确定的网络地址长度为标准。
RIP 的基本行为可总结如下:
- 将自己所知道的路由控制信息定期进行广播;
- 一旦认为网络被断开,则数据无法流过该路由器,其他路由器也就可以得知该网络已断开;
RIP2 协议
RIP2 协议是 RIP 协议的第二版本,也就是其的改进版本,改进信息如下:
- 使用多广播:RIP 中当路由器之间交换路由信息采用广播形式,然而在 RIP2 采用多播,这不仅减少了网络流量,还缩小对无关主机的影响;
- 支持子网掩码:RIP2 支持在交换路由信息时加入子网掩码信息;
- 路由选择域:在同一个网络中可以使用多个逻辑上独立的 RIP;
- 外部路由标志:通常用于把从 BGP 等获得的路由控制信息通过 RIP 传入到 AS 内;
- 身份验证密钥:RIP 携带密钥,只有自己能够识别这个密钥时才接收数据,否则丢弃该 RIP 数据包;
OSPF 协议
OSPF 协议克服了 RIP 协议的所有限制,与采用距离向量算法的 RIP 协议不同的是,OSPF 协议采用的是链路状态算法。
OSPF 是链路状态型路由器,路由器之间交换链路状态生成网络拓扑信息,然后根据这个拓扑信息生成路由控制表。
RIP 的路由选择,要求途中所经过的路由器个数越少越好。而 OSPF 可以给每条链路赋予一个权重,并且选择一个权重最小的路径作为最终的路由。
RIP 中包的类型只有一种,它利用路由控制信息,一边确认网络是否连接,一边传送网络信息。这种方式的确定是,当网络的个数越多,每次交换的路由控制信息就越大,而且当网络处于稳定状态时,还要定期进行交换相同的路由控制信息,这在一定程度上浪费了网络带宽。
OSPF 根据作用不同采用 5 包的类型,如下表所示:
通过发送问候包确认是否连接。每个路由器为了同步路由控制信息,利用数据库描述包相互发送路由摘要信息和版本信息。如果版本较老,则首先发出一个链路状态请求包请求路由控制信息,然后由路由链路状态更新包接收路由控制信息,最后通过链路状态确认应答包通知大家本地已接收到路由控制信息。这样可以减少网络流量,加快更新速度。
BGP 协议
BGP 协议是一种不同自治系统内部路由器通信的外部网关协议。在 RIP 和 OSPF 中采用 IP 的网络地址部分进行路由控制。而 BGP 的最终路由控制表由网络地址和下一站的路由器组来表示,不过它会根据所要经过的 AS 个数进行路有个控制。BGP 与 RIP 和 OSPF 不同的是采用 TCP 作为其传输层协议。两个运行 BGP 的系统之间建立一条 TCP 连接,然后交换整个 BGP 路由控制表。BGP 是一个距离向量协议,但是与 RIP 不同的是,BGP 列举了到每个目的地址的路由。
参考资料:
《TCP/IP 详解》
《图解 TCP/IP》
《网络协议》路由协议