04 路由表的IP分组传输过程
目录
1、路由表的核心结构
2、IP分组传输过程和数据包转发过程
2.1、IP分组传输过程
2.2、数据包转发过程
2.3、IP分组传输过程和数据包转发的区别
3、数据包的变化
3.1、拓扑结构
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分组传输过程
- 确定源和目的终端是否在同一个网络。
比较两个网络地址,如果相同,说明源和目的终端在同一网络,那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)。这种设计实现了网络层的逻辑寻址与数据链路层的物理寻址解耦。
制作不易,麻烦给博主点点赞!
相关文章:
04 路由表的IP分组传输过程
目录 1、路由表的核心结构 2、IP分组传输过程和数据包转发过程 2.1、IP分组传输过程 2.2、数据包转发过程 2.3、IP分组传输过程和数据包转发的区别 3、数据包的变化 3.1、拓扑结构 3.2、传输过程详解(主机A → 主机B) 3.2.1、主机A发送数据 3.2…...
AI Agent 定义与核心要素详解
AI Agent(人工智能代理)是一种能够感知环境、自主决策并执行任务以达成目标的软件实体。它结合了感知、推理、学习和行动能力,能够在复杂环境中独立或协作工作。以下是其核心要素: 1. 感知 AI Agent 通过传感器或数据输入感知环…...
记忆化搜索与动态规划:原理、实现与比较
记忆化搜索和动态规划是解决优化问题的两种重要方法,尤其在处理具有重叠子问题和最优子结构性质的问题时非常有效。 目录 1. 记忆化搜索(Memoization) 定义: 实现步骤: 示例代码(斐波那契数列࿰…...
在 Mac mini M2 上本地部署 DeepSeek-R1:14B:使用 Ollama 和 Chatbox 的完整指南
随着人工智能技术的飞速发展,本地部署大型语言模型(LLM)已成为许多技术爱好者的热门选择。本地部署不仅能够保护隐私,还能提供更灵活的使用体验。本文将详细介绍如何在 Mac mini M2(24GB 内存)上部署 DeepS…...
计算机网络基础简答题资料(对口高考)
1、什么是计算机网络?计算机网络的功能有哪些? 答案:计算机网络,是指将分布在不同地理位置、具有独立功能的多台计算机及其外围设备,通过通信设备和通信线路连接起来,在网络操作系统、网络管理软件及网络通…...
mysql内置工具导入csv包,简单便捷高效
先创建一个你想要的数据库 create database uba; 分析导入文件的格式内容 提前在数据库里创建你需要的表格 不然就会收到”mysqlimport: Error: 1146“大礼包 (你的csv文件名和表格名字一摸一样,大小写也是) use uba; create table userBehavior (us…...
【汽车ECU电控数据管理篇】HEX文件格式解析篇章
一、HEX格式文件是啥 HEX 文件是 Intel 公司提出的一种按地址排列的数据信息格式,通常用于存储嵌入式系统的二进制代码。它以 ASCII 码的形式记录数据,每一行以冒号开头,包含数据长度、地址、记录类型、数据和校验码等信息。HEX 文件常用于程…...
SOLID Principle基础入门
(Robert C. Martin (Uncle Bob)) 什么是SOLID原则? SOLID原则是面向对象编程(OOP)中编写高质量代码的指导方针。实际上,即使不使用SOLID原则,仅通过类、继承、封装和多态性,也可以让程序正常运行。那么为…...
keil主题(vscode风格)
#修改global.prop文件,重新打开keil即可 # Keil uVision Global Properties File # This file is used to customize the appearance of the editor# Editor Font editor.font.nameConsolas editor.font.size10 editor.font.style0# Editor Colors editor.backgro…...
微信小程序读取写入NFC文本,以及NFC直接启动小程序指定页面
一、微信小程序读取NFC文本(yyy优译小程序实现),网上有很多通过wx.getNFCAdapter方法来监听读取NFC卡信息,但怎么处理读取的message文本比较难找,现用下面方法来实现,同时还解决几个问题,1、在回调方法中this.setData不更新信息,因为this的指向问题,2、在退出页面时,…...
大模型使用
prompt生成bot 角色:你扮演一个帮助用户生成大模型prompt内容的角色,不要直接回答问题,而是帮助用户生成prompt 任务:根据用户的输入,分析用户意图,与用户进行多轮沟通,最后根据对话形成最终的prompt 指令:最终形成的prompt必须包含以下6个方面: 1.所有三个引号之间的内容原样输…...
ISP 常见流程
1.sensor输出:一般为raw-OBpedestal。加pedestal避免减OB出现负值,同时保证信号超过ADC最小电压阈值,使信号落在ADC正常工作范围。 2. pedestal correction:移除sensor加的基底,确保后续处理信号起点正确。 3. Linea…...
SpringBoot原理-02.自动配置-概述
一.自动配置 所谓自动配置,就是Spring容器启动后,一些配置类、bean对象就自动存入了IOC容器当中,而不需要我们手动声明,直接从IOC容器中引入即可。省去了繁琐的配置操作。 我们可以首先将spring项目启动起来,里面有一…...
小红书自动评论
现在越来越多的人做起来小红书,为了保证自己的粉丝和数据好看,需要定期养号。 那么养号除了发视频外,还需要积极在社区互动,比如点赞、评论等等,为了节省时间,我做了一个自动化评论工具。 先看效果 那这个是…...
CosyVoice2整合包 特殊声音标记,声音克隆更逼真,新增批量生成
新增批量生成,可用于制作直播话术音频 特殊声音标记 符号示例1_语气加强<strong> </strong>每天都<strong>付出</strong>和<strong>精进</strong>,才能达到巅峰。2_呼吸声[breath][breath] 吸气,[breath] 呼气! [breath] 吸,[b…...
每天一个Flutter开发小项目 (8) : 掌握Flutter网络请求 - 构建每日名言应用
引言 欢迎再次回到 每天一个Flutter开发小项目 系列博客!在之前的七篇博客中,我们已经掌握了 Flutter UI 构建、状态管理、路由导航、表单处理,甚至数据持久化等一系列核心技能。您已经能够构建功能相对完善的本地应用。 然而,在互联网时代,绝大多数应用都需要与服务器进…...
C++Primer学习(4.8位运算符)
4.8位运算符 位运算符作用于整数类型的运算对象,并把运算对象看成是二进制位的集合。位运算符提供检查和设置二进制位的功能,如17.2节(第640页)将要介绍的,一种名为bitset的标准库类型也可以表示任意大小的二进制位集合,所以位运算符同样能用…...
在VSCode中使用MarsCode AI最新版本详解
如何在VSCode中使用MarsCode AI:最新版本详解与使用场景 在当今快速发展的软件开发领域,人工智能(AI)技术的应用已经变得越来越普遍。ByteDance推出的MarsCode AI是一款强大的AI编程助手,旨在帮助开发者更高效地编写代…...
可观测之Tracing-eBPF生态和发展
eBPF生态系统 eBPF已经不仅仅是一个内核技术,而是一个蓬勃发展的生态系统,涵盖了各种工具、库和项目,为可观测性、网络、安全等领域提供了强大的支持。 1. 核心工具与库 bcc (BPF Compiler Collection): 定位: 提供了更底层的e…...
linux 后台执行并输出日志
在Linux系统中,后台执行程序并输出日志通常有多种方法,这里列出几种常见的方法: 1. 使用&将命令放入后台 可以在命令的末尾加上&符号,将命令放入后台执行。例如: your_command > output.log 2>&1…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...
