4.3--入门知识扫盲,IPv4的头部报文解析,数据报分片,地址分类(包你看一遍全部记住)
IPv4协议:网络世界的快递包裹指南(附拆箱说明书)
“IPv4就像一张明信片,既要写清楚地址,又要控制大小别超重” —— 某网络工程师的桌面铭牌
一、IPv4报头:快递面单的终极艺术
1.1 报头结构图(吃货简化版)
这里我们的第二排是负责报文切片,这个在后面会有详细的概述
1.2 报头字段详解(快递员版)
字段名 | 长度 | 江湖作用 | 现实比喻 |
---|---|---|---|
Version (版本) | 4bit | 声明是IPv4还是IPv6 | 快递公司LOGO |
IHL (头部长度) | 4bit | 报头长度(单位4字节) | 面单用了多少张便利贴 |
ToS (服务类型) | 8bit | 快递加急/普通 | 选择顺丰还是邮政 |
Total Length | 16bit | 整个包裹大小(最大65535字节) | 包裹重量不超过电梯承载 |
Identification | 16bit | 分片身份证号 | 快递单号 |
Flags (标志位) | 3bit | DF(别切)/MF(还有分片) | "易碎勿压"标签 |
Fragment Offset | 13bit | 分片偏移量(单位8字节) | 拼图的位置编号 |
TTL (生存时间) | 8bit | 最多经过多少路由器 | 快递员体力值 |
Protocol (协议) | 8bit | 上层协议类型(TCP=6,UDP=17) | 包裹里是文件还是生鲜 |
Header Checksum | 16bit | 头部校验和 | 面单防伪码 |
Source IP | 32bit | 发件人地址 | 你的淘宝收货地址 |
Destination IP | 32bit | 收件人地址 | 女朋友家的地址 |
二、IP分片:当包裹太大时的骚操作
2.1 分片原理(切蛋糕流程)
graph TDA[原始数据包1500字节] --> B{MTU=500的路由器}B --> C[切!]C --> D[分片1: 500字节]C --> E[分片2: 500字节]C --> F[分片3: 500字节]D --> G((MF=1, Offset=0))E --> H((MF=1, Offset=62))F --> I((MF=0, Offset=124))
分片计算小课堂:
原始数据包:1500字节
MTU限制:500字节
每个分片数据量 = MTU - IP头(20) = 480字节
实际分片数:ceil(1500/480)=4片 (这里示例简化为3片)
偏移量计算:480/8=60 → 实际偏移量需要按8字节对齐
2.2 分片重组规则
- 同一身份证:Identification字段相同
- 偏移量连续:Offset字段形成序列
- 最后一片:MF标志位为0
- 超时机制:重组等待时间通常30秒
(段子:某黑客伪造分片导致服务器内存溢出,堪称"分片炸弹")
三、IP地址分类:网络世界的房地产
3.1 传统分类法(小区户型图)
类别 | 地址范围 | 默认掩码 | 现实比喻 | 私有地址段 |
---|---|---|---|---|
A类 | 1.0.0.0 - 126.255.255.255 | 255.0.0.0 | 豪华别墅区 | 10.0.0.0/8 |
B类 | 128.0.0.0 - 191.255.255.255 | 255.255.0.0 | 高端小区 | 172.16.0.0/12 |
C类 | 192.0.0.0 - 223.255.255.255 | 255.255.255.0 | 普通公寓 | 192.168.0.0/16 |
D类 | 224.0.0.0 - 239.255.255.255 | 组播专用 | 小区广播站 | 无 |
E类 | 240.0.0.0 - 255.255.255.255 | 保留未使用 | 未开发地块 | 无 |
3.2 CIDR表示法(现代精装公寓)
传统分类:192.168.1.0/24 → 255.255.255.0
CIDR表示:192.168.1.0/26 → 可划分4个子网(每个子网62主机)
子网划分实例:
原始网络:192.168.1.0/24
切成四个子网:
• 192.168.1.0/26 (1-62)
• 192.168.1.64/26 (65-126)
• 192.168.1.128/26 (129-190)
• 192.168.1.192/26 (193-254)
(灵魂配图建议:用俄罗斯套娃表示子网划分)
四、专业知识点总结
4.1 IPv4头部关键字段
- TTL机制:每经过一个路由器减1,防止数据包无限循环
- 分片限制:DF=1时禁止分片,常用于路径MTU发现
- 协议字段对照表:
- 1 → ICMP (网络诊断)
- 6 → TCP (可靠传输)
- 17 → UDP (快速传输)
- 89 → OSPF (路由协议)
4.2 IP地址发展史
- 分类寻址:1981年RFC791定义
- 子网划分:1985年RFC950引入
- CIDR时代:1993年RFC1519终结分类时代
- NAT技术:缓解IPv4地址枯竭的续命丹
4.3 分片注意事项
- 性能影响:分片增加路由器处理负担
- 安全风险:分片可用于规避防火墙检测
- 重组漏洞:早期系统存在分片缓冲区溢出风险
五、灵魂问答:为什么需要IP分片?
Q:为什么不直接拒绝大包?
A:就像快递站不能拒收大件,但可以拆分运输Q:分片有什么缺点?
A:1. 丢失任意分片导致整个数据包失效2. 增加网络设备处理负担3. 安全隐患(分片攻击)Q:如何避免分片?
A:使用Path MTU Discovery技术,找到路径最小MTU
“IPv4就像乐高积木,拆开容易组装难” ——《网络工程从入门到改行》
相关文章:
4.3--入门知识扫盲,IPv4的头部报文解析,数据报分片,地址分类(包你看一遍全部记住)
IPv4协议:网络世界的快递包裹指南(附拆箱说明书) “IPv4就像一张明信片,既要写清楚地址,又要控制大小别超重” —— 某网络工程师的桌面铭牌 一、IPv4报头:快递面单的终极艺术 1.1 报头结构图(…...
Linux生成自签名证书
一、安装OpenSSL 首先确保机器已安装OpenSSL工具OpenSSL的安装可参考:源码编译OpenSSL 二、生成私钥 openssl genpkey -algorithm RSA -out server.key 三、创建证书签署请求(CSR) openssl req -new -key server.key -out server.csr 四、生成自签…...
烽火HG680-KA_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明
之前发布过这个固件包,关于烽火HG680-KA/HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包详细说明一下,汇总总结一些常遇到的情况,这次固件会分开发布,以免混淆。 上一个帖子地址:https://blog.csdn.net/…...
Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析
Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析 一、Teleport:突破组件层级的时空传送 1.1 实现原理图解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…...
Linux Vim 寄存器 | 从基础分类到高级应用
注:本文为 “vim 寄存器” 相关文章合辑。 英文引文,机翻未校。 中文引文,略作重排。 未整理去重,如有内容异常,请看原文。 Registers 寄存器 Learning Vim registers is like learning algebra for the first ti…...
为什么TCP需要三次握手?一次不行吗?
文章目录 1. 三次握手的过程2. 为什么需要三次握手?3. 握手过程中每一步的具体作用4. 简单比喻5. 为什么是三次握手,而不是两次或四次?6. 三次握手中的序列号有什么作用?7. 总结 1. 三次握手的过程 三次握手是建立 TCP 连接的过程…...
OpenGL ES 入门指南:从基础到实战
引言:为什么需要 OpenGL ES? 在当今的嵌入式设备(如智能手机、汽车仪表盘、智能家居中控屏)中,流畅的图形渲染能力是用户体验的核心。OpenGL ES(OpenGL for Embedded Systems) 作为行业标准&am…...
台达PLC转太网转换的教程案例(台达DVP系列)
产品介绍 台达DVP-PLC自投身工业自动化市场以来,始终致力于创新发展,不断推陈出新。其产品紧密贴合市场需求与行业工艺,凭借卓越性能与丰富功能,深受用户青睐。不仅推出了高效的程序与编辑工具,显著提升了主机执行速度…...
Ubuntu24.10编译Android12源码并运行于模拟器中
效果如下: 初始化环境: 运行lunch弹出对应目标 生成模拟器版本镜像 镜像生成成功 生成模拟器启动镜像 编译注意事项: 24.10版本: sudo apt install curl curl -sSL https://gerrit-googlesource.proxy.ustclug.org/git-repo//master/r…...
Java面试易忽略知识点
1. CompletableFuture中thenApply()与thenCompose()的区别 考察点:组合式异步编程 解析: **thenApply()**:接收前序任务结果,返回普通对象(同步转换),适用简单数据处理。**thenCompose()*…...
C#通过SignalR直接返回流式响应内容
1、背景 实现流式响应基本上分为两大技术方案:(1)基于HTTP的Stream处理;(2)基于socket的连接。前者的实现方式有:《C#通过API接口返回流式响应内容—SSE方式》和《C#通过API接口返回流式响应内…...
【排序算法对比】快速排序、归并排序、堆排序
排序算法对比:快速排序、归并排序、堆排序 1. 快速排序(Quick Sort) 原理 快速排序采用 分治法(Divide and Conquer),通过选取基准值(pivot),将数组划分为 小于基准值…...
YOLO11改进-模块-引入空间带状注意力机制(Spatial Strip Attention,SSA)增强模型对空间信息处理能力的重要模块
在图像相关任务中,传统卷积神经网络(CNN)在处理空间信息时,卷积核的感受野有限,难以有效捕捉长距离的空间依赖关系。而自注意力机制虽然能建模长距离依赖,但计算复杂度较高。为了在高效计算的同时更好地捕捉…...
C++内存分配方式
文章目录 1、静态内存分配2、栈内存分配3、堆内存分配4、内存池分配5、placement new语法工作原理示例 placement new应用场景 在C 中,内存分配主要有以下几种方式: 1、静态内存分配 特点:在编译时就确定了内存的分配和释放,内存…...
【经验】Orin系列Ubuntu远程桌面:VNC、NoMachine、URDC
1、VNC 1.1 Ubuntu端 1)安装VNC服务器 sudo apt install tigervnc-standalone-server2)安装xfce4 桌面 xfce4 用资源较GNOME ,KDE较少。适合老机器,轻量级桌面。与windows界面环境类似。 sudo apt install xfce4 xfce4-goodies也可以使用其它的桌面系统,可以使用如下命…...
【RabbitMQ】RabbitMQ消息的重复消费问题如何解决?
可以从消息队列和消费者两方面入手,确保消息处理的幂等性和可靠性。 1.消息重复消费的原因 1.1消息队列的机制 消息确认失败: 消费者处理完消息后,未正确发送确认(ACK)给RabbitMQ,导致消息被重新投递。消息重试机制:…...
Python、MATLAB和PPT完成数学建模竞赛中的地图绘制
参加数学建模比赛时,很多题目——诸如统计类、数据挖掘类、环保类、建议类的题目总会涉及到地理相关的情景,往往要求我们制作与地图相关的可视化内容。如下图,这是21年亚太赛的那道塞罕坝的题目,期间涉及到温度、降水和森林覆盖率…...
Git 分支删除操作指南(含本地与远程)
🚀 Git 分支删除操作指南(含本地与远程) 在多人协作的开发过程中,定期清理已合并的临时分支(如 feature/*、bugfix/*、hotfix/* 等)可以保持仓库整洁,避免混乱。 📌 分支命名规范回…...
视频推拉流EasyDSS点播平台云端录像播放异常的问题排查与解决
视频推拉流EasyDSS视频直播点播平台可提供一站式的视频转码、点播、直播、视频推拉流、播放H.265视频等服务,搭配RTMP高清摄像头使用,可将无人机设备的实时流推送到平台上,实现无人机视频推流直播、巡检等应用。 有用户反馈,项目现…...
v-model+computed实现父子组件数据传递和同步
v-modelcomputed实现父子组件数据传递和同步 1. 父组件2. 子组件说明总结 1. 父组件 <template><div><span>父子组件传值:{{countRef}}<my-counter v-modelcount></my-counter></span></div> </template> <scr…...
一键秒连WiFi智能设备,uni-app全栈式物联开发指南。
如何使用 uni-app 框架实现通过 WiFi 连接设备并进行命令交互的硬件开发。为了方便理解和实践,我们将提供相应的源代码示例,帮助开发者快速上手。 1. 硬件准备 在开始之前,请确保你已经准备好以下硬件设备: 支持 WiFi 连接的设备…...
关于Docker是否被淘汰虚拟机实现连接虚拟专用网络Ubuntu 22.04 LTS部署Harbor仓库全流程
1.今天的第一个主题: 第一个主题是关于Docker是否真的被K8S弃用,还是可以继续兼容,因为我们知道在去年的时候,由于不可控的原因,docker的所有国内镜像源都被Ban了,再加上K8S自从V1.20之后,宣布…...
【C++】动态规划从入门到精通
一、动态规划基础概念详解 什么是动态规划 动态规划(Dynamic Programming,DP)是一种通过将复杂问题分解为重叠子问题,并存储子问题解以避免重复计算的优化算法。它适用于具有以下两个关键性质的问题: 最优子结构&…...
【专栏预告】《VR 360°全景视频开发:从GoPro到Unity VR眼镜应用实战》
【专栏预告】每周天12:00更新,欢迎指导与交流。 专栏地址:《VR 360全景视频开发:从GoPro到Unity VR眼镜应用实战》 前言 随着VR技术的不断发展,360全景视频的需求也在逐年增长。尤其是在VR眼镜端,360全景视频带来了…...
【leetcode100】搜索插入位置
1、题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2…...
Java面试黄金宝典3
1. 什么是 NIO 原理 缓冲区(Buffer): 它是一个线性的、有限的基本数据元素序列,本质上是一块内存区域,被包装成了一个对象,以便于进行高效的数据读写操作。不同类型的基本数据都有对应的Buffer子类…...
vue3 报错 Could not find a declaration file for module ‘/App.vue‘
vue3 报错 Could not find a declaration file for module /App.vue.app.vue路径.js implicitly has an any type 问题描述原因分析:解决方案: 问题描述 Could not find a declaration file for module /App.vue.app.vue路径.js implicitly has an any …...
linux对串口设备文件进行重命名(删除、重建)
0.前言 最近在弄3562的自制板,有很多串口,然后发现设备文件名编号有些跳跃,不方便用户使用,因此,需要对这些设备文件进行重命名 1.查看设备号 我们需要知道目标设备文件的设备号,通过ls -l /dev/tty*查看…...
Linux内核传输层UDP源码分析
一、用户数据包协议(UDP) 1.UDP数据报头 UDP 提供面向消息的不可靠传输,但没有拥塞控制功能。很多协议都使用 UDP,如用于 IP 网络传输音频和视频的实时传输协议 (Real-time Transport Protocol,RTP),此类型…...
GitHub 超火的开源终端工具——Warp
Warp 作为近年来 GitHub 上备受瞩目的开源终端工具,以其智能化、高性能和协作能力重新定义了命令行操作体验。以下从多个维度深入解析其核心特性、技术架构、用户评价及生态影响力: 一、背景与核心团队 Warp 由前 GitHub CTO Jason Warner 和 Google 前…...
【Java基础巩固系列】异常
业务背景 业务开发中,总会遇到代码出现异常的情况,不合理的异常处理或不处理异常除了影响业务功能和中断业务功能外,还会增加排查问题的难度。所以我们要学会正确的使用异常处理。合理的异常处理能减少很多潜在的问题,是提高代码…...
sass介绍
1、Sass简介 Sass 是一种 CSS 的预编译语言。它提供了 变量(variables)、嵌套(nested rules)、 混合(mixins)、 函数(functions)等功能,并且完全兼容 CSS 语法。Sass 能…...
第1章:云原生时代:容器技术的发展历程与核心价值
第1章:云原生时代:容器技术的发展历程与核心价值 作者:DogDog_Shuai 阅读时间:约15分钟 难度:入门级 目录 1. 引言2. 容器技术的发展历程3. 容器技术的核心价值4. 云原生时代的机遇与挑战5. 总结1. 引言...
软考程序员考试知识点汇总
软考程序员考试(初级资格)主要考察计算机基础理论、编程能力及软件开发相关知识。以下是核心知识点总结及备考建议: 一、计算机基础 数制与编码 二进制、八进制、十进制、十六进制转换原码、反码、补码表示(整数与浮点数…...
JVM OOM问题如何排查和解决
在 Java 开发中,JVM OOM(OutOfMemoryError)问题通常是指程序运行时,JVM 无法为对象分配足够的内存空间,导致发生内存溢出的错误。这个问题往往和内存的配置、内存泄漏、或者资源过度使用等因素有关。 1. OOM 错误类型…...
折叠树报表
折叠树报表中包含了三种信息: 1.树组织信息-可展开、收拢 2.节点的统计信息(汇总求和) 3.每个节点对应的数据信息 一、准备数据 mysql8 数据库中存在两张表 org和store表。 org表和部分数据如下,其中orgname是组织的名称,codepath是完整的组织代码,seq是每个节点的顺序,可…...
python 数据可视化matplotib库安装与使用
要使用 matplotlib 库进行数据可视化,首先你需要确保已经安装了该库。如果你还没有安装,可以通过 Python 的包管理器 pip 来安装它。在你的命令行工具中运行以下命令来安装 matplotlib: pip install matplotlib安装完成后,你就可以…...
Springdoc配置参数详解
文章目录 **1. 基础配置****API 文档路径-springdoc.api-docs.path****Swagger UI 路径-springdoc.swagger-ui.path****是否启用 API 文档-springdoc.api-docs.enabled****是否启用 Swagger UI-springdoc.swagger-ui.enabled** **2. 全局元信息-info****应用标题-springdoc.inf…...
抖音视频数据获取实战:从API调用到热门内容挖掘
在短视频流量为王的时代,掌握抖音热门视频数据已成为内容运营、竞品分析及营销决策的关键。本文将手把手教你通过抖音开放平台API获取视频详情数据,并提供完整的代码实现及商业化应用思路。 一、抖音API权限申请与核心接口 抖音API需企业资质认证&…...
【数学建模】灰色关联分析模型详解与应用
灰色关联分析模型详解与应用 文章目录 灰色关联分析模型详解与应用引言灰色系统理论简介灰色关联分析基本原理灰色关联分析计算步骤1. 确定分析序列2. 数据无量纲化处理3. 计算关联系数4. 计算关联度 灰色关联分析应用实例实例:某企业生产效率影响因素分析 灰色关联…...
Spring Boot 与 Couchbase 整合教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot 与 Couchbase 整合教程 环境要求 JDK 8Spring Boot 2.7.xCouchbase Server 7.xMaven/Gradle 步骤 1:创建Spring Boot项目 使用 st…...
Oracle ASM Failgroup故障组
Oracle ASM Failgroup故障组 1. 故障组的核心作用2. 故障组的配置规则3. 故障组的设计最佳实践4. 故障组的实际示例场景1:普通冗余(2个故障组)场景2:高冗余(3个故障组,跨数据中心) 关键注意事项…...
深度学习框架PyTorch——从入门到精通(2)张量
又名:张亮的一生~~ 张量(Tensors)初始化张量张量的属性张量上的操作与NumPy桥接 张量(Tensors) 张量是一种专门的数据结构,类似Python中的数组或者矩阵。在Torch中,我们使用张量来编码模型的输…...
pytorch小记(十三):pytorch中`nn.ModuleList` 详解
pytorch小记(十三):pytorch中nn.ModuleList 详解 PyTorch 中的 nn.ModuleList 详解1. 什么是 nn.ModuleList?2. 为什么不直接使用普通的 Python 列表?3. nn.ModuleList 的基本用法示例:构建一个包含两层全连…...
C语言-动态内存管理
1.为什么要有动态内存分配 我们现如今已经掌握的内存开辟方式有 int main() {int a 0;int arr[30] { 0 };return 0; } 这两种方式,但是这种开辟空间的方式有两个特点: 1.空间开辟大小是固定的 2.数组在申明的时候,必须指定数组的长度&…...
深入解析MySQL数据库分库分表技术
友情提示:本文内容由银河易创(https://ai.eaigx.com)AI创作平台gpt-4-turbo模型生成,仅供参考。 随着互联网应用的快速发展,单一数据库在面对大规模数据时可能会遇到性能瓶颈。因此,数据库分库分表作为一种…...
【Embedded World 2025:边缘 AI、存储革新与 1X nm 工艺重塑嵌入式未来】
Embedded World 2025于3月11-13日在德国纽伦堡举办,作为全球嵌入式系统领域顶级盛会,汇聚超千家展商与3万专业观众,聚焦嵌入式智能、安全管理及行业解决方案。展会呈现边缘AI、低功耗MCU、5G RedCap、新型存储及车规级技术等前沿方向…...
【人工智能基础2】机器学习、深度学习总结
文章目录 一、人工智能关键技术二、机器学习基础1. 监督、无监督、半监督学习2. 损失函数:四种损失函数3. 泛化与交叉验证4. 过拟合与欠拟合5. 正则化6. 支持向量机 三、深度学习基础:深度神经网络1、概念与原理2、多层神经网络训练方法 一、人工智能关键…...
MySQL如何存储表情符号?
存储表情符号 默认mysql的字符集是utf8,排序规则为 utf8_general_ci INSERT INTO department (name) VALUES (😄)在存储表情的时候会报 1366 - Incorrect string value: \xF0\x9F\x98\x84 for column name at row 1, Time: 0.007000s 这时需要修改字符…...
Unity Shader 学习16:全局光照 概念理解
- 全局光照 直接光 间接光,在没有开启GI的情况下是不计算间接光的(如果放了光照探针 倒是可以模拟间接光 <光照探针只影响动态物体>); - 处理对象:静态物体(static) 、 非静态(动态)物体; - 计算方…...