路由表:

为了说明路由表的组成,先看下我的主机路由表:

   1: 内核 IP 路由表
   2: Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
   3: 10.0.2.0        *               255.255.255.0   U         0 0          0 eth0
   4: link-local      *               255.255.0.0     U         0 0          0 eth0
   5: default         10.0.2.2        0.0.0.0         UG        0 0          0 eth0

对路由表的说明
(1)Destination:目的IP地址或网络地址;
(2)Gateway:即下一站路由器,*表示无须经过下一站路由器就可以直接到达目的地址或目的网络;
(3)Genmask:子网掩码;
(4)Flags:标志字段,这里可能出现U,G,H,D,M,R等,U表示可用;G表示Gateway字段是个路由器,否则表示是个直接出口;H表示Destination是个主机IP地址,没有H表示Destination是网络地址;D表示该路由项由ICMP重定向报文创建;M表示该路由项由ICMP报文修改而来;R表示由动态选路协议恢复的路由项。
多数系统内核对路由表的实现都包含上述内容,其它字段视系统而定。
 
查看路由表的方法:
(1)netstat –r
(2)route
(3)查看相关文件:/proc/net/route
 
IP选路规则:
每当主机要发送IP数据包,都要先搜索路由表,以确定往哪个接口发送数据,并确定下一站路由器,具体的搜索过程如下
(1)搜索匹配的主机地址;
(2)搜索匹配的网络地址;
(3)搜索默认路由。
如果通过以上三个步骤之后都没有匹配的路由项(没有默认路由),则产生主机不可达或者网络不可达ICMP差错报文。
 
导致路由表发生改变的方法或原因:
(1)可以通过route add或者route del来增加或者删除路由项;
(2)ICMP重定向报文导致接收主机修改或者增加路由项;
(3)ICMP路由通告报文也往往会导致路由表发生变化;
(4)动态选路协议(RIP,OSPF等)导致路由表不断更新。
 
ICMP重定向报文格式:

])DG1KZ5F}V%X@1{VTW{)_R

ICMP路由器请求报文格式:

XM{F97QB[)00{0BGY~LRJRF

ICMP路由器通告报文格式:

3HLU2BA1C$7]1OIH7AL7NUO

对于ICMP路由器通告报文的第二行的三个字段,这里详细说明一下:地址数是指该报文中接下来包含的IP地址项项数;地址项长度指的是每个地址项的长度(以4字节为单位,一般值为2);生存时间说明这些路由项的生存时间,以秒(s)为单位。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐