路由器原理

玩机教程 > Router (48) 2025-06-17 17:18:48

数据链路层实现了链路接入功能,负责将数据从一个节点传输到相邻的节点。

数据链路层的协议很多,以太网是其中最为流行的一个。通过以太网通信的主机,需要连接到同一个以太网网络。不管采用何种设备,以何种方式连接,以太网从逻辑上都可以抽象成这样:

路由原理_图示-98632c61f22c4668aabbf76eef1944b9.png

以太网中的主机都是邻居关系,任何主机都可以通过以太网帧与其他主机进行直接通信。

当然了,设备和连接方式会影响通信的效率,但不会改变通信逻辑。

单个以太网的规模是非常有限的,但我们可以用网络层设备—— 路由器 ,将多个以太网组织成更大的网络。大网络内的所有主机,都可以通过网络层协议—— IP协议 ,进行通信。

为了彻底理解网络层、IP协议以及路由器的工作原理,我们构建一个极简网络拓扑,深入研究:

路由原理_图示-b1dac9f4bdf54cbcbe4c3fcb3d25de4f.png

图中有两个以太网络,分别是以太网①和以太网②。以太网①中有三台主机,分别是 ant 、bee 和 cicada ;以太网②中有两台主机,apple 和 banana ;中间的路由器,同时接入这两个以太网。

我们给以太网①中的通信实体,分配一个 192.168.1.x 段的 IP 地址:

通信实体

网卡

MAC地址

IP地址

路由器 eth1 fa:1c:b2:d0:b0:01 192.168.1.1
ant eth0 1e:1f:84:08:d2:aa 192.168.1.2
bee eth0 e6:04:b1:10:f1:bb 192.168.1.3
cicada eth0 ce:ba:ec:ff:fd:cc 192.168.1.4

同样,给以太网②中的通信实体,分配一个 192.168.2.x 段的 IP 地址:

通信实体

网卡

MAC地址

IP地址

路由器 eth2 ee:21:30:4a:5a:02 192.168.2.1
apple eth0 b6:f1:81:44:21:11 192.168.2.2
banana eth0 22:5b:7c:b3:d6:22 192.168.2.3

此外,每个通信实体还需要配置路由表,我们列举几个例子:

通信实体

规则

ant 192.168.1.x 直接从eth0网卡发出去;192.168.2.x 先发给192.168.1.1,由它负责转发
bee 192.168.1.x 直接从eth0网卡发出去;192.168.2.x 先发给192.168.1.1,由它负责转发
apple 192.168.2.x 直接从eth0网卡发出去;192.168.1.x 先发给192.168.2.1,由它负责转发
路由器 192.168.1.x 直接从eth1网卡发出去;192.168.2.x 直接从eth2网卡发出去

路由表准备好后,主机就可以互相通信了,分为两种不同场景:

  • 本地网通信,例如 ant-bee ;
  • 网际通信,例如 ant-apple ;

本地网通信

主机 ant 和 bee 接入同一个以太网络,它们的 IP 地址也在同一段,这样与主机直接连接的网络称为 本地网 。同一网络内的主机可以直接通信,无须借助第三方。具体如何进行呢?

假设主机 ant 通过 IP 协议向主机 bee 发送数据,数据封装成 IP 包,其中:

  • 源地址 是 ant 的 IP 地址,即: 192.168.1.2
  • 目的地址 是 bee 的 IP 地址,即: 192.168.1.3

IP 包封装好后,主机查询路由表:去往 192.168.1.x 网段的 IP 包,可以直接从 eth0 网卡发出去。这表明:目标网络就是 eth0 网卡接入的本地网络,该 IP 包可以通过以太网帧直接发给目标主机。

接着,主机将 IP 包封装到以太网帧中,从 eth0 网卡发送出去,其中:

  • 源地址 是 ant 主机 eth0 网卡的 MAC 地址,即: 1e:1f:84:08:d2:aa
  • 目的地址 是 bee 主机 eth0 网卡的 MAC 地址, e6:04:b1:10:f1:bb

那么,主机 ant 怎么知道 192.168.1.3 这台主机( bee )的 MAC 地址呢?实际上,主机 ant 内部需要维护一张映射表,记录本地网主机 IP 到 MAC 地址的映射关系:

IP地址

MAC地址

备注

192.168.1.1 fa:1c:b2:d0:b0:01 路由器
192.168.1.3 e6:04:b1:10:f1:bb bee
192.168.1.4 ce:ba:ec:ff:fd:cc cicada

至于这个映射表是如何获得的,谜底将在 ARP 协议一章揭晓。

主机 bee 接到以太网帧后,即可取出 IP 包,进而取出封装在其中的数据。

这就是本地网主机通过 IP 协议通信的全过程,请结合下图理解,重点体会 IP 包和以太网帧的地址:

路由原理_图示-ff54d0e756a0455ea33e558cf2fa20b0.png

 

网际通信

主机 ant 和 apple 位于不同的网络中,IP 地址也不在同一段,无法直接通信。这种跨网络通信称为 网际通信 ,需要借助 路由器 来实现。具体步骤又是怎样的呢?

假设主机 ant 通过 IP 协议向主机 apple 发送数据,数据封装成 IP 包,其中:

  • 源地址 是 ant 的 IP 地址,即: 192.168.1.2
  • 目的地址 是 apple 的 IP 地址,即: 192.168.2.2

IP 包封装好后,主机查询路由表:去往 192.168.2.x 网段的 IP 包,需要先发给路由器 192.168.1.1 ,由它负责转发。由于路由器 192.168.1.1 位于本地网,主机可以将 IP 包搭载在以太网帧中,通过 eth0 网卡发给它。

主机先根据路由 IP 地址从映射表中取出路由的 MAC 地址,然后完成以太网帧封装,其中:

  • 源地址 是 ant 主机 eth0 网卡的 MAC 地址,即: 1e:1f:84:08:d2:aa
  • 目的地址 是路由器 eth1 网卡的 MAC 地址, fa:1c:b2:d0:b0:01

当路由器接到以太网帧后,从中取出 IP 包,发现它是发往 192.168.2.2 的。路由器同样查询路由表,发现: 192.168.2.x 是个直连的本地网络,可以通过 eth2 网卡直接通信。

路由器从内部映射表中查到 192.168.2.2 对应的 MAC 地址,并将 IP 封装在以太网帧中从 eth2 网卡发出去:

  • 源地址 是路由器 eth2 网卡的 MAC 地址,即: ee:21:30:4a:5a:02
  • 目的地址 是 apple 主机 eth0 网卡的 MAC 地址,即 b6:f1:81:44:21:11

主机 apple 接到以太网帧后,即可取出 IP 包,进而得到 ant 发给它的数据。

这就是网际主机通过 IP 协议通信的全过程,请结合下图理解,重点体会 IP 包和以太网帧封装和转发步骤:

路由原理_图示-c04b71014b9945b5850e4c6a46513511.png

 

系统如何获取下一跳网关(路由)的IP地址

Linux系统

route -n

 

Windows系统

tracert命令

tracert命令,通过向目标IP地址发送不同TTL值的Internet控制消息协议ICMP回应数据包,发送规则是:先发送TTL为1的回应数据包,并在随后的每次发送过程将TTL递增1,直到目标IP地址响应或TTL达到最大值。路径上的每个路由器,在转发数据包之前至少将数据包上的TTL递减1,直到TTL减为0时,路由器将ICMP超时消息发回源地址。通过检查ICMP超时信息,tracert命令就可以显示出目标IP地址所经过的路径。Tracert命令格式如下:Tracert[-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name如果不带选项的话,会将IP地址解析成主机名,因为需要查询DNS,所以速度比较慢。

  • -d选项:不将IP地址解析成主机名,因此路由追踪速度快很多。
  • -h选项:说明路由的最大跳数,默认是30跳。
  • -w选项:说明等待每一个ICMP响应报文的时间,默认4s,如果接收超时,则显示星号*。跳数和等待时间,使用默认值即可,所以平时一般都不需要添加这两个选项。
  • -j选项:说明ICMP报文要使用IP头中的松散源路由选项,后面是经过的中间节点的地址或主机名字,最多9个,各个中间节点用空格隔开。

这里说明下松散源路由和严格源路由,严格源路由是指,相邻路由器之间不得有中间路由器,并且所经过路由器的顺序不可更改。而松散源路由,则相反,相邻路由器之间可以有中间路由器。一般的路由追踪,也用不到-j这个选项。除非是针对大的网络故障,需要检测几条路径到达同一个目的地址,才需要使用-j选项。所以,通常情况下,我们使用tracert–d这种格式就可以了。我们以追踪抖音网站为例。

路由原理_图示-2bc638f4022d4de9a62929ad3c43c79b.png

172.16.31.1 二级路由,192.168.50.1 一级路由,113.248.162.65 公网路由

 

pathping命令

Pathping命令的格式如下:pathping [-g host-list] [-hmaximum_hops] [-n] [-p period] [-q num_queries] [-w timeout] target_name

  • -g选项:使用松散源路由,功能与tracert 命令的-j选项相同。
  • -h选项:追踪的最大跳数,功能与tracert 命令的-h选项相同。
  • -n选项:不将IP地址解析成主机名,功能与tracert 命令的-d选项相同。
  • -q选项:发送给每个路由器的请求报文的数量,默认100个。
  • -p选项:两次ping之间的时间间隔,默认0.25秒。
  • -w选项:每次等待回声响应的时间,默认3秒。功能与tracert 命令的-w选项相同。

因此,在通常情况下,我们使用pathping -n格式就行了,路由追踪速度更快。下面,还是以百度为例:Pathping运行的第一个结果就是路由表,这个和tracert的结果是一致的。

路由原理_图示-af5c18f90f054ba99a386f289c2d4e65.png

 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
路由表查看 &gtl; route PRINT //打印所有路由表 &gtl; route PRINT -4 //打印IPv4路由表 &gtl; route PRINT -6 //打印
数据链路层实现了链路接入功能,负责将数据从一个节点传输到相邻的节点。数据链路层的协议很多,以太网是其中最为流行的一个。通过以太网通信的主机,需要连接到同一个以太
本实验演示 静态路由 配置方法,迫于没有真实的路由设备,我们拿 Linux 主机来顶。(只有)Linux 是一个非常流行的服务器操作系统,不仅可以用来部署软件服
前言本文主要对新路由3 D2和小米路由3G做一个实际的使用测评
提示:操作有重置风险,请先备份配置 !!!!OpenWRT 设置为纯AP+交换机功能,也就是普通硬路由的AP模式环境说明小米路由器3GOpenWRT 版本 24
需求如下图,每个部门都组建一个局域网,部门所有主机都接入其中。每个局域网都通过一台路由器接到核心路由网络,这样不同局域网间可以互相通信。注意到,路由网络上部署了
immortalwrt/openwrt 23.05 x86 主路由必选插件推荐i18n-base-zh 语言基础包
概述OpenWRT 二级路由实现IPv6中继(IPv6中继模式又称之为:IPv6穿透、IPv6 Passthrough),IPv6由于底层设计原因,NAT6模式
一、Newifi 3(新路由3) D2刷Breed资源准备​硬件准备:Newifi 3(新路由3) D2 原厂固件路由器一台;电脑一台;网线一根; 软件准备:winscp( 文件复制工具)put...
OpenWRT小子网划分实战我们知道172.16.0/24 可以分配主机254个,还是很多,有些情况需要切分更小的子网。那么就需要172.16.0.x/26 类
主机如果安装了多块网卡,就可以接入多个不同的网络。笔记本电脑一般都有无线网卡,可以连接 Wifi 网络;还有网线插槽,可以连接有线网络。虽然我们通常只连接一个网
在 Spring 框架中,通过构造函数自动装配 bean类似于byType,但适用于构造函数参数。在启用自动装配的 bean 中,它查找构造函数参数的类类型,然后按类型对所有构造函数参数执行自动...
DHCPv6自动分配分为DHCPv6有状态自动分配和DHCPv6无状态自动分配。DHCPv6有状态自动分配。DHCPv6服务器自动配置IPv6地址/前缀,同时分