网络层设备
路由器
路由器(Router)是一种实现网络互连的设备,在 OSI 网络模型中的第三层,提供 路由 与 转发 的两种重要机制;可以决定数据包从来源端到目的端所经过的路由路径,这个过程称为路由;将路由器输入端的数据包移至适当路由器输出端,称为转发。
组成
简单来说,路由器主要由以下软硬件组成:
- 硬件:
- CPU:运行操作系统,处理路由协议。
- 交换结构:高速传输数据包,连接输入输出端口。
- 网络接口:以太网、光纤等,收发数据包。
- 软件:
- 操作系统:运行专用的嵌入式操作系统,提供路由协议支持、配置管理等功能。
路由表
路由表是路由器内部的数据结构,其中包含了有关网络之间如何进行路由的信息。路由表是根据路由协议(如 RIP、OSPF、BGP 等)和手动配置动态生成和维护的。
路由表包含如下信息:
- 目标网络(Network Destination):表示数据包要传递到的目标网络或主机。
- 子网掩码(Network Mask):确定了目标网络的范围,路由器使用它来匹配数据包的目标地址。
- 网关(Gateway):数据报转接口的 IP 地址。
- 接口(Interface):指明了路由器上哪个物理或逻辑接口将被用来转发数据包。
- 跳数/度量值(Metric):跳数或度量值是路由选择的一个度量标准,用来表示到达目标地址的成本。如果存在多条路由到同一个目的地,路由器通常会选择跃点数最低的路由。
功能
路由表的核心功能就是路由决策和分组转发,接收数据包,查询路由表,然后从某个端口转发出去。
分组转发
分组转发是指路由器根据数据包的目的 IP 地址和其内部的路由表,决定将数据包发送到下一个网络节点(下一跳)或目标设备的过程。其详细工作流程如下:
- 接收和解析数据包
- 查询路由表:
- 路由器将目的 IP 地址与路由表中的条目进行匹配,使用最长前缀匹配(Longest Prefix Match, LPM)算法选择最佳路由。
- 处理 TTL 和其他字段:
- 路由器减少数据包的 TTL(Time To Live)值,防止循环转发。
- 如果需要,执行其他处理,如分片、重组或 NAT。
- 转发数据包
- 根据路由表查找结果,将数据包发送到指定的下一跳地址或直接连接的设备。
路由表在分组转发的时候,需要修改 IP 数据包中的哪些字段?
- TTL:TTL 减 1。
- checksum:因为 IP 首部有字段被修改,所以校验和需要重新计算。
- 如果是 NAT 路由器的话,需要修改 源 IP 或者 目的 IP 地址。
- 如果 IP 数据包长度超过输出链路的 MTU,则总长度字段、标志字段、片偏移字段都需要修改。
最长前缀匹配
当路由器收到一个数据包时,它会提取数据包的目的 IP 地址,并与路由表中的条目进行比较。最长前缀匹配的核心是选择与目的 IP 地址前缀匹配最长的路由表项,因为更长的前缀表示更具体的路由,优先级更高。
举个实际例子,假设有如下路由表:
网络前缀 | 子网掩码 | 下一跳 |
---|---|---|
192.168.1.0/24 | 255.255.255.0 | 接口 A |
192.168.0.0/16 | 255.255.0.0 | 接口 B |
0.0.0.0/0 | 0.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 地址(或反之),以实现局域网设备与外部网络(如互联网)的通信。
NAT 表
上图中路由器的 NAT 表 的示例如下:
私有 IP 地址 | 私有端口 | 公有 IP 地址 | 公有端口 | 协议 | 连接状态 |
---|---|---|---|---|---|
192.168.100.3 | 12345 | 145.12.131.7 | 54321 | TCP | ESTABLISHED |
192.168.100.4 | 8888 | 145.12.131.7 | 54322 | UDP | NEW |
192.168.100.5 | 15839 | 145.12.131.7 | 54323 | TCP | SYN_SENT |
192.168.100.3 | 7890 | 145.12.131.7 | 54324 | TCP | ESTABLISHED |
表中条目 包含如下内容:
- 内部私有 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.0
到10.255.255.255
,用于大型网络和企业网172.16.0.0/12
:172.16.0.0
到172.31.255.255
,用于中型网络192.168.0.0/16
:192.168.0.0
到192.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 地址,路由器能够有效实现网络互联和数据转发。