网络层设备
路由器组成和功能
组成部分:
- CPU(Central Processing Unit):路由器的中央处理单元,负责处理数据包的转发和路由决策。CPU 执行路由算法、管理路由表和处理控制面的任务。
- 内存(Memory):路由器的内存用于存储操作系统、路由表、缓存、缓冲区以及临时数据。内存的大小和速度对路由器的性能至关重要。
- 接口(Interfaces):路由器通常具有多个网络接口,例如以太网端口、无线局域网接口(Wi-Fi)、串行接口等,用于连接到不同类型的网络和设备。
- 操作系统(Operating System):路由器运行的操作系统通常是专门设计的网络操作系统,用于管理设备、执行路由协议、配置接口和提供网络服务。
- 路由表(Routing Table):路由表是路由器的核心组成部分,它存储了关于网络之间如何进行路由的信息。路由表包括目标网络的 IP 地址、下一跳路由器、接口和跃点数等信息。
功能:
- 数据包转发:路由器的主要功能之一是根据路由表将数据包从一个接口转发到另一个接口,以便在不同网络之间进行通信。
- 路由决策:路由器根据路由协议(如 RIP、OSPF、BGP 等)和路由表的信息,决定如何将数据包传送到目标网络。
- NAT(Network Address Translation):路由器可以执行 NAT,将内部私有网络中的设备使用单一的公共 IP 地址映射到互联网上,以增加网络安全性和节省 IP 地址。
路由表的分组转发
路由表
路由表是路由器内部的数据结构,其中包含了有关网络之间如何进行路由的信息。路由表是根据路由协议(如 RIP、OSPF、BGP 等)和手动配置动态生成和维护的。
路由表包含如下信息:
- 目标网络(Network Destination):表示数据包要传递到的目标网络或主机。
- 子网掩码(Network Mask):确定了目标网络的范围,路由器使用它来匹配数据包的目标地址。
- 网关(Gateway):数据报转接口的 IP 地址。
- 接口(Interface):指明了路由器上哪个物理或逻辑接口将被用来转发数据包。
- 跳数/度量值(Metric):跳数或度量值是路由选择的一个度量标准,用来表示到达目标地址的成本。如果存在多条路由到同一个目的地,路由器通常会选择跃点数最低的路由。
分组转发
- 当路由器收到一个数据包,它首先查找路由表以确定数据包的目标网络。
- 一旦确定了目标网络,路由器使用路由表中的信息决定下一跳路由器和出接口。
- 路由器会将数据包复制到适当的出接口,并以数据链路层帧的形式发送到下一跳路由器。
- 这个过程在网络中不断重复,直到数据包到达目标网络。
注意
路由表在分组转发的时候,需要修改 IP 数据包中的哪些字段?
- TTL:TTL 减 1。
- checksum:因为 IP 首部有字段被修改,所以校验和需要重新计算。
- 如果是 NAT 路由器的话,需要修改 源 IP 或者 目的 IP 地址。
- 如果 IP 数据包长度超过输出链路的 MTU,则总长度字段、标志字段、片偏移字段都需要修改。
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 地址,路由器能够有效实现网络互联和数据转发。