IP选路
一、IP层工作流程

二、 简单路由表
输入netstate -rn
,得到如下

其中flag的标志如下
- U 该路由可以使用
- G 该路由是到一个网管(路由器),否则,说明目的地是直接相连的
该标志区分了间接路由和直接路由。区别在于,发往直接路由的分组中不但具有指明的端的IP地址,还具有其链路层地址。当分组被发往一个间接路由时,IP地址指明的是最终目的地,而链路层地址指明的是网关(下一条路由器)。 - H 该路由世道一个主机,也就是说目的地址是一个完整的主机地址。
搜索路由表时,主机地址必须和目的地址完全匹配,而网络地址只需要匹配目的地址的网络号和子网号就可以了。 - D 该路由是由重定向报文创建的
- M 该路由是被重定向报文修改的
给主机发送数据报的四种方法
- ftp srv4
- ftp 140.252.13.34
- ftp localhost
- ftp 127.0.0.1
前两种情况下,对路由表搜索得到匹配的网络地址140.252.13.32,并把报文传送给以太网驱动程序。IP报文中的目的地址是本机IP地址,因此把此报文送给环回驱动程序,然后由驱动程序把报文放入IP输出队列中。
后两总情况,由于指定了环回接口的名字或IP地址,第一次搜索就找到了匹配的主机地址,因此报文直接被送给环回驱动程序,然后由驱动程序把报文放入IP输出队列中。
三、 ICMP主机与网络不可达差错
当路由器收到一份IP数据报但又在路由表中搜索不到对应的表项时,就要发送一份ICMP“主机不可达”差错报文。
四、ICMP重定向差错
当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。

重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。ICMP重定向允许TCP/IP主机在进行选路时不需要具有智能特性,而把所有的只能特性放在路由器端。

ICMP重定向报文的接收者必须查看3个IP地址:
- 导致重定向的IP地址
在作为ICMP重定向报文数据返回的IP首部中 - 发送重定向报文的路由器的IP地址
包含重定向信息的IP数据报中的源地址 - 应该采用的路由器IP地址
在ICMP报文的4~7字节
关于ICMP的一些规则:
- 重定向只能由路由器产生
- 重定向报文是为主机而不是为路由器准备的
- 路由器应该发送的只是对主机的重定向,而不是对网络的重定向
五、ICMP路由器发现报文
主机在引导以后要广播或多播一份路由器请求报文。一台或更多台路由器响应一份路由器通告报文。另外,路由器定期地广播或多播传送他们的路由器通告报文,允许每个正在监听的主机相应地更新它们的路由表。


路由器发现报文一般由用户进程(守护程序)创建和处理。