基础知识

网络协议补完计划--路由协议

2018-07-03  本文已影响275人  kirito_song

目录


前言

参照清华大学出版社-罗军周主编的《TCP/IP协议及网络编程技术》进行学习。
本篇主要参考第六章:《路由协议》


路由协议概述

"互联网"是由不同的路由器将不同的子网链接、构成的"网络的网络"。
路由表保证数据包能够通过不同的路由器辗转最终(经过最佳路径)到达目标主机。而路由协议就是负责路由器与路由器之间实时的信息交换、以实时动态控制路由表结构的协议。

路由协议的意义

任何路由协议的首要目标都是保证网络中的每一个路由器都具有一个完整准确的网络拓扑结构图。这一点非常重要、因为每个路由器都要根据这个拓扑结构图来计算自己的路由表。
正确的路由表能够提高IP数据包正确到达目标主机的几率
而不正确或不完整的路由表可能会造成无法到达、更严重的情况可能会使数据包在网络中循环很长一段时间、白白消耗了网络宽带和路由器资源。

而路由协议、就是为了保证路由表的准确性及完整性而存在


路由表

当路由器接收到数据包的时候、通过分析其目的地址、帮助路由器"选址"、决定从哪一个端口转发出去。

书上的例子:


路由表作用示意图 路由器Ra部分路由表
路由器Ra会根据发送来的数据包目的IP地址(例如:202:119:15:137)、比对自身路由表中的目的地址(需要注意的是路由表中的目的地址是网络号、而不是IP地址)、确定将该数据包需要从下方端口直接转发网络1
同理、另一个数据包(202.119.12.24)的网络段属于202.119.12.0/24、被定义成从右侧端口转发给Rb路由器。Rb在接收到数据包后再进行同样操作分发给目标主机

这里Rb是如何告知Ra、自己可以处理网段202.119.12.0/24的数据包?
就是通过路由协议


路由器工作原理:

  • 如果目的地址存在于路由表中、那么直接转发。
  • 如果目的地址不存在于路由表中、那么取决于是否存在默认路由:
    • 有默认路由:发送给默认路由。
    • 无默认路由:丢弃该数据包。
路由表打印

路由表的建立

静态建立

网络管理员通过网络的拓扑结构和链接方式、建立当前的路由表。适用于简单的网络环境。

动态建立

路由器通过某些算法、自动建立路由表、并且可以根据实际变化实时进行调整。
路由器需要具备以下两个功能:


路由协议分类

根据作用域来分类:

一个域、通常也可以被称为自治系统AS(Autonommous System)。
AS是一个由单一实体控制和管理的路由器集合、采用一个唯一的AS号来标识。

例如:RIP协议、RIP2协议、OSPF协议等

例如:BGP协议等

根据路由算法来分类:


路由算法的特点


距离向量路由算法

所有的路由器、都要其知道的(不管是自身产生的还是从其他地方获得的)网络以及到达该网络的距离(与目的路由器相邻多少个路由器、也叫跳数)等信息方法告诉与自己相邻的路由器。
允许距离向量路由协议路由器与其直接相连的路由器发送多个距离向量、每个距离向量由一个二元数组[网络地址,距离(跳数)]表示。如此、每个路由器最终都将会知晓通过各个端口所能到达的网络及到达该网络的距离

具体实现:
  1. 路由器收到相邻路由器发送的距离向量
  2. 计算距离向量中网络地址与自身的距离
    距离向量中的距离+1
  3. 与本地路由表对比
    如果表中不存在该网络地址、直接添加进路由表
    如果表中存在该网络地址且距离大于新的距离、更新路由表
  4. 如果路由表有更新、将更新后的距离向量发送给相邻的路由器

如何避免死循环

死循环如何产生?
一个数据包本来想从Ra经过Rb发送到Rc。但中途Rc断开了链接、此时Rb无法发送给Rc、但表中Ra是可以到达Rc的、于是发送给Ra、如此往复。

规避这种循环的方式很简单:
禁止把到达目的网络的距离向量发送给路由表中的下一站、也就是Ra不会把通往Rc的距离向量发送给Rb。这样对于一个发送给Rc的数据包、在Rb的路由表中就不会存在发送给Ra的选项了。

缺点


链路状态路由算法

一个路由器能够把有关连接到该路由器的链路的状态费用以及任何连接到该链路的路由器的标识等信息通知给网络中所有其他路由器。
运行该路由协议的路由器会向整个网咯发送链路状态数据包LSP。一个LSP通常包含一个源路由器标识、一个相邻路由器标识以及二者之间链路的费用
LSP被所有路由器接收、用于建立一个网络整体的链路状态库、并据此得出网络整体的拓扑图、再通过最短路径算法计算出路由器的路由表

优点

  1. 更快的收敛速度
    所谓收敛速度是指在网络拓扑发生变化时、路由器将该变化通知给网络中所有路由器的过程。该过程越快、那么在网络拓扑发生变化时、可能发生的转发错误就越少。
  2. 更小的网络开销
    链路状态路由协议传送的LSP只反映网络拓扑的变化、而不是传送整个路由表数据库。
  3. 扩展性更好
  4. 更容易进行算法升级

RIP协议

作为最简单的一种动态路由协议
RIP协议是属于域内基于距离向量算法的路由协议。
使用UDP协议、端口号520。

RIP数据包结构:

RIP数据包

工作原理

RIP作为一个系统长驻进程(daemon)而存在于路由器中,负责从网络系统的其它路由器接收路由信息,从而对本地IP层路由表作动态的维护,保证IP层发送报文时选择正确的路由。同时负责广播本路由器的路由信息,通知相邻路由器作相应的修改。RIP协议处于UDP协议的上层,RIP所接收的路由信息都封装在UDP协议的数据报中,RIP在520号UDP端口上接收来自远程路由器的路由修改信息,并对本地的路由表做相应的修改,同时通知其它路由器。通过这种方式,达到全局路由的有效。

对于一个刚刚加入网络的RIP路由器而言

计时器机制

缺点


RIP2路由协议

RIP2是RIP协议的第二个版本、他对RIP协议进行了扩充并且兼容。

RIP2路由协议数据格式

本身来讲数据包格式与RIP相同、只是将原来设置为0的字段赋予了一定的意义。


OSPF开放最短路径优先

OSPF是除RIP外的另一个内部网关协议。使用的是链路状态路由算法。它克服了RIP协议的所有限制。
除此之外、OSPF绕过了UDP协议直接使用了IP协议进行传输。

OSPF数据包结构

OSPF数据包结构

一台运行了OSPF协议的路由器,最终都会存储三张表:邻居表、拓扑表、路由表


LSR报文用于请求相邻路由器链路状态数据库中的一部分数据。当两台路由器互相交换完DD报文后,知道对端路由器有哪些LSA是本LSDB所没有的,以及哪些LSA是已经失效的,则需要发送一个LSR报文,向对方请求所需的LSA。



LSU报文是应LSR报文的请求,用来向对端路由器发送所需的LSA,内容是多条LSA完整内容的集合,LSU报文内容部分包括此次共发送的LSA数量和每条LSA的完整内容。


BGP边界网关协议

用于不同的AS之间通讯的外部网关协议、为取代EGP而生。
目的是为不同的自治系统之间信息通讯提供保证。
主要使用TCP协议端口179进行传递、采用距离向量算法。
但是十分复杂~没细看

有五种报文:open(开始TCP连接)、update(信息交换)、notification(报错消息)、keepalive(存活消息)


参考文章

如何看路由表!
RIP路由协议及工作原理
OSPF报头及各种报文格式
OSPF协议之详细图解

上一篇 下一篇

猜你喜欢

热点阅读