linux网络数据包流程

article/2025/10/8 14:11:54

一、介绍
对于调试linux网卡驱动或者wifi驱动性能,或者排查网络数据丢包的时候,需要对内核处理包要与基本的了解,从而排查出丢包出现在哪个环节,这里给出大致流程和常用排查方法

二、基本框架
1、硬件连接
1)以太网口
在这里插入图片描述网线通过变压器接PHY芯片、PHY芯片通过MII接MAC芯片、MAC芯片接PCI总线
PHY芯片主要负责:CSMA/CD、模数转换、编解码、串并转换
MAC芯片主要负责:
比特流和帧的转换:7字节的前导码Preamble和1字节的帧首定界符SFD
CRC校验

2)LTE/5G
在这里插入图片描述

3)wifi
在这里插入图片描述
三、流程
在这里插入图片描述网卡收到数据包,DMA到内核内存,中断通知内核数据有了,内核按轮次处理消耗数据包,一轮处理完成后,开启硬中断

1、网卡收到数据包。
2、将数据包从网卡硬件缓存转移内存中。
3、通知内核处理。
4、经过TCP/IP协议逐层处理。
5、应用程序通过read()从socket buffer读取数据

1、网卡收到数据包。
网卡本身是有4K以上的内存,用于发送和接收,收到网络信号后,将高低电平转换为数据存于网卡本身的fifo

2、将数据包从网卡硬件缓存转移内存中。
1)网卡申请ring buffer的描述,根据描述找到具体的物理地址,从fifo队列物理网卡会使用DMA将数据包写到skb_buffer
2)NIC触发一个硬中断,每一个硬件中断会对应一个中断号,且指定一个vCPU来处理,NAPI触发软中断,触发napi系统
3)硬件中断的中断处理程序调用驱动程序:
a.禁用网卡硬中断,通知NIC,再来数据不用触发硬中断了,把数据DMA拷入系统内存即可
b.NAPI触发软中断,触发napi系统,消耗ringbuffer指向的skb_buffer,NAPI循环处理ringbuffer数据,处理完成
c.启动网络硬件中断,有数据来时候就可以继续触发硬件中断,继续通知CPU来消耗数据包.


http://chatgpt.dhexx.cn/article/OVRAsMLq.shtml

相关文章

篡改数据包

工具简介 BurpSuite:是一个用于测试 Web 应用程序安全性的图形化工具。该工具使用Java编写,由PortSwigger Web Security开发。 功能 模块 HTTP代理它作为一个 Web 代理服务器运行,并且位于浏览器和目标 Web 服务器之间。这允许拦截、检查和…

数据包覆盖Android,安卓数据包怎么安装 安卓游戏数据包安装教程

安卓数据包怎么安装?安卓数据包放在哪?这是很多安卓单机游戏爱好者经常问的问题,下面小编就为各位玩家带来:安卓游戏数据包安装教程,诸如数据包存放好后,为什么还是不能正常玩都能为您解答~ 安卓数据包怎么安装? 在回答这个问题之前玩家们应该知道,数据包分为两种,一种…

数据包解析

数据包解析 数据包理解七层协议详解OSI七层协议中每一层的特征数据包解析如何改变文本的样式TCP数据包结构: 数据包理解 从专业的角度来说,(网络协议)OSI就是一个开放的通信系统互联参考模型,也是一个定义的很好的协议规范。OSI模型有7层结构…

HTTP数据包详解

1. HTTP报文格式 HTTP由请求和响应两部分组成,所以对应的也有两种报文格式。下面分别介绍HTTP请求报文格式和HTTP响应报文格式。 HTTP请求报文格式 以上表格中,第1行为“请求行”,第2、3、4行为“请求头部”,第5行为空行&#xff…

python构造数据包库_scapy构造数据包

一、进入scapy交互界面 在终端下输入:scapy ,进入交互界面: 二、查看scapy已经实现的网络协议 ls()         列出scapy中已实现的网络协议 ls(协议类型)     查看某个协议头部字段格式 lsc()        列出scapy中可以使用的命令或函数,比如嗅探时,我们经常…

Netty自定义数据包

自定义数据包 粘包现象:两个数据包连在一起,导致无法区分。 分包现象:一个数据包中的数据被间隔。 粘包和分包出现的原因是:没有一个稳定数据结构。 数据包的结构: 自定义数据包包头模块号命令号长度数据 包头&#…

数据包知识

ARP 全称:Address Resolution Protocol 地址解析协议 ARP请求 数据包的目的地址是(ff:ff:ff:ff:ff:ff),这是以太网中的广播地址, 所有发送到这个地址的数据包都会被广播到当前网段中的所有设备。这个数据 包中以太网…

数据帧和数据包解读

数据帧和数据包解读 文章目录 数据帧和数据包解读一、数据帧1.什么是数据帧2.数据帧的组成 二、数据包1.什么是数据包2.数据包的组成 一、数据帧 1.什么是数据帧 就是数据链路层的协议数据单元,它包括三部分:帧头,数据部分,帧尾…

路径规划(一) —— 环境描述(Grid Map Feature Map) 全局路径规划(最优路径规划(DijkstraA*star) 概率路径规划(PRMRRT))

路径规划问题就是把机器人的工作环境量化的描述出来,让机器人知道哪里可以走,哪里不可以走,从而规划出一条可行的轨迹,并且对于轨迹本身进行优化 环境的描述 对于环境的描述,我们一般使用两种方法——Grid map 和 Fe…

路径规划基本理论

路径规划有三个组成部分:空间表示、搜索和启发式算法, 空间表示 空间表示意思就是在执行路径规划之前,为目标构建地图环境。执行任何类型的路径规划,都需要先将地图环境离散化为图形。为了提高路径规划的效果,可以将地…

导航和路径规划

导航技术前言: 导航技术的移动机器人技术的核心和关键技术。自主移动机器人的导航就是让机器人可以自主按照内部预定的信息,或者依据传感器获取外部环境进行相应的引导,从而规划出一条适合机器人在环境中行走的路径。定位,就是机器…

基于采样的路径规划方法

与基于图搜索的方法相比,基于采样的路径规划算法不需要显式构建整个配置空间和边界。 0.概念 Complete Planner(完备规划器) Probabilistic Complete Planner(概率完备的规划器) Resolution Complete Planner&#xf…

路径规划算法:动态规划

如上图所示的实例中,寻找点A到点E代价最小的路径,这是典型的动态规划的应用场景,逆向寻优,正向求解一般分为3步,即三层循环: 第一层循环:遍历每一个阶段; 第二层循环:遍…

ROS 路径规划

目录 一、ROS路径规划算法【转】 二、机器人局部避障的动态窗口法(dynamic window approach) 三、自动驾驶路径规划DWA算法原理解析【转】 0、采样速度 1、oscillation cost function: 2、twirling cost function 3、obstacle function ​4、goal cost function 5. go…

路径规划算法概论

前言:真实世界中人类的路径规划是对记忆信息和实时感知信息综合分析的过程,在虚拟技术中属于行为控制层级的技术。 一,机器人路径规划分类: 1.全局路径规划(环境完全已知) 2.局部路径规划(环境未…

自动驾驶路径规划概况

文章目录 前言介绍1. 路径规划在自动驾驶系统架构中的位置2. 全局路径规划的分类2.1 基础图搜索算法2.1.1 Dijkstra算法2.1.2 双向搜索算法2.1.3 Floyd算法 2.2 启发式算法2.2.1 A*算法2.2.2 D*算法 2.3 基于概率采样的算法2.3.1 概率路线图(PRM)2.3.2 快…

利用matlab来进行路径规划,matlab路径规划系列

前言:本博客将结合常用的路径规划算法进行matlab讲解。 一、路径规划问题所需操作 1.生成地图 告诉电脑你的当前地图环境。比如一个迷宫。这里面就涉及一些图像处理的内容,以及如何把地图转换为matlab数据 例子: 有一张原始地图: 现在要将这图片导入matlab中,转换为matlab…

AGV路径规划方法——A*算法

一、简单理解 它用来表示从当前方块到终点方块大概需要走多少步 b站视频链接 二、文献描述 1、基于时间窗的多AGV调度策略研究 冯鲁波. 基于时间窗的多AGV调度策略研究[D].四川大学,2021.DOI:10.27342/d.cnki.gscdu.2021.000278. 2.AGV自动运输系统调度及路径规划的研…

路径规划基本介绍(一)

一、路径规划的作用 路径规划主要是让目标对象在规定范围内的区域内找到一条从起点到终点的无碰撞安全路径。路径规划中有静态路径规划以及动态路径规划。这里仅针对静态路径规划方法进行简单的介绍,以下路径规划仅指在静态环境下的路径规划。 在进行路径规划的时候…

java 路径规划_应用内路径规划的简单实现

前言 华为Map Kit提供的路径规划API是一套以HTTPS形式提供的步行、骑行、驾车路径规划以及行驶距离计算接口,通过JSON格式返回路径查询数据,提供路径规划能力。 路径规划具体提供如下功能: 步行路径规划 API提供100km以内的步行路径规划能力。…