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

选路原理
IP 执行 选路机制:搜索路由表并决定像哪个网络接口发送分组
路由守护程序 提供 选路策略:一组决定把哪些路由放入路由表的规则
简单路由表
使用netstat -rn以数字形式显示路由表

IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。
- 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
- 在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。
Flags:
- U:该路由可使用
- G:该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。(间接路由标识)
- H:该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址(主机号全为0):一个网络号,或者网络号与子网号的组合。
- D:该路由是由重定向报文创建的
- M:该路由已被重定向报文修改
初始化路由表(内容有点老了)
- 初始化接口时(通常是用ifconfig命令设置接口地址),会自动创建直接路由。对于点对点链路和环回接口,路由到达主机(H标志),对于广播接口来说,如以太网,路由时到达网络
- 到达主机或网络的路由不是直连的,就必须加入路由表。常用方法是在系统引导时显式在初始化文件中运行route命令。
路由表注意事项
netstat -rn输出的目的IP与网关IP中:
flags:UGH表示目的IP是主机地址,非直连,因此网关IP为下一跳地址flags:UH表示目的IP是主机地址,直连,此时网关IP表示本机的出口IP地址flags:UG表示目的IP是网络地址,非直连,网关IP为下一跳地址flags:U表示目的IP是网络地址,直连,网关IP为下一跳地址
路由表没有默认项时的不可达
如果路由表中没有默认项,而又没有找到匹配项:
- 数据报由本地产生:那么就给发送该数据报的应用程序返回一个差错,或者是“主机不可达差错”或者是“网络不可达差错”。
- 数据报是转发的:那么就给原始发送端发送一份ICMP主机不可达的差错报文
ICMP重定向差错
当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。只有当主机直连的局域网内有多个路由时(多个选择),才会有出现这个差错报文。
重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。主机启动时路由表中可以只有一个默认表项。一旦默认路由发生差错,默认路由器将通知它进行重定向,并允许主机对路由表作相应的改动。


ICMP重定向注意事项
- 见原书
浙公网安备 33010602011771号