• 路由转发的过程


    目录

    一、查看路由表

    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就是当前主机,此时就不会继续向下封装,而是直接向上交付。

  • 相关阅读:
    Salesforce中国区或将解散?国产SaaS如何在竞争中扬长避短
    Jmeter(十二):线程组元件&第三方插件的线程组压力和负载线程详解
    K8S知识点(七)
    【前端设计模式】之适配器模式
    一个信号间相互干扰问题的发现及解决方法
    分布式ID选型对比(2)
    AI for Science:科研范式、开源平台和产业形态
    Java中阻塞队列原理、特点、适用场景
    echarts 柱状图加背景加渐变
    全网最全【数据结构与算法】408真题实战(含代码+详解)—— 线性表专题(持续更新...)
  • 原文地址:https://blog.csdn.net/challenglistic/article/details/126755003