IP路由器是连接多个IP网络的设备,其主要的工作就是为经过IP路由器的每个IP数据包寻找一条最佳传输路径。
路由表就是记录了各种传输路径的数据的一张表,分为静态路由表和动态路由表。
静态路由表是事先固定好的路由表,不会随着网络结构的改变而改变。
动态路由表一定的路由选择算法自动调整的路由表。
IP数据包转发过程:
IP数据包根据ARP缓存中查看是不是有目的主机的MAC地址,如果有就直接封装成帧发送到目的主机,如果没有就在本地局域网广播一个ARP请求,然后目的IP主机返回一个ARP数据包,里面有目的主机的MAC地址。
当IP数据包的目的IP不再本地网段时,A要向“缺省网关”发出ARP包,而“缺省网关”的IP地址已经在A系统软件中设置。这个IP地址实际上对应路由器M的入口的IP地址。所以A对“缺省网关”的IP地址广播出一个ARP请求时,路由器M的E0口的MAC回复给A,此时A数据包封装成帧,目的MAC替换为M的E0口MAC。然后再链路层发送给默认路由器数据帧,到达路由器之后再解包到IP网络层,得到目的IP的网段,然后就需要用到上图路由表中的信息了。
根据路由表查找到相关表项,得到下一跳及入口出口的MAC地址,所以IP包再封装为源mac是当前路由器出口MAC,目的MAC是下一跳路由器的数据帧(帧的重写),再经过链路层发送,直到到达目的网段。到达目的网段后再根据目的IP到达目的主机。
路由器的详细工作:
注意路由表中的getway值是直接转发和下一跳路由器地址,如果目的IP命中了路由表, 就直接转发,getway就显示为为*。
route命令查看路由表信息
请看下图路由表相关信息
路由表的作用:
这里一个目的网段对应一个出口
这台主机有两个网络接口,一个网络接口连到192.168.10.0/24网络,另一个网络接口连到
192.168.56.0/24网络;
路由表的Destination是目的网络地址,Genmask是子网掩码,Gateway是下一跳地址,Iface是发送接
口,Flags中的U标志表示此条目有效(可以禁用某些 条目),G标志表示此条目的下一跳地址是某个路由器的
地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发;
转发过程例1:
如果要发送的数据包的目的地址是192.168.56.3
跟第一行的子网掩码做与运算得 到192.168.56.0,与第一行的目的网络地址不符
再跟第二行的子网掩码做与运算得 到192.168.56.0,正是第二行的目的网络地址,因此从eth1接口发送出
去;
由于192.168.56.0/24正 是与eth1 接口直接相连的网络,因此可以直接发到目的主机,不需要经路由器转
发;
转发过程例2:
如果要发送的数据包的目的地址是202.10.1.2
依次和路由表前几项进行对比, 发现都不匹配;
按缺省路由条目, 从eth0接口发出去, 发往192.168.10.1路由器;
由192.168.10.1路由器根据它的路由表决定下一跳地址;