目录

一、查看路由表

1、查看路由表的指令

2、路由表部分字段

二、路由转发的宏观思路

三、基于现有路由表进行路由转发的过程

1、案例一:目标IP为192.168.56.3

2、案例二:目标IP为 202.10.1.2

四、目标IP为127.0.0.1的路由转发


IP协议的任务是选择合适的路线,每当一个数据帧到达一个节点的时候,下一步要去往哪个地方,这就是路由的过程;而实际上要怎么将数据帧送到下一个节点,是数据链路层的任务。

就好比唐僧西天取经的时候,每到一个地方就要停下来问去西天下一个地方要怎么走(对应IP层),然后他就可以选择步行或者骑马继续上路(对应数据链路层)。下面我们主要了解的是如何基于现有的路由表进行路由转发,不介绍路由表的创建。

一、查看路由表

1、查看路由表的指令

Linux下查看路由表的指令是 route,Windows是 route print。下面就以Linux环境为例。

2、路由表部分字段

当前云服务器的路由表如下:

字段名字段含义备注
Destination目标网段代表当前设备所直接连接的目标子网(路由器或者主机)。
GateWay下一跳的IP地址* 表示直接连接的是主机,xx.xx.xx.xx表示直接连接的是路由器
Genmask子网掩码
Flags标志位U可以理解为Using,表示当前跳转路径是有效的,即使用中;G可以理解为GateWay,表示下一跳的设备是一个路由器,如果没有G标识,说明下一条直接去往目标子网,无需经过路由器转发。
Iface接口名这个接口用于收发数据,当前服务器只有一个接口来收发数据

二、路由转发的宏观思路

路由转发的宏观思路是 先根据IP地址找到目标网络,然后取到目标网络的路口路由器,再将报文在内网进行转发,最终到达目的主机。

就好比我们要去上海市的世纪大道地铁站,我们的第一步是先到达上海,第二步在上海内乘坐地铁去往世纪大道。在此过程中,我们可能会需要不停地询问“到达上海应该怎么走”,路上的人无非就是两个回答,第一,给你明确地方向;第二,自己不知道,于是让你去找 熟悉路况的人。下面的两个案例分别对应了这两种情况。

三、基于现有路由表进行路由转发的过程

主机X在发送报文之前会先查询当前主机上的路由表,看一下要发给哪个路由器,这就属于局域网通信的内容了,感兴趣的可以参考:局域网通信的过程

我们假设主机X将报文发给了路由器A,下面展示的是路由器A的路由表,后面通过两个案例来了解 路由器A收到报文以后,如何将报文转发出去的。

DestinationGateWayGenmaskFlagsMetricRefUseIface
192.168.10.0*255.255.255.0U000eth0
192.168.56.010.1.2.1255.255.255.0UG000eth1
127.0.0.0*255.0.0.0U000lo
default192.168.10.10.0.0.0UG000eth0

1、案例一:目标IP为192.168.56.3

路由器A收到一个数据帧以后,路由器也有自己的网络协议栈,需要先向上交付,因为目标IP在网络层的报头中,我们需要先去掉数据链路层的报头才能取出网络层的报头。假设路由器A的网络层已经拿到了目标IP地址(192.168.56.3),根据路由转发的宏观思路,我们需要先找到目标网段。

先将目标IP(192.168.56.3)跟第一条路径的子网掩码(255.255.255.0)按位与得到网络号(192.168.56.0),这么做的目的是判断目标IP所处子网 是否等于 当前路由器直接相连的子网。目标所处子网是192.168.56.0,而第一条路径直接连接的网段是192.168.10.0,很显然地址不一致,然后比对下一条路。

将IP地址(192.168.56.3)跟第二条路径的子网掩码(255.255.255.0)按位与得到网络号,网络号为 192.168.56.0。第二条路径直接相连的网络是192.168.56.0,网段一致,说明就是这个方向。然后路由器A就会通过对应的接口eth1发送给下一个路由器(10.1.2.1)

2、案例二:目标IP为 202.10.1.2

跟第一条路径的子网掩码按位与得到网络号为192.168.56.0,不匹配,比对下一条路。

跟第二条路径的子网掩码按位与得到的网络号也是192.168.56.0,不匹配,比对下一条路。

...

结果到最后发现,所有的路都不匹配。换成现实中的例子就是问的人都不知道路,于是就会让我们去找熟悉路况的人。这里也是同理,路由器A通过默认接口,也就是最后一条路径,将你的报文从eth0发送给路由器(192.168.10.1),即让这个报文去查其他路由器的路由表。

补充:将子网掩码与目标IP按位与,其实就是将目标IP以同样的划分方式转换成对应的网段,以此来比对网段是否匹配。就好比我们在比较二进制和十进制的时候,一般都是先将二进制按照对应的规则,转化成十进制,然后再比较。

四、目标IP为127.0.0.1的路由转发

我们经常会用到这个IP来表示当前主机,路由转发的过程也很简单,其实就是报文在向下封装的时候,到达网络层查询路由表发现,目标IP就是当前主机,此时就不会继续向下封装,而是直接向上交付。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐