IP选路与动态选路协议(六)

来源:互联网 发布:编辑五线谱的软件 编辑:程序博客网 时间:2024/06/13 21:40

(参考文献)TCP/IP详解,卷1:协议

选路是IP最重要的功能之一。需要进行选路的数据报可以有本地主机产生,也可以由其他主机产生。在有一种情况下,主机必须配置成一个路由器,否则通过网络接口搜到的数据报,如果目的地址不是本机就要丢弃。


在以上图中有一个路由守护程序(daemon),通常这是一个用户进程。在Unix系统中,大多数普通的守护程序都是路由程序和网关程序(术语daemon指的是运行在后台的进程,它代表整个系统执行某些操作。Daemon一般在系统引导时启动,在系统运行期间一直存在)。

简单路由表

执行netstat –rn 命令输出如下:

Destination    Gateway         Genmask         Flags  MSS Window  irtt Iface

152.188.7.133  192.168.8.1     0.0.0.0         UGH       0 0          0 eth0

Default        192.168.8.1     0.0.0.0         UG        0 0          0 eth0

169.254.0.0    0.0.0.0         255.255.0.0     U        0 0          0 eth0

192.168.8.133  0.0.0.0         255.255.255.0   U        0 0          0 eth0

第一行表明,如果目的地址是 192.168.8.133 那么网关(路由器)将把分组转发给192.168.8.1。

对于一个给定的路由器,可以打印出5种不同的标志:

U  该路由器可以使用

G  该路由器是到一个网关(路由器),如果没有标志说明目的地址是直接相连的。

H  该路由器是到一个主机,也就是说,目的地址是一个完整的主机地址.

D  该路由是由重定向报文创建的

M  该路由已被重定向报文修改

标志G是非常重要的,他区分了间接路由和直接路由,区别在于,发往路由的分组中不但具有目的端的IP地址,还具有其链路层地址,指明的是网关。当为某个目的地址搜索路由表时,主机地址必须与目的地址完全匹配,如果没有则匹配网络地址;而网络地址只需要匹配目的地址的网络号和子网号就可以了。

输出的第2行是默认路由,每个主机都有一个或者多个默认路由。这一项表明,如果在路由表中没有找到特定的路由,就把分组发送到路由器  192.168.8.1  

,这说明当前主机利用这一路由表现就可以通过Internet访问其他的网络系统。

 

没有到达目的地的路由

前面我们都假定对路由表的搜索都能找到匹配的表项,即使匹配的是默认路由。但如果路由表中没有默认项,又没有找到匹配的项,这时会发生什么呢。

结果取决于该IP数据报是由主机产生的还是被转发的。如果数据报是由本地产生的,那么就给发送该数据报的应用返回一个差错(“主机不可达差错”或“网络不可达差错”)。如果是被转发的数据报,那么就给原始发送端发送一份ICMP主机不可达的差错报文。

 

ICMP重定向差错

我们假定主机发送一份IP数据报给R1,因为R1是该主机的默认路由。

当R1收到数据报并检查他的路由表,发现R2是发送该数据报的下一站。当他把数据报发送给R2时,R1监测到他正在发送数据报的接口与数据报到达接口是一样的(即R1接收到该数据报的端口和他要发送出去使用的端口是同一个)。这样就给路由器发送重定向报文给原始发送端提供线索。

R1发送一份ICMP重定向报文给主机,告诉他以后把数据报发送给R2而不是R1,。

重定向一般让具有很少选路信息的主机逐渐建立更完善的路由表。主机启动时,路由表中可以只有一个默认表项。一旦默认路由发送差错,默认路由器将通知他进行重定向,并允许主机对路由表做相应的改动。ICMP重定向允许TCP/IP主机在进行选路时不需要具有智能特性,而把所有的智能特性放在路由器端。主机只是通过重定向报文来逐步学习。

 

ICMP路由器发现报文

一般情况下,初始化路由表的方法是在配置文件中指定静态路由。这种方法常用来设置默认路由另一种方法是使用ICMP通告报文和请求报文。

一般认为,主机在引导以后要广播或多播一份路由器请求报文。一台或更多台路由器相应一份路由器通告报文。另外路由器定期的广播或者多播传送他们的路由器通告报文,运行每个正在监听的主机更新他们的路由表。

 

ICMP路由请求报文格式:


ICMP路由器通告报文:

 

路由器在一份报文中可以通告多个地址。地址书指的是报文中所含的地址数;地址项大小指的是每个路由器地址32bit的数目;生存时间指的是通告地址有效的时间(秒)。优先级是指出IP地址作为默认路由器地址的优先级。

 动态选路

路由器之间的通信使用RIP协议,即选路信息协议(Routing Infromation Protocol),大多数TCP/IP实现都提供这个应用广泛的协议。

当相邻路由器之间进行通信,已告知对方每个路由器当前所连接的网络,这时就出现了动态选路。路由器之间必须采用选路协议进行通信,这样的选路协议有很多种。路由器上有一个进程,成为路由守护程序,它运行选路协议,并与其相邻的路由器进行通信。路由守护程序更具它从相邻路由器接收到的信息,更新内核中的路由表。

动态选路并不会改变内核在IP层的选路方式(即IP选路)。内核搜索路由表,查找主机路由、网络路由。以及默认路由的方式并没有改变。仅仅是放置到路由表中的信息变了----当路由随时间变化时,路由是由路由守护程序动态地增加或删除,而不是来自引导程序文件中的route程序。

路由守护程序将选路策略加入到系统中,选择路由并加入到路由表中。如果守护程序发现前往同一信宿存在多条路由,那么他(以某种方法)将选择最佳路由并加入到路由表中。如果路由守护程序发现一条链路已经断开(可能是路由器崩溃或者线路不好),他可以删除受影响的路由或增加一条路由以绕过该问题。

在internet这样的系统中,采用了许多不同的选路协议。Internet是由多组自制系统组成的,每个自制系统都有各自的选路协议。常常将一个公司或者大学定义为一个自制系统。每个自制系统可以选择该自制系统中各个路由器之间的选路协议,这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(interadomain routing protocol)。最常用的IGP选路信息协议RIP。(选路协议的作用在于,提供最优路径,并加入到路由表中;他为主题查看路由表提供一套更优质的路由表方案)

0 0
原创粉丝点击