当前位置: 首页 > Linux

跟随消息,开启精彩旅程

时间:2023-04-07 01:57:14 Linux

摘要:跟随消息,从windows主机通过路由器走到linux主机。本文分享自华为云社区《报文在不同设备的奇妙之旅》,作者原文:鼓瑟吹笙。简介上图中,HostA的消息被转发到HostB。所需报文从本地网关开始,经过路由器RouterA,到达主机B。主机A:Windows主机;RouterA:路由器;主机B:Linux主机;让我们从主机A的路由表开始,看看网络中不同位置的路由表。在看路由表之前,我们先了解一下路由的概念。路由是数据通信网络中最基本的元素。路由信息是指导消息发送的路径信息,路由过程就是中继转发消息的过程。路由器/主机通过路由表选择路由,每个路由器/主机至少维护一张路由表。主机的路由表保存了IP配置的路由和接口产生的直连路由。路由器的路由表保存着各种路由协议发现的路由。根据来源的不同,路由表中的路由通常可以分为以下几类:三类:链路层协议发现的路由(也称为接口路由或直连路由)。由网络管理员手动配置的静态路由。由动态路由协议发现的路由。主机A上的路由配置:主机必须配置自己的IPV4地址、子网掩码和默认网关;网关也称为互联网连接器或协议转换器。网关在网络层之上实现网络互连。通俗的理解,网关就是转发路由的设置。如果路由的下一跳是网关,则说明路由的下一跳是路由器,而不是主机;查看Windows中的路由表:第一条路由,配置的默认网关自动生成的路由,掩码为0.0.0.0,下一跳为默认网关;网关路由就是下一跳是网关的路由,首先明确,网关路由不是路由协议。路由协议是路由器之间维护路由表的规则,用于发现路由、生成路由表和指导报文转发。掩码为0.0.0.0的路由统称为默认路由。要理解默认路由,首先要知道路由转发的最长匹配原则。路线搜索是逐位匹配的。从前到后,如果中间出现不匹配,则表示失败。在所有失败之前,具有最多相同数字的路由表条目是下一跳。简单的说,匹配最长掩码的路由就是转发路由。逐层查找,会发现IP分支中的0.0.0.0,也就是默认路由。比较容易理解,就是让那些找不到非零地址的路由终于有了转发的地方。理解了上面的概念就可以知道,第一条路由就是默认网关路由,它的作用是从本机发送消息。如果目的地址不是本机,则直接从默认网关转发;报文的目的地址为10.1.1.1,不是本地IP地址,默认从网关抛出;RouterA的路由路由器上有两张表,一张是控制平面的路由表,一张是转发平面的转发表。为了方便理解转发,我们先来看一下华为路由器的转发表。在转发表中可以配置出接口GE1/1/1为interfaceGE1/1/1ipaddress10.1.1.10255.255.255.010.1.1.0/24为网段路由,目的地址为IP地址和掩码相加,下一跳就是接口上配置的IP地址(无转发意义,仅显示意义)。用于将目的地址在同一网段的报文通过指定接口转发。10.1.1.10/32为主机路由,目的地址为接口IP地址,所有主机路由掩码均为32位,下一跳为loopback端口地址127.0.0.1,表示本机地址为1.1.1.1,对于目的地址为1.1.1.1的IP包,需要发送到本机处理。综上所述,主机路由器用于接收发送到本地设备的数据包。10.1.1.255/32是子网广播路由。该算法是对IP地址和反向掩码地址进行异或运算。IP协议规定该网段广播地址的所有三层接口都需要收到该地址的上报。根据文章,实际应用中几乎没有使用到网段广播特性的场景。RouterA收到报文后,按照最长匹配原则查找转发表,找到10.1.1.0网段路由,从GE1/1/1转发报文;HostB上的路由是Linux操作系统,它和Windows主机有很多相似之处1.网关路由:Linux操作系统需要配置Linux上的接口配置在ETH0上,配置的IP地址为10.172.153.72,以及掩码长度为24。查看路由表,发现一个现象:接口路由生成的主机路由在路由表中不存在。这就是Linux系统区别于路由和Windows的地方。如果是本机IP地址,不查路由表,直接命中。再说一个有趣的现象。在linux表中,gateway是0.0.0.0的路由,说明需要在host内部查找报文。转发时,会使用目的地址查找ARP表。如果找不到相应的MAC地址,则丢弃该数据包。点击关注,第一时间了解华为云的新鲜技术~