路由就是报文从源端到目的端的路径。当报文从路由器到目的网段有多条路由可达时,路由器可以根据路由表中最佳路由进行转发。
在计算机网络中,路由表(routing table)是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径。路由表建立的主要目标是为了实现路由协议和静态路由选择。路由表就相当于一张地图告诉数据报该如何去往目的地。
路由器会根据路由表进行数据包的转发:
在ubuntu系统下我们可以使用route-n命令查看系统的路由表:
在windows下可以使用routeprint命令查看系统的路由表:
我们发现ubuntu和windows系统的路由表中都有一条特殊的路由:目标地址为全网地址o.0.0.0,子网掩码为0.0.0.0,对应下一跳的地址为网关地址。那么这条路由的作用是什么呢?
我们先了解一下,计算机或者路由器是如何将一条数据通过网络发送出去的。首先将目的IP地址与自己的子网掩码进行按位与运算得到目的主机的网络号,然后拿该网络号与路由表中的路由进行匹配,如果匹配到了则将数据转发给指定的下一跳,如果没有匹配到,则转发给目标地址为0.0.0.0所对应的下一跳。
因此目标地址为0.0.0.0所对应的那条路由的作用就是:这条路由就是我们所说的默认路由,是对IP数据包中的目的地址找不到存在的其他路由时,路由器所选择的路由。
注意1:当我们发现主机(尤其是一些嵌入式或者物联网的设备)不能够上网或者不能ping通外网的时候,假如检查了IP地址、DNS等设置都没问题后依然不能解决,我们可以查看系统的路由表中是否没有添加默认路由。
注意2:不同的路由器查看路由表的命令不一样
思科路由器查看路由表命令为:show ip route
华为路由器查看路由表命令为:display ip routing-table
路由表可以分为:静态路由和动态路由。
Linux系统静态路由操作:
路由器静态路由操作
我们使用思科的模拟器Cisco Packet Tracer进行路由表的实验:
下载地址:
网络模拟器
实验目的:
通过设置三个路由器的路由表实现主机PC 0与主机PC 1之间的通信
实验步骤:
选择以访客方式登录,之后会弹出思科的官网,直接将官网关掉会返回该软件
全部线路连接之后:
如果连接线上没有显示连接的端口,可以在Options->Preferences中把“Always Show Port Labels in Logical Workspace”勾选上
分别设置主机PC0与主机PC1的IP地址:
我们设PC0的IP:192.168.0.100 子网掩码:255.255.255.0 默认网关:192.168.0.1(默认网关就是Router0 接口Gig 0/0/0的IP的IP地址)
PC1的IP:192.168.3.100 子网掩码:255.255.255.0 默认网关:192.168.3.1(默认网关就是Router2 接口Gig 0/0/1的IP的IP地址)
分别设置三台路由器的IP地址:
分别为三个路由器设置静态路由:
Router0:
ip route 192.168.3.0 255.255.255.0 192.168.1.2
//ip route 0.0.0.0 0.0.0.0 192.168.1.2 //默认路由
Router1:
ip route 192.168.3.0 255.255.255.0 192.168.2.2
ip route 192.168.0.0 255.255.255.0 192.168.1.1
//ip route 0.0.0.0 0.0.0.0 192.168.2.2 //默认路由
Router2:
ip route 192.168.0.0 255.255.255.0 192.168.2.1
//ip route 0.0.0.0 0.0.0.0 192.168.2.1 //默认路由