为了了解路由表的概念,我们先来了解一下数据包到达路由器后发生了什么。
我们知道路由器可以处理OSI模型中物理层、数据链路层、网络层的数据。由于物理层主要为数据传输提供环境,所以不用考虑。
在数据链路层,路由器检查数据帧中目的地址中的数据链路标志符,如果路由器的接口标志符与之相匹配,则路由器将数据帧中的数据包提取出来,送入网路层去处理。
在网络层中,路由器检查数据包中目的地址IP,若目的地址和路由器接口IP或是所有主机的IP,则进一步检查数据包的协议字段,然后再把被封装的数据包发送适当的内部进程。若不与以上相匹配,则需要进行路由选择。通过路由选择将数据包送往目的地址,或选择丢弃。
在路由选择过程中,路由表起了重要的作用。如果数据包可被路由,那么路由器就会检查路由表来寻找合适的路径。为了准确的描述目的和去往目的的路径,路由表中至少包含两个内容——目的地址、指向目的地址的指针。路由器匹配路由表按照精确度递减的顺序,可选地址如下排列:
主机地址
子网
一组子网
主网
一组主网
默认地址
如果目的地址不能和路由器的路由表相匹配则丢弃此数据包,并相源地址发送一条ICMP报文,表示目标IP不可达。
路由表中的信息对于数据转发具有很重要的作用,路由表中的信息可以从以下三种途径获得
1通过直连网络获得
2通过静态路由人工输入获得
3通过动态路由协议自动发现共享信息获得