04 路由表的IP分组传输过程

目录

1、路由表的核心结构

2、IP分组传输过程和数据包转发过程

2.1、IP分组传输过程

2.2、数据包转发过程

2.3、IP分组传输过程和数据包转发的区别

3、数据包的变化

3.1、拓扑结构

[3.2、传输过程详解(主机A → 主机B)](#3.2、传输过程详解(主机A → 主机B))

3.2.1、主机A发送数据

3.2.2、路由器R1转发

3.2.3、路由器R2转发到主机B

3.3、地址变化对照表


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分组传输过程

  1. 确定源和目的终端是否在同一个网络。
    比较两个网络地址,如果相同,说明源和目的终端在同一网络,那IP分组传输过程将无需经过路由器。
  2. 根据默认网关找到第一跳路由器,路由器逐跳转发。
    在这一步将进行数据包的转发过程,下面2.2将详细讨论。
  3. 直接交付
    当路由器和目的终端之间没有其他路由器,即目的终端和该路由器的其中一个接口连接在同一个网路上,路由器通过该网络将IP分组直接传输给终端B。

2.2、数据包转发过程

当路由器收到IP数据包时,按以下步骤处理:

  1. **解封装与目标IP提取:**剥离数据链路层帧头,提取目标IP地址(如192.168.1.5)。

  2. 路由表匹配: 最长前缀匹配(Longest Prefix Match)

    选择子网掩码最长(即最精确)的条目。

    例如,目标IP 192.168.1.5 可匹配:192.168.1.0/30、192.168.1.0/24,最终选择/30条目(掩码长度30 > 24)。

  3. 下一跳处理
    直连网络:若下一跳为"-"(如192.168.1.0/24),直接通过出接口转发。

    间接路由:若需中转(如192.168.1.0/30),将数据包发往下一跳IP地址。

  4. 数据包转发

    封装新帧头 :根据出接口类型(如以太网),通过ARP获取下一跳MAC地址,重新封装数据链路层帧头。
    更新TTL与校验和:TTL值减1,重新计算IP头部校验和。

  5. 无匹配处理

    若无匹配条目且无默认路由(0.0.0.0/0),丢弃数据包并返回ICMP"目标不可达"错误。

2.3、IP分组传输过程和数据包转发的区别

特征 IP分组传输过程 数据包转发过程
范围 全局性(跨多网络设备) 局部性(单台设备处理)
时间维度 从发送到接收的完整时间线 瞬时行为(纳秒级单次处理)
依赖关系 依赖所有中间节点的正确转发 仅依赖当前设备的路由表与接口状态
协议参与 涉及网络层、传输层甚至应用层 仅网络层(IP协议)

3、数据包的变化

3.1、拓扑结构

cpp 复制代码
(局域网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发送数据

封装逻辑

cpp 复制代码
以太网帧头            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转发

地址转换

cpp 复制代码
新以太网帧头          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

最终封装

cpp 复制代码
以太网帧头            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)。这种设计实现了网络层的逻辑寻址与数据链路层的物理寻址解耦。

制作不易,麻烦给博主点点赞!

相关推荐
00后程序员张2 小时前
免Mac上架实战:全平台iOS App上架流程的工具协作经验
websocket·网络协议·tcp/ip·http·网络安全·https·udp
喜欢板砖的牛马2 小时前
简述IPv4分配过程,看这一篇就够了
网络协议
old-six-programmer2 小时前
NAT 类型及 P2P 穿透
服务器·网络协议·webrtc·p2p·nat
GLAB-Mary2 小时前
OSPF虚拟链路术语一览:快速掌握网络路由
网络·智能路由器
tan77º2 小时前
【Linux网络编程】网络基础
linux·服务器·网络
DemonAvenger2 小时前
深入理解Go的网络I/O模型:优势、实践与踩坑经验
网络协议·架构·go
笑衬人心。3 小时前
HTTPS详解:原理 + 加解密过程 + 面试问答
java·网络协议·http·面试·https
bing_1584 小时前
MQTT 和 HTTP 有什么本质区别?
网络·网络协议·http
杨浦老苏5 小时前
Docker端口映射查看工具Dockpeek
网络·docker·群晖
未来之窗软件服务5 小时前
通过网页调用身份证阅读器http websocket方法-华视电子————仙盟创梦IDE
网络·网络协议·http·仙盟创梦ide·东方仙盟·硬件接入