网络层设备

掌握路由器的组成和功能,以及掌握路由表的画法,会在选择题和大题中考察。

路由器

路由器(Router)是一种实现网络互连的设备,在 OSI 网络模型中的第三层,提供 路由转发 的两种重要机制;可以决定数据包从来源端到目的端所经过的路由路径,这个过程称为路由;将路由器输入端的数据包移至适当路由器输出端,称为转发。

组成

交换结构
1
2
3
1
2
3
输入端口
输出端口
3
2
1
3
2
1
输出端口
输出端口
路由引擎
3 — 网路层
2 — 数据链路层
1 — 物理层
路由
选择
分组
转发

简单来说,路由器主要由以下软硬件组成:

  • 硬件:
    • CPU:运行操作系统,处理路由协议。
    • 交换结构:高速传输数据包,连接输入输出端口。
    • 网络接口:以太网、光纤等,收发数据包。
  • 软件:
    • 操作系统:运行专用的嵌入式操作系统,提供路由协议支持、配置管理等功能。

路由表

路由表是路由器内部的数据结构,其中包含了有关网络之间如何进行路由的信息。路由表是根据路由协议(如 RIP、OSPF、BGP 等)和手动配置动态生成和维护的。

路由表包含如下信息:

  • 目标网络(Network Destination):表示数据包要传递到的目标网络或主机。
  • 子网掩码(Network Mask):确定了目标网络的范围,路由器使用它来匹配数据包的目标地址。
  • 网关(Gateway):数据报转接口的 IP 地址。
  • 接口(Interface):指明了路由器上哪个物理或逻辑接口将被用来转发数据包。
  • 跳数/度量值(Metric):跳数或度量值是路由选择的一个度量标准,用来表示到达目标地址的成本。如果存在多条路由到同一个目的地,路由器通常会选择跃点数最低的路由。

功能

路由表的核心功能就是路由决策和分组转发,接收数据包,查询路由表,然后从某个端口转发出去。

分组转发

分组转发是指路由器根据数据包的目的 IP 地址和其内部的路由表,决定将数据包发送到下一个网络节点(下一跳)或目标设备的过程。其详细工作流程如下:

  1. 接收和解析数据包
  2. 查询路由表:
    • 路由器将目的 IP 地址与路由表中的条目进行匹配,使用最长前缀匹配(Longest Prefix Match, LPM)算法选择最佳路由。
  3. 处理 TTL 和其他字段:
    • 路由器减少数据包的 TTL(Time To Live)值,防止循环转发。
    • 如果需要,执行其他处理,如分片、重组或 NAT。
  4. 转发数据包
    • 根据路由表查找结果,将数据包发送到指定的下一跳地址或直接连接的设备。
注意

路由表在分组转发的时候,需要修改 IP 数据包中的哪些字段?

  1. TTL:TTL 减 1。
  2. checksum:因为 IP 首部有字段被修改,所以校验和需要重新计算。
  3. 如果是 NAT 路由器的话,需要修改 源 IP 或者 目的 IP 地址。
  4. 如果 IP 数据包长度超过输出链路的 MTU,则总长度字段、标志字段、片偏移字段都需要修改。
最长前缀匹配

当路由器收到一个数据包时,它会提取数据包的目的 IP 地址,并与路由表中的条目进行比较。最长前缀匹配的核心是选择与目的 IP 地址前缀匹配最长的路由表项,因为更长的前缀表示更具体的路由,优先级更高。

举个实际例子,假设有如下路由表:

网络前缀子网掩码下一跳
192.168.1.0/24255.255.255.0接口 A
192.168.0.0/16255.255.0.0接口 B
0.0.0.0/00.0.0.0接口 C

对于目的 IP 地址 192.168.1.100

1.192.168.1.0/24 匹配:前 24 位完全匹配。 2.192.168.0.0/16 匹配:前 16 位匹配。 3.0.0.0.0/0 匹配:默认路由,总是匹配。

由于 /24 是最长的前缀,路由器选择接口 A 作为下一跳。

NAT

NAT(Network Address Translation,网络地址转换)用于将一个 IP 地址空间映射到另一个 IP 地址空间,通常用于解决 IPv4 地址不足的问题并提供一定的网络安全功能。NAT 的主要功能是将私有 IP 地址(例如局域网中的 192.168.x.x)转换为公网 IP 地址(或反之),以实现局域网设备与外部网络(如互联网)的通信。

192.168.100.3
192.168.100.4
192.168.100.5
Default Gateway
192.168.1.1
Router/NAT Device
145.12.131.7
(Public IP Address)
private network
the internet

NAT 表

上图中路由器的 NAT 表 的示例如下:

私有 IP 地址私有端口公有 IP 地址公有端口协议连接状态
192.168.100.312345145.12.131.754321TCPESTABLISHED
192.168.100.48888145.12.131.754322UDPNEW
192.168.100.515839145.12.131.754323TCPSYN_SENT
192.168.100.37890145.12.131.754324TCPESTABLISHED

表中条目 包含如下内容:

  • 内部私有 IP 地址:局域网中设备的私有 IP 地址。
  • 内部端口号:发送数据包的私有网络设备所使用的端口号。
  • 外部公有 IP 地址:路由器在广域网(WAN)侧使用的 IP 地址,通常是单个 IP 地址,但也可能有多个。
  • 外部端口号:与内部端口号对应的,由 NAT 分配用于标识特定会话的公有端口号。
  • 协议类型:数据包使用的协议(如 TCP、UDP 等)。

NAT 表的条目通常是动态创建的。当内部设备发起到外部网络的连接时,路由器会在 NAT 表中创建一个条目。通过 NAT 表,路由器可以将从外部网络收到的数据包转发到正确的内部设备。当 NAT 表中的条目因为超时或者 NAT 表容量限制而被删除时,新的数据包会触发创建新的 NAT 条目。

地址转化过程

NAT 的地址转化过程如下所示,分为数据包进入公网 或者 进入内网:

  • 当内网 IP 数据包经过 NAT 路由器向外部发送时,其源 IP 地址和端口会被修改成公有 IP 地址和公有端口。
  • 当 IP 数据包经过 NAT 路由器被发送往内网的某个机器时,其目的 IP 地址和端口会被修改位私有 IP 地址和私有端口。

私有 IP 地址

内网地址(私有 IP 地址)包含以下三个范围:

  • 10.0.0.0/8:从 10.0.0.010.255.255.255,用于大型网络和企业网
  • 172.16.0.0/12172.16.0.0172.31.255.255,用于中型网络
  • 192.168.0.0/16192.168.0.0192.168.255.255,用于小型网

NAT 的 优势 主要在于如下几点:

  • 安全性增强:通过隐藏内部网络的真实结构,NAT 提供了一定程度的安全性,可以有效减少攻击者直接访问内部网络的机会。
  • 地址空间节省:NAT 允许多个设备使用单一的公共 IP 地址,这有助于缓解 IPv4 地址枯竭的问题,尤其是在大规模部署中。
  • IPv4 地址重用:NAT 允许内部网络使用私有 IP 地址,因此可以重复使用相同的私有 IP 地址范围,而不会与其他网络冲突。

路由器 IP 地址

路由器的接口 IP 地址配置根据连接类型有所不同,以下是两种常见场景的说明:

  • 点对点连接

当两个路由器通过直接链路相连时,通常使用小型子网进行 IP 地址分配,例如 IPv4 的 /30 子网。此子网提供两个可用的主机 IP 地址,分别分配给两个路由器的接口。这种配置高效利用 IP 地址资源,适用于点对点链路。

  • 连接到局域网或子网

当路由器的接口连接到一个局域网(LAN)或子网时,该接口会被分配该子网内的一个 IP 地址。通常,路由器接口会配置为子网的第一个或最后一个可用 IP 地址,并作为该子网内设备的 默认网关。例如,在一个 192.168.1.0/24 子网中,路由器接口可能被配置为 192.168.1.1 或 192.168.1.254。

通过合理配置 IP 地址,路由器能够有效实现网络互联和数据转发。

192.168.1.2/26
192.168.1.3/26
192.168.1.66/26
192.168.1.67/26
H1
H2
H3
H4
Internet
IF1
IF2
IF3
Network Destination
Network Mask
Interface
Gateway
default
0.0.0.0
IF1
192.168.1.254
192.168.1.0
255.255.255.192
IF2
192.168.1.1
192.169.1.64
255.255.255.192
IF3
192.168.1.65
192.168.1.253/30
101.1.2.10
Router 1
Router 2
Routing Table For Route2