网络层理解
网络层理解
网络层是 OSI 模型的第三层,主要负责 跨网络的数据传输,核心任务是 路由选择 和 分组转发。
网络层核心功能

网络层关键协议
| 协议 | 作用 | 示例 |
|---|---|---|
| IP (IPv4/IPv6) | 数据包路由和寻址 | 192.168.1.1 |
| ICMP | 网络状态检测和错误报告 | ping、traceroute |
| OSPF/BGP | 动态路由选择 | 互联网 AS 自治系统 |
| ARP | IP → MAC 地址解析 | 局域网通信 |
| IPSec | 安全加密传输 | VPN |
数据包(Packet)结构
网络层数据包主要分成首部和数据组成
网络层数据包图示

网络层头部图示

数据包各组成部分说明
-
版本号(Version)
- 表示协议版本。IPv4包中这个字段占4位,IPv6包中也是如此。
- 示例:IPv4为4,IPv6为6。
-
首部长度(Header Length)
- 表示IP头部的长度,单位为32位字。IPv4头部通常是20字节,若有选项则可能更长。
-
服务类型(Type of Service, ToS)
- 也称为“优先级字段”,包含网络层的数据包优先级信息,例如延迟、吞吐量、可靠性等。
-
总长度(Total Length)
- 指整个数据包的大小(包括数据和头部),单位为字节。IPv4数据包最大可达65535字节。
-
标识符(Identification)
- 用于唯一标识一个分段的包,在数据包被分割时,用于数据包的重组。
| 属性 | 说明 |
|---|---|
| 长度 | 16比特(取值范围:0~65535) |
| 生成规则 | 由发送方主机按顺序分配,通常每发送一个IP包递增1 |
| 复用时机 | 当标识符计数达到65535后归零 |
| 关键要求 | 同一数据包的所有分片必须相同,不同数据包的标识符必须不同 |
- 标志(Flags)
- 该字段控制是否可以对数据包进行分片。3位字段,标志位中最重要的是“分片标志”和“更多分片”标志。

- 该字段控制是否可以对数据包进行分片。3位字段,标志位中最重要的是“分片标志”和“更多分片”标志。
| 标志位 | 名称 | 功能 |
|---|---|---|
| DF | Don’t Fragment | - 1:禁止分片(若需分片则丢弃并返回ICMP错误) - 0:允许分片 |
| MF | More Fragments | - 1:后续还有分片 - 0:当前是最后一个分片 |
-
片偏移(Fragment Offset)
-
在数据包被分片时,表示数据片段相对于原始数据包的偏移量。
-
核心规则
-
单位:8字节(因此实际字节偏移量 = 片偏移值 × 8)
-
计算式:片偏移 = ⌊当前分片起始字节位置 / 8⌋
-
最大值:13比特 → 最大偏移值=8191 → 可表示最大原始包长度=65528字节(含IP头)
-
-
分片重组验证

-
-
生存时间(Time to Live, TTL)
-
TTL 的定义
-
全称:Time to Live(生存时间)
-
位置:IPv4 头部中的 8位字段(取值范围:0~255)
-
单位:跳数(Hops),每经过一个路由器减1
-
初始值:通常由操作系统设置(Windows=128,Linux=64,网络设备=255)
-
-
TTL 的核心用途
- 防止网络环路
- 当路由表错误导致环路时,TTL 归零后数据包被丢弃,避免耗尽带宽。
- 触发机制:


- 防止网络环路
-
限制传播范围
- 控制数据包可穿越的最大路由器数量(如设置TTL=16可限制在本地网络)。
-
路径发现工具
-
Traceroute 原理:
-
发送TTL=1的探测包,第一个路由器返回ICMP超时
-
逐步增加TTL值,记录沿途路由器IP
示例:Hop 1: 192.168.1.1 (TTL=1)Hop 2: 10.0.0.1 (TTL=2)Hop 3: 203.0.113.45 (TTL=3)
- 常用路由追踪工具
- Windows 下
tracert和pathping - Linux下
traceroute,tracepath和mtr
- Windows 下
-
-
-
TTL的工作流程

-
不同协议的TTL特性
-
| 协议/设备 | 默认TTL值 | 特殊行为 |
|---|---|---|
| Windows | 128 | Ping命令可自定义TTL |
| Linux | 64 | Traceroute使用UDP+ICMP |
| 路由器 | 255 | 通常不修改经过包的TTL |
| IPv6 | Hop Limit | 功能等同TTL但字段名不同 |
-
协议(Protocol)
- 指示数据包的上层协议,如TCP、UDP等。IPv4头部中该字段为8位。
- 常见协议类型及编号
协议编号(十进制) 协议名称 用途 典型应用 1 ICMP 网络诊断和错误报告 ping、traceroute 2 IGMP 组播管理 视频会议、IPTV 6 TCP 可靠面向连接传输 HTTP、SSH、FTP 17 UDP 无连接高效传输 DNS、DHCP、QUIC 41 IPv6封装 IPv6 over IPv4隧道 6to4隧道 47 GRE 通用路由封装 VPN、SD-WAN 50 ESP IPsec 加密负载 VPN安全传输 51 AH IPsec 认证头 数据完整性验证 89 OSPF 动态路由协议 企业内网路由 -
头部校验和(Header Checksum)
- 用于校验IP头部是否损坏。它是一个16位的字段,用于对头部数据进行错误检测。
-
源IP地址(Source IP Address)
- 数据包的发送端IP地址。它是32位(IPv4)或128位(IPv6)。
-
目的IP地址(Destination IP Address)
- 数据包的接收端IP地址。它是32位(IPv4)或128位(IPv6)。
-
选项(Options)
- 这个部分是可选的,在标准IP数据包中可能没有。它包含一些用于调试、控制的扩展信息(例如时间戳、路由记录等)。
-
数据(Data)
- 数据部分(也叫有效载荷或Payload),存放应用层传输的数据,通常由TCP/UDP协议提供的段构成。
片偏移讲解和图示
片偏移(Fragment Offset)是IP协议中分片数据包的一部分,它用于指示分片数据包中数据的相对位置。简而言之,当一个大的IP数据包被分片传输时,每个分片的数据部分都包含一个偏移量,告诉接收端该分片在整个数据包中的位置。
分片和片偏移
在IP协议中,当数据包过大时(超过了最大传输单元 MTU,通常是1500字节),它需要被分割成多个较小的数据包,这个过程叫做分片。每个分片都会有一个“片偏移”字段,用来表示该分片在整个原始数据包中的相对位置。
片偏移的作用
- 片偏移表示当前分片中数据相对于原始数据包的起始位置的偏移量,以8字节为单位。
- 例如,如果一个数据包被分成4个分片,每个分片的偏移量就告诉接收端数据应该如何重组。
举个例子
假设有一个大数据包,其大小为4000字节,我们需要将其分成4个分片来传输。每个分片的大小为1000字节(假设1500字节的MTU,去掉了头部20字节)。每个分片都会有一个偏移量,表示它的数据在整个原始数据包中的位置。
分片过程:
-
分片1:
- 数据:从第0字节开始,大小1000字节
- 偏移:0(表示这个分片的数据从原始数据包的0字节开始)
-
分片2:
- 数据:从第1000字节开始,大小1000字节
- 偏移:125(表示该分片的数据从原始数据包的1000字节处开始,1000 ÷ 8 = 125)
-
分片3:
- 数据:从第2000字节开始,大小1000字节
- 偏移:250(表示该分片的数据从原始数据包的2000字节处开始,2000 ÷ 8 = 250)
-
分片4:
- 数据:从第3000字节开始,大小1000字节
- 偏移:375(表示该分片的数据从原始数据包的3000字节处开始,3000 ÷ 8 = 375)
偏移字段的计算
片偏移是以8字节为单位的。例如,第一个分片的偏移是0,第二个分片的偏移是1000 ÷ 8 = 125,以此类推。
图示说明

关键说明
-
片偏移计算
-
分片2的起始字节为 1000,片偏移 = 1000 / 8 = 125
-
分片3的起始字节为 2000,片偏移 = 2000 / 8 = 250
-
分片4的起始字节为 3000,片偏移 = 3000 / 8 = 375
-
-
MF标志
-
前3个分片的 MF=1(More Fragments),表示后续还有分片
-
最后一个分片的 MF=0,表示结束
-
-
单位一致性
-
所有偏移量以 8字节 为单位(RFC 791规定)
-
因此数据长度必须是 8的倍数(若不足会填充)
-
Wireshare抓包验证
- 发送大数据
使用命令行工具,比如ping(通过设置大的数据包大小)来生成分片包
ping -s 4000 <目标IP>
这将发送一个4000字节的数据包,超过MTU限制,触发IP层分片。
-
过滤分片数据包
使用Wireshark的过滤器来仅显示分片数据包。在Wireshark的过滤框中,输入以下过滤表达式:
ip.flags.mf == 1 || ip.frag_offset > 0- ip.flags.mf == 1:显示“更多分片”标志设置为1的分片,意味着这不是最后一个分片。
- ip.frag_offset > 0:显示偏移量大于0的分片,表示这是非第一个分片。

在wireshare中最后一个偏移片重组数据

Wireshare 截图翻译理解

Internet Protocol Version 4, Src: 10.0.0.201, Dst: 10.0.0.1
┌──────────────────────┬──────────────────────────────────────────────┐
| 字段 | 说明 |
├──────────────────────┼──────────────────────────────────────────────┤
| 0100 .... | 版本号: IPv4 (二进制0100) |
| .... 0101 | 头部长度: 5×4=20字节 (标准IPv4头部) |
| Differentiated | 区分服务字段: 0x00 (默认无QoS优先级) |
| 0000 00.. | DSCP: CS0 (普通流量) |
| .... ..00 | ECN: 不支持拥塞通知 |
| Total Length | 总长度: 1500字节 (含IP头和数据) |
| Identification | 标识符: 0xeb60 (60256) |
| Flags | 分片标志: 0x1 (更多分片) |
| 0... .... | 保留位: 未设置 |
| .0.. .... | DF=0 (允许分片) |
| ..1. .... | MF=1 (后续还有分片) |
| Fragment Offset | 片偏移: 0 (当前是第一个分片) |
| Time to Live | 生存时间: 64 (每经过路由减1) |
| Protocol | 协议类型: ICMP (1) |
| Header Checksum | 头部校验和: 0x54f7 (校验未启用) |
| Source Address | 源IP: 10.0.0.201 |
| Destination Address | 目的IP: 10.0.0.1 |
| [Reassembled IPv4...]| 该分片属于帧59的IPv4重组数据 |
| [Stream index: 0] | 数据流索引: 0 |
└──────────────────────┴──────────────────────────────────────────────┘
相关文章:
网络层理解
网络层理解 网络层是 OSI 模型的第三层,主要负责 跨网络的数据传输,核心任务是 路由选择 和 分组转发。 网络层核心功能 网络层关键协议 协议作用示例IP (IPv4/IPv6)数据包路由和寻址192.168.1.1ICMP网络状态检测和错误报告ping、tracerouteOSPF/BGP动…...
代码随想录训练营38天 || 322. 零钱兑换 279. 完全平方数 139. 单词拆分
322. 零钱兑换 思路: 动规5部曲: 1.确定dp数组以及下标的含义: dp数组表示能凑出零钱的最少硬币数,下标表示要兑换的零钱 2.确定递推公式: j为背包容量,i为物品的下标 dp[ j ] min(dp[ j -coins[ i…...
从Archery到NineData:积加科技驱动数据库研发效能与数据安全双升级
积加科技作为国内领先的企业级数字化解决方案服务商,依托自研的 A4X 数字化平台(https://a4x.io/),专注于为全球范围内的视觉物联网(IoT)设备提供 PaaS/SaaS 服务。致力于运用 AI 技术赋能物联网世界的各类…...
C#委托介绍
委托可以将方法作为参数传递,同时委托也可以自己作为参数传递 委托可分为自定义委托delegate 无返回值的Action 与有返回值的Func委托 也有匿名委托与Lamada 委托支持多播是事件的基础 用处如在分线程调用主线程的UI invoke public delegate string Say(stri…...
解决splice改变原数组的BUG(拷贝数据)
项目场景: 项目中难免遇到需要删除改变数组的方法,去重,删除不要的数据等 问题描述: 但是splice方法会删除掉数据改变原数组,返回的是改变之后的数组,即使你是赋值的还是会影响到原数组的数据 GoodsInfo…...
齐次坐标系下的变换矩阵
理解齐次坐标系下的变换矩阵 文章目录 理解齐次坐标系下的变换矩阵1 引言2 齐次坐标系的简要介绍2.1 齐次坐标系的定义2.2 为什么需要齐次坐标系?2.3 齐次坐标系的特殊性质2.3.1 点和向量的区分2.3.2 投影变换 3 齐次坐标系下的变换矩阵3.1 二维变换矩阵平移变换缩放…...
开源Midjourney替代方案:企业级AI绘画+PPT生成系统+AI源码
「AI取代设计师?」开源Midjourney替代方案:企业级AI绘画PPT生成系统 ——零代码私有化部署,5倍速出图100%版权合规 设计师行业的危机与机遇 1. 传统设计流程的致命短板 痛点 人工设计 AI系统 单张海报耗时 3小时(含反复修改…...
2025.04.20【Lollipop】| Lollipop图绘制命令简介
Customize markers See the different options allowing to customize the marker on top of the stem. Customize stems See the different options allowing to customize the stems. 文章目录 Customize markersCustomize stems Lollipop图简介R语言中的Lollipop图使用ggp…...
【Harmony】常用工具类封装
文章目录 一,简介二,网络请求工具类2.1、鸿蒙原生http封装2.2、第三方axios封装(需提前下载依赖) 三、录音笔相关工具类3.1、录音封装(录入)3.2、录音封装(放音/渲染)3.3、文件写入封装(针对录音/放音功能) 四、RDB关系型数据库4.1、relationalStore简答…...
DCDC芯片,boost升压电路设计,MT3608 芯片深度解析:从架构到设计的全维度技术手册
一、硬件架构解析:电流模式升压 converter 的核心设计 (一)电路拓扑与核心组件 MT3608 采用恒定频率峰值电流模式升压(Boost)转换器架构,核心由以下模块构成: 集成功率 MOSFET 内置 80mΩ 导通电阻的 N 沟道 MOSFET,漏极(Drain)对应引脚 SW,源极(Source)内部接…...
Cline 之Plan和Act模式
Cline 提供了 "Plan & Act"双模式开发框架。适用在不同的场景。 一、核心模式理念 通过结构化开发流程提升AI编程效率,采用"先规划后执行"的核心理念。 该框架旨在帮助开发者构建更易维护、准确性更高的代码,同时显著缩短开发…...
深入了解 WebGIS 系统:构建地理空间信息的网络桥梁
一、引言 在当今数字化时代,地理空间信息的获取、分析和共享变得越来越重要。WebGIS(网络地理信息系统,Web - based Geographic Information System)应运而生,它将地理信息系统(GIS)的强大功能…...
【中级软件设计师】程序设计语言基础成分
【中级软件设计师】程序设计语言基础成分 目录 【中级软件设计师】程序设计语言基础成分一、历年真题二、考点:程序设计语言基础成分1、基本成分2、数据成分3、控制成分 三、真题的答案与解析答案解析 复习技巧: 若已掌握【程序设计语言基础成分】相关知…...
C++项目 —— 基于多设计模式下的同步异步日志系统(3)(日志器类)
C项目 —— 基于多设计模式下的同步&异步日志系统(3)(日志器类) 整体思想设计日志消息的构造C语言式的不定参函数的作用函数的具体实现逻辑1. 日志等级检查2. 初始化可变参数列表3. 格式化日志消息4. 释放参数列表5. 序列化和…...
【数学建模】随机森林算法详解:原理、优缺点及应用
随机森林算法详解:原理、优缺点及应用 文章目录 随机森林算法详解:原理、优缺点及应用引言随机森林的基本原理随机森林算法步骤随机森林的优点随机森林的缺点随机森林的应用场景Python实现示例超参数调优结论参考文献 引言 随机森林是机器学习领域中一种…...
蓝桥杯 19.合根植物
合根植物 原题目链接 题目描述 W 星球的一个种植园被分成 m n 个小格子(东西方向 m 行,南北方向 n 列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的…...
Linux环境MySQL出现无法启动的问题解决 [InnoDB] InnoDB initialization has started.
目录 起因 强制启用恢复模式 备份数据 起因 服务器重启了,然后服务器启动完成之后我发现MySQL程序没有启动,错误信息如下: 2025-04-19T12:46:47.648559Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2025-04-1…...
高性能服务器配置经验指南1——刚配置好服务器应该做哪些事
文章目录 安装ubuntu安装必要软件设置用户远程连接安全问题ClamAV安装教程步骤 1:更新系统软件源步骤 2:升级系统(可选但推荐)步骤 3:安装 ClamAV步骤 4:更新病毒库步骤 5:验证安装ClamAV 常用命…...
DePIN驱动的分布式AI资源网络
GAEA通过通证经济模型激励全球用户共享闲置带宽、算力、存储资源,构建覆盖150多个国家/地区的分布式AI基础设施网络。相比传统云服务,GAEA具有显著优势: 成本降低70%:通过利用边缘设备资源,避免了集中式数据中心所需…...
徐州服务器租用:虚拟主机的应用场景
虚拟主机也可以被称为网站空间或者是共享主机,主要是通过软硬件技术将一台物理服务器分割成多个逻辑单元的技术,让每一个单元都拥有着独立的IP地址和完整的网络服务功能,那么虚拟主机的应用场景都有哪些呢? 许多中小型企业会选择租…...
Centos7安装Jenkins(图文教程)
本章教程,主要记录在centos7安装部署Jenkins 的详细过程。 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 一、基础环境安装 内存大小要求:256 MB 内存以上 硬盘大小要求:10 GB 及以上 安装基础java环境:Java 17 ( JRE 或者 JDK 都可…...
【JAVA】十三、基础知识“接口”精细讲解!(二)(新手友好版~)
哈喽大家好呀qvq,这里是乎里陈,接口这一知识点博主分为三篇博客为大家进行讲解,今天为大家讲解第二篇java中实现多个接口,接口间的继承,抽象类和接口的区别知识点,更适合新手宝宝们阅读~更多内容持续更新中…...
边缘计算盒子是什么?
边缘计算盒子是一种小型的硬件设备,通常集成了处理器、存储器和网络接口等关键组件,具备一定的计算能力和存储资源,并能够连接到网络。它与传统的云计算不同,数据处理和分析直接在设备本地完成,而不是上传到云端&#…...
量子计算在密码学中的应用与挑战:重塑信息安全的未来
在当今数字化时代,信息安全已成为全球关注的焦点。随着量子计算技术的飞速发展,密码学领域正面临着前所未有的机遇与挑战。量子计算的强大计算能力为密码学带来了新的应用场景,同时也对传统密码体系构成了潜在威胁。本文将深入探讨量子计算在…...
大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署--完结
大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署 1. ClickHouse与MySQL的区别2. 在群集的所有机器上安装ClickHouse服务端2.1. 在线安装clickhouse2.2. 离线安装clickhouse 3. ClickHouse Keeper/Zookeeper集群安装4. 在配置文件中设置集群配置5. 在每…...
【C++游戏引擎开发】第20篇:基于物理渲染(PBR)——辐射度量学
引言 在基于物理渲染(PBR)中,辐射度量学是描述光与物质交互的核心数学框架。本文将深入解析辐射度量学的四大基础量,双向反射分布函数(BRDF)的物理本质,以及如何通过积分形式推导出渲染方程。最后,通过OpenGL实践,直观展示辐射率(Radiance)在三维场景中的分布规律。…...
19Linux自带按键驱动程序的使用_csdn
1、自带按键驱动程序源码简析 2、自带按键驱动程序的使用 设备节点信息: gpio-keys {compatible "gpio-keys";pinctrl-names "default";pinctrl-0 <&key_pins_a>;autorepeat;key0 {label "GPIO Key L";linux,code &l…...
用银河麒麟 LiveCD 快速查看原系统 IP 和打印机配置
原文链接:用银河麒麟 LiveCD 快速查看原系统 IP 和打印机配置 Hello,大家好啊!今天给大家带来一篇在银河麒麟操作系统的 LiveCD 或系统试用镜像环境下,如何查看原系统中电脑的 IP 地址与网络打印机 IP 地址的实用教程。在系统损坏…...
.net core 项目快速接入Coze智能体-开箱即用-第2节
目录 一、Coze智能体的核心价值 二、开箱即用-效果如下 三 流程与交互设计 本节内容调用自有或第三方的服务 实现语音转文字 四:代码实现----自行实现 STT 【语音转文字】 五:代码实现--调用字节API实现语音转文字 .net core 项目快速接入Coze智能…...
win10中打开python的交互模式
不是输入python3,输入python,不知道和安装python版本有没有关系。做个简单记录,不想记笔记了...
