您的位置:首页 > 理论基础 > 计算机网络

我们一起学网络(七)——网络层(路由选择协议)

2013-12-15 10:10 274 查看
前面涉及到那么多路由转发分组的内容,现在终于到了正题,

路由选择协议~~~~~

路由选择协议的核心是路由算法~,路由选择算法可分为【静态路由选择策略】和【动态路由选择策略】,静态路由选择也叫【非自适应路由选择】,动态路由选择也叫【自适应路由选择】,从名字就可以看出来,动态路由选择比较复杂,但是能较好的适应各种网络情况。

因特网采用的路由选择协议主要是自适应的~

为了方便网络的管理,因特网中具有各种各样的网络(前面提到过,IP协议就是为了解决这个问题),这些各自的网络又叫自治系统(AS)。

所以,现在路由器要解决这样一个问题,因特网存在很多种的AS,AS内部要能进行通信,AS之间还要互相能够通行,所以,因特网把路由选择协议分为了两大类:

(1)内部网关协议IGP

(2)外部网关协议EGP      

自治系统之间的路由选择也叫【域间路由选择】,自治系统内部的路由选择也叫【域内路由选择】

内部网关协议现主要分为两种:(1)RIP和OSPF

外部网关协议主要有一种,即边界网关协议BGP

 

【内部网关协议RIP】

RIP是一种分布式的基于距离向量的路由选择协议,RIP最大的有点是简答,但是它只适用于小型互联网。

RIP有三个特点:

(1)仅和相邻路由器交换信息

(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表

(3)按固定的时间间隔交换路由信息,大约30s一次,当网络拓扑结构发生变化,也及时向相邻路由器报告

当然,RIP有一个缺点,RIP允许一条路径只能包含15个路由器,距离为16时,就把数据报丢弃。网络出现故障时,要经过较长时间才能将此信息传送到所有路由,一般要反复进行到16此~

 

下面来看看RIP协议具体是怎样工作的~

对每个相邻路由发过来的RIP报文,进行如下步骤:

(1)假设发来RIP报文的路由地址为X(我暂时成这个RIP报文为R),本路由接收到此报文,先把报文里的所有项目的下一跳地址都改为X,并把所有的距离都+1

(2)开始对报文R中的每个项目进行操作

for(int i = 0; i < RIP.size(); i++){
if(RIP.get(i).isEmpty()){
//如果报文R中的网络N在本路由中不存在,就直接把此条项目加入路由表
}else{
if(本路由的路由表中该项目的下一 跳为X){
就用报文R替换原路由表中的项目
}else{
比较原路由表和报文R的项目谁的距离更小,把小的留下~
}
}
}

 

我就默认大家能看懂上面这段奇葩的代码~~~

 

【内部网关协议OSPF】

开发最短路径优先OSPF,同样是内部网关协议,这个协议可以用于较大型的互联网。OSPF最主要的特征就是分布式的【链路状态协议】

OSPF的三个要点:

(1)想自治系统的路由发送信息时,使用洪泛法。即路由器所有输出端口向相邻路由器发送信息,每一个相邻路由又将此信息发往其所相邻的路由(但是不回发)

(2)发送的信息是与本路由相邻的所有路由器的链路状态。链路状态即说明本路由与哪些路由相邻

(3)只有当链路状态发生变化,路由器才向所有路由器用洪泛法发送信息

OSPF使得所有路由器最后都能建立 【链路状态数据库】,这个数据库实际就是 全网的拓扑结构图~,有了这个结构图,每个路由就都能知道全网的路由信息,比如有多少个路由,哪些路由是相连的之类~,然后就可以根据这些数据,构造自己的路由表~

这个就是OSPF的具体实现~

前面说过RIP只能作用于小型网络,OSPF可以作用于大型网络。

这是因为OSPF采用了【层次结构的区域划分】,即将一个大的自治系统再划分成更小的范围,叫做区域。每个区域都有自己的32位标识符。

上层区域叫做【主干区域】,主干区域的标识符规定为0,0,0,0  主干区域是用来连通下层的区域~。

然后再这个系统里面还有个东西叫做【区域边界路由】,作用是进行区域之间的信息交换~

类似的,再主干区域中也有一个东西叫做【自治系统的边界路由】,用于本自治系统和其他自治系统交换路由信息!

【外部网关协议BGP】

现在使用的BGP协议大都是BGP-4,也叫边界网关协议

BGP的作用是自治系统之间的路由选择~

由于国家,政治,网络安全之类的关系,BGP协议比想象的要复杂的多~

由于各种因素的影响,BGP并非要寻找一条最佳的路由,而是寻找一条能够到达目的网络并且比较好的路由~

BGP采用的是路径向量路由选择协议~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息