选路是IP最重要的功能之一。需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生。(不过,后一种情况下,主机必须配置成路由器,否则通过网络接口接收到的数据报,如果目的地址不是本机就会被悄无声息的丢弃掉)
本章主要目的是了解单个IP层如何做出路由决策。
如图是IP层处理过程的简单流程
图中的路由守护程序,通常是一个守护进程。在Unix系统中,大多数普通的守护程序都是路由程序和网关程序
选路的原理
在《网际层协议》文章中,我们提到IP搜索路由表几个步骤:
1) 搜索完全匹配的IP地址
2) 搜索匹配的网络地址
3) 搜索默认表项(一般在路由表中指定为一个网络表项,其网络号为0)
匹配主机地址步骤始终发生在匹配网络地址步骤之前
IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。这区别于选路策略,它只是一组决定把哪些路由放入路由表的规则。IP执行选路机制,而路由守护程序则一般提供选路策略。
简单路由表:
以下执行的命令为:%netstat –rn (-r 是列出路由表,-n是以数字格式打印IP地址)
操作环境为:
一、第一行指出,若目的地是 slip 主机,那么网关就把分组转发给bsdi
二、对于一个给定的路由器,可以有5种不同的标识:
1、U: 该路由可用
2、G: 该路由是到一个网关(路由器)。如果没有设置该标识,说明目的地是直接相连的
3、H: 即目的地址是一个完整的主机地址。如果没有设置该标识,说明该路由是到一个网络,而目的地址是一个网络地址: 一个网络号,或者网络号和子网号的结合
4、D: 该路由是由重定向报文创建的 (关于重定向下面会讲到)
5、M: 该路由已被重定向报文修改