IP选路
选路的原理
路由表中包含的信息决定了I P层所做的所有决策。
IP搜索路由表的几个步骤:
- 搜索匹配的主机地址;
- 搜索匹配的网络地址;
- 搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)。
匹配主机地址步骤始终发生在匹配网络地址步骤之前。
IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。这区别于选路策略,它只是一组决定把哪些路由放入路由表的规则。I P执行选路机制,而路由守护程序则一般提供选路策略。
路由表
五种不同的标志(flags):
- U该路由可以使用。
- G该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。发往直接路由的分组中不但具有指明目的端的IP地址,还具有其链路层地址(Mac地址)。当分组被发往一个间接路由时, IP地址指明的是最终的目的地,但是链路层地址指明的是网关(即下一站路由器)。
- H该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。当为某个目的IP地址搜索路由表时,主机地址项必须与目的地址完全匹配,而网络地址项只需要匹配目的地址的网络号和子网号就可以了。
- D该路由是由重定向报文创建的。
- M该路由已被重定向报文修改。
use:显示的是通过该路由发送的分组数。
没有到达目的地的路由
如果路由表中没有默认项,而又没有找到匹配项,结果取决于该IP数据报是由主机产生的还是被转发的(例如,我们就充当一个路由器)。如果数据报是由本地主机产生的,那么就给发送该数据报的应用程序返回一个差错,或者是“主机不可达差错”或者是“网络不可达差错”。如果是被转发的数据报,那么就给原始发送。端发送一份ICMP主机不可达的差错报文。
ICMP重定向差错
当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。
- 我们假定主机发送一份I P数据报给R 1。这种选路决策经常发生,因为R 1是该主机的默认路由。
- R1收到数据报并且检查它的路由表,发现R 2是发送该数据报的下一站。当它把数据报发送给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器所在的LAN)。这样就给路由器发送重定向报文给原始发送端提供了线索。
- R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。
重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。主机启动时路由表中可以只有一个默认表项(R1或R2)。一旦默认路由发生差错,默认路由器将通知它进行重定向,并允许主机对路由表作相应的改动。