目录
1、路由表的核心结构
路由器通过路由表决定数据包转发路径,路由表关键字段包括:
- 目的网络:Destination(标网络地址,如192.168.1.01)
- 子网掩码:Netmask(如255.255.255.0,简写为/24)
- 下一跳地址:NextHop(直连或相邻路由器的IP地址)
- 出接口:Interface(数据包转发出口,如eth0eth0)
目的网络 | 子网掩码 | 下一跳 | 出接口 |
---|---|---|---|
0.0.0.0 | 0.0.0.0 | 203.0.1.113 | eth1 |
192.168.1.0 | 255.255.255.0 | - | eth0 |
192.168.1.0 | 255.255.255.252 | 192.168.2.1 | eth2 |
2、IP分组传输过程和数据包转发过程
2.1、IP分组传输过程
- 确定源和目的终端是否在同一个网络。
比较两个网络地址,如果相同,说明源和目的终端在同一网络,那IP分组传输过程将无需经过路由器。 - 根据默认网关找到第一跳路由器,路由器逐跳转发。
在这一步将进行数据包的转发过程,下面2.2将详细讨论。 - 直接交付
当路由器和目的终端之间没有其他路由器,即目的终端和该路由器的其中一个接口连接在同一个网路上,路由器通过该网络将IP分组直接传输给终端B。
2.2、数据包转发过程
当路由器收到IP数据包时,按以下步骤处理:
解封装与目标IP提取:剥离数据链路层帧头,提取目标IP地址(如192.168.1.5)。
路由表匹配:最长前缀匹配(Longest Prefix Match)
选择子网掩码最长(即最精确)的条目。
例如,目标IP 192.168.1.5 可匹配:192.168.1.0/30、192.168.1.0/24,最终选择/30条目(掩码长度30 > 24)。下一跳处理
间接路由:若需中转(如192.168.1.0/30),将数据包发往下一跳IP地址。
直连网络:若下一跳为“-”(如192.168.1.0/24),直接通过出接口转发。数据包转发
封装新帧头:根据出接口类型(如以太网),通过ARP获取下一跳MAC地址,重新封装数据链路层帧头。
更新TTL与校验和:TTL值减1,重新计算IP头部校验和。无匹配处理
若无匹配条目且无默认路由(0.0.0.0/0),丢弃数据包并返回ICMP“目标不可达”错误。
2.3、IP分组传输过程和数据包转发的区别
特征 | IP分组传输过程 | 数据包转发过程 |
---|---|---|
范围 | 全局性(跨多网络设备) | 局部性(单台设备处理) |
时间维度 | 从发送到接收的完整时间线 | 瞬时行为(纳秒级单次处理) |
依赖关系 | 依赖所有中间节点的正确转发 | 仅依赖当前设备的路由表与接口状态 |
协议参与 | 涉及网络层、传输层甚至应用层 | 仅网络层(IP协议) |
3、数据包的变化
3.1、拓扑结构
(局域网A) (广域网) (局域网B)
192.168.1.0/24 10.2.3.0/24
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 主机A │ │ 路由器R1│─────────────│ 路由器R2│
│ IP:192.168.1.10 │ LAN口:192.168.1.1 │ WAN口:203.0.113.2 │
│ MAC:00:1A:2B:3C:4D:5E │ WAN口:203.0.113.1 │ LAN口:10.2.3.1 │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ 交换机 │ │ 光纤链路│ │ 交换机 │
└─────────┘ └─────────┘ └─────────┘
┌─────────┐
│ 主机B │
│ IP:10.2.3.5
│ MAC:00:AA:BB:CC:DD:EE
└─────────┘
3.2、传输过程详解(主机A → 主机B)
3.2.1、主机A发送数据
封装逻辑:
以太网帧头 IP头部 TCP头部 应用数据
┌─────────────┬───────────────────┬───────────────────┬─────────────┐
| 目标MAC | 源IP 目标IP | 源端口 目标端口 | 实际载荷 |
| (R1-LAN口) | 192.168.1.10 | 54321 80 | "Hello" |
| 00:11:22:33:44:55 →10.2.3.5 | |
└─────────────┴───────────────────┴───────────────────┴─────────────┘
3.2.2、路由器R1转发
地址转换:
新以太网帧头 IP头部(保持不变) TCP头部 应用数据
┌─────────────┬───────────────────┬───────────────────┬─────────────┐
| 目标MAC | 源IP 目标IP | 源端口 目标端口 | 实际载荷 |
| (R2-WAN口) | 192.168.1.10 | 54321 80 | "Hello" |
| 00:55:44:33:22:11 →10.2.3.5 | |
└─────────────┴───────────────────┴───────────────────┴─────────────┘
3.2.3、路由器R2转发到主机B
最终封装:
以太网帧头 IP头部(保持不变) TCP头部 应用数据
┌─────────────┬───────────────────┬───────────────────┬─────────────┐
| 目标MAC | 源IP 目标IP | 源端口 目标端口 | 实际载荷 |
| (主机B) | 192.168.1.10 | 54321 80 | "Hello" |
| 00:AA:BB:CC:DD:EE →10.2.3.5 | |
└─────────────┴───────────────────┴───────────────────┴─────────────┘
3.3、地址变化对照表
传输阶段 | 源MAC | 目标MAC | 源IP | 目标IP |
---|---|---|---|---|
主机A → R1 | 00:1A:2B:3C:4D:5E | 00:11:22:33:44:55 | 192.168.1.10 | 10.2.3.5 |
R1 → R2 | 00:11:22:33:44:55 | 00:55:44:33:22:11 | 192.168.1.10 | 10.2.3.5 |
R2 → 主机B | 00:AA:BB:CC:DD:EE | 00:AA:BB:CC:DD:EE | 192.168.1.10 | 10.2.3.5 |
通过这个结构可以清晰看到:MAC地址在每一跳链路层都会改变,而IP地址始终保持端到端一致性(除非经过NAT)。这种设计实现了网络层的逻辑寻址与数据链路层的物理寻址解耦。
制作不易,麻烦给博主点点赞!