路由表的数据来源
主机和路由器利用路由表来转发数据,路由表中的每一条记录都给出了到目的网络的下一跳地址。通过路由表的方式,我们已经知道如果传递信息。但是现在,我们要思考另一个问题,那就是路由表的数据如果获得?更具体一点,我们要获得什么样的信息以及如何获得信息?
总体上来说,建立路由牵扯到两个步骤:初始化和更新。一个路由器或者主机必须在它启动的时候建立一个初始路由表。同样的,如果网络发生了变化,那么路由器或者主机必须更新它们的路由表(例如硬件故障, 导致某个网络无法访问)。
初始化依赖于硬件和操作系统。在某些系统中,路由器会从存储中读取路由表信息,或者通过一个启动脚本来初始化。另外有些系统会广播(或者多播)一条用于发现邻居并且请求邻居提供关于正在被使用的网络地址信息。
一旦建立了初始的路由表,路由器就要面对路由变化的情况。对于小型的系统,可以手动的更新信息,但是对于大型的系统,这很明显是不切实际的,所以需要自动的更新信息。
通过局部信息进行转发
主机和路由器的区别是主机对整个互联网的结构知之甚少。主机不会拥有所有可能目的地的完整信息,甚至所有可能网络的完整信息。 事实上,主机的路由表通常只有两条记录:一条用于本地网络的记录,一条用于直连的路由器的记录。
主机是是否可以总是使用局部信息转发数据?答案是在某些情况下可以的。考虑两种架构,第一种是中心式的架构,一路使用局部信息进行转发,最终到达一个中心的路由器,这个中心的路由器知道到往所有目的地的路径,这样就可以到达目的地了,类似于一种星形的结构。第二种情况是,所有路由器都知道前往所有目的地的路径,这样只要数据转发给了路由器,那么就可以前往目的地了。
很遗憾的是,这两种架构都是在现实中无法实现的。没有任何硬件能够实现第一种架构的中央路由器,第二种架构更加不可能。因此,我们就需要设计一种架构出来,使得主机可以总是使用局部信息进行转发。
为了理解互联网的路由架构,考虑这样一个情况。一座城市被一条河流划分成东西两边,中间有一座大桥连通东西两个城区。假设东西两个城区互相没有路牌指向在对方的目的地。东城区的所有路牌都列出了东城区的所有目的地以及一个通往大桥的默认路径,西城区就是同样如此。这样,如果东城区的人想要前往西城区,会按照路牌的指示前往大桥,经过大桥,按照路牌的指示,最终到达目的地。但是这样有一个缺点,如果我们想去一个不存在的地点,我们就会来回的穿越这座桥。
最原始的互联网架构以及核心路由器
在TCP/IP首次被开发出来时,互联网上的网址都连接上APRANET网络,它是一个骨干网。在初期,每个网址的路由表信息都是手动维护的,但是随着网络的壮大,手动维护已不再可能继续使用,迫切的需要自动化的方法。但是,骨干网的概念仍然被使用。
互联网的设计者选择了星形结构的路由架构。最初始的设计使用了一组规模较小的,中央式的路由器。这组路由器有着到达所有目的地的信息,外部的路由器只有局部信息,他们只需要将数据转发给这组路由器,那么最终就可以使数据到达目的地。十分的类似于之前提到过的城市架构。
这组维护所有目的地信息的中央路由器被称为互联网的核心。因为每个核心路由器都知道到所有可能目的地的路径,所以它们并不需要默认路径。这组路由器有时也会被称为default-free zone。
自动路径传播以及FIB
原始的互联网核心系统避免了默认路由的存在,因为它在核心路由器之间传播每一个核心路由器可能到达的所有的目的地的完整信息。
路由协议有两个重要的功能,首先,它需要计算最短路径,其次,它必须对网络错误和网络拓补发生变化做出对应的响应。
从概念上来说,路由协议和转发机制是完全独立的,即路由协议是一个使用IP的独立进程。路由协议需要学习目的地,计算到每一个目的地的最短路径,并且将信息传播给其他的核心路由器。
尽管路由协议计算最短路径,但是路由软件不会直接在路由表信息里存储数据。取而代之的是,路由软件创建一个Forwarding Information Base(FIB)。FIB可能会包含路由表里不存在的信息。
当FIB发生变换时,路由软件重新计算路由表,然后安装新的路由表。
标签:架构,信息,目的地,路由器,路由,路由表 From: https://www.cnblogs.com/riasartemis/p/17083412.html