天天看点

因特网的内部网关协议

    我们在之前的学习当中知道了路由表的重要性,但是我们并没有探讨路由表到底是如何生成的,这篇文章,我们就要来探讨一下这个问题。目前因特网采用路由选择协议来来获得路由表中的项目。

    路由选择协议可以分为两大类,一种是静态路由选择协议和动态路由选择协议。静态路由选择协议主要依靠的是人工设置路由表的方式来设置路由表中的项目,而动态路由选择协议主要是自适应的,适合于大型的因特网,所以我们把主要的目光放在动态路由选择协议的特点上。

     由于一个路由选择协议最主要的是路由选择算法,所以我们不可能让一个算法的对象设置为整个因特网上的所有主机,同时有些机构不希望外界知道自己机构内部的通信协议,所以整个因特网被划分为一个个的自治系统。每个自治系统的内部使用单一的路由选择协议,这种协议称之为内部网关协议,而自治系统之间也需要交换路由表的信息,这个时候就需要使用外部网关协议。所以我们分为两个部分来讨论。

    内部网关协议之一——路由信息协议(RIP)

    RIP的主要特点是以跳数的多少来衡量路由的好坏,相邻的路由的跳数定义为1,和相邻的路由的相邻路由定义为2,以此类推。RIP选择最少跳数的路由作为路由表项目。需要注意的是,RIP最多允许一条路径包含15个路由器,当距离为16的时候,代表这个IP地址不可达。

    要想弄清楚RIP协议,最重要的是弄清楚三个要点,第一:当前路由器和那些路由器交换信息?第二:交换什么信息?第三:在什么时候交换信息?

    第一个问题的答案是——当前路由器仅和其相邻的路由器交换信息。

    第二个问题的答案是——交换当前路由器中所有的路由表。

    第三个问题的答案是——按固定的时间间隔来交换路由信息。(在网络拓扑发生变化的时候,路由器也要向相邻的路由器交换必要的路由信息)

    RIP最关键的当然是距离向量算法。当路由器收到一个相邻路由发过来的RIP报文,进行以下步骤:

    (1)首先明白当前路由表项目中重要的三个要素——下一跳的地址,距离,目的地址。例如,路由器X将其路由表中的信息发给当前路由器,那么下一跳的地址是X,距离等于当前路由器X发过来的时候的距离加一,目的地址不变。

    (2)经过上面处理之后,如果目的地址在当前路由器不存在,那么就把上面的路由信息放置到当前路由器中的路由表中。如果目的地址在当前路由器的路由表中,且下一跳地址为X,则更新当前的路由表项目的信息。如果目的地址在路由表中,但是下一跳地址不是X,且X的距离比旧路由信息中的距离要小,那么就将之前路由表中的信息代替掉。

    (3)如果三分钟还没收到相邻路由器的路由更新信息,就将这个 路由器的距离设置为16,表示不可达。

    (4)返回。

    对于一个协议我们有必要研究其报文的内容,RIP使用UDP来进行协议的传输。

因特网的内部网关协议

    其中RIP首部为4字节,RIP数据部分,图中每一行的长度也为4字节,所以传播路由表中的一个项目需要20字节。而一共最大能传播25个项目。

    其他RIP协议需要注意的地方——RIP协议所在的网络拓扑一旦出现问题,那么可能需要比较长的时间才能趋于稳定。这种情况出现在,假设原本和路由器1直接相连的网络1突然出现故障,那么路由器1就将路由表中的关于网路1的项目改为1,16,网络1。而正在此时,和路由器直接相连但是要通过路由器1到达网络1的路由器2可能已经把报文发给了路由器1,报文为1,2,网络1。此时路由器1更新路由表中的项目,这样来回几次,才能最后收敛,这个在教科书上称之为,坏消息传播的快!

    内部网关协议之二——开放最短路径优先(OSPF)

    我们再讨论RIP的时候我们说明了三个要点——和哪些路由器交换路由信息,交换什么信息,和什么时候交换信息。同样在这里OSPF也需要讨论这三个要点。

    (1)OSPF和自制系统中所有的路由器交换信息。路由器将信息发送给所有相邻的路由器,相邻的路由器再将信息转发给相邻的路由器。

    (2)OSPF交换的信息是和它相邻所有路由器的链路状态,而不仅仅是“距离”。这里链路状态其实很灵活,可以由管理员来设置相应的链路代价。

    (3)在网络拓扑发生变化的时候OSPF要交换信息,在规定的时间间隔也要交换信息。

    需要注意的是路由器交换的信息只是它所知道的部分信息,由于路由信息不断地在全网当中不断地传播,所以所有的路由器都知道全网中所有的路由器的链路状态,知道全网的网络拓扑,因此可以建立一个数据库,建立起路由表。

    由于OSPF可以适用于很大的网络,所以在具体的实现过程当中在自治系统当中划分出更多的区域,这样可以减少算法的开销,收敛的也更加地快。

    我们再来看一下OSPF的报文的具体内容。(OSPF使用IP数据报进行传送)

因特网的内部网关协议

因特网的内部网关协议

   其中需要解释的是OSPF数据报的类型。一共有五种。

   (1)问候分组,这个是探索相邻的路由器是否可达,也是进行其他报文交换的基础。

   (2)数据库描述分组,向相邻的路由器传达当前路由器中所有的摘要信息。

   (3)链路状态请求分组,向路由器请求数据库中某部分的详细信息。

   (4)链路状态更新分组,将链路状态的信息向全网洪范发送。

   (5)链路状态确认分组,对链路状态更新分组的确认。

   还有需要注意的地方就是——当OSPF报文在全网当中洪范地传播的时候,当前路由器需要给相邻的路由器传播这份报文,但是不能重新传给上游的路由器。