linux内核:笔记3-网络数据包收发流程

news2024/11/27 2:42:34

1.网络分层中,内核协议栈负责实现网络层和传输层

2.内核对用户进程提供socket接口用以调用

3.Linux内核包含链路层驱动用来驱动网络设备

4.内核网络层用来实现IP、ICMP以及IGMP

5.内核层传输层用来实现TCP和udp协议

6.内核源码中网络设备驱动对应的代码位于driver/net/ethernet目录下;

不同厂商的网卡驱动分配在不同的目录下:

7.内核和网络设备驱动是通过中断的方式处理的

8.网卡驱动硬中断:对cpu的相关引脚上触发一个电压变化,以通知CPU处理数据

9.中断处理下半部分的软中断:是通过给内存中的一个变量的二进制值通知软中断处理程序

ksoftirqd

10.内核网卡收包环节:

参考:Linux网络包接收过程_linux内核网络接收数据包_Yi Ian的博客-CSDN博客

 

10.1 数据网线到达服务器网卡

10.2 网卡将数据帧DMA(Direct Memory Access)到内存

        DMA:零拷贝技术( DMA、PageCache)_dma 零拷贝_况祥彬的博客-CSDN博客

10.3 硬中断通知cpu

10.4 cpu响应硬中断简单处理后发出软中断

10.5 ksoftirqd进程处理软中断调用网卡驱动注册的poll函数开始收包

10.6 帧从ring buffer上摘下来保存为一个skb

        skb :skb结构和相关操作函数_skb_shinfo_分享放大价值的博客-CSDN博客

10.7 协议层 开始处理网络帧,处理完后的data被放到socket队列

10.8 内核唤醒用户进程

-----------------------------------

11.ksoftirqd:内核软中断线程,不停的判断有没有软中断需要被处理

12.subsys_initcall 来初始化各个子系统,其中执行net_dev_init函数进行网络子系统的初始化

13.协议栈注册:内核时通过注册的方式实现

14.网卡驱动初始化:

        内核:调用网卡驱动probe->网卡驱动获取mac地址

        网卡驱动:DMA初始化,注册ethtool是实现函数,注册net_device_ops,netdev等变量

                        napi初始化,注册poll函数

        

15.启动网卡:内核调用net_device_ops中注册的open函数如igb_open->网卡驱动

                       分配RX,TX队列内存,注册新中断处理函数,打开硬中断,等待包进来

16.硬中断处理:网卡把帧DMA到内存的ringbuffer,并向cpu发出IRQ 中断,cpu调用驱动注册的硬中断处理函数,启动NAPI,发出软中断

        当ringbuffer 满的时候,可以通过ethtool命令来加大环形队列的长度

 

        

                

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KDZD-100A触摸屏回路电阻测试仪

一、简介 测试仪是根据电力执行标准DL/T845.4-2004,采用高频开关电源技术和数字电路技术相结合设计而成。它适用于开关控制设备回路电阻的测量。其测试电流采用国家标准推荐的直流100A。可在电流100A的情况下直接测得回路电阻,并用数字显示出来。测量准确…

劝你们不要去外包,两年外包生涯做完,感觉自己废了一半....

先说一下自己的情况。大专生,17年通过校招进入湖南某软件公司,干了接近5年的点点点,今年年上旬,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的功能测试…

​TPAMI 2023 | 无监督域适应语义分割新视角:统一图像和特征层次的对齐

©PaperWeekly 原创 作者 | 陈超奇 单位 | 香港大学 研究方向 | 迁移学习 论文标题: I2F: A Unified Image-to-Feature Approach for Domain Adaptive Semantic Segmentation 论文链接: https://arxiv.org/abs/2301.01149(预印版&#x…

了解微服务技术栈

在了解微服务技术栈之前,我们先通过图片去了解微服务技术的类别。 微服务技术体系 技术栈模块图 微服务技术对比 服务框架 用JAVA技术开发微服务,比较主流的选择有:Spring Cloud 和 Dubbo。 Spring Cloud是在Spring基础上构建的,…

机器学习之朴素贝叶斯二、情感分析实践

目录标题 一、什么是朴素贝叶斯?二、利用朴素贝叶斯进行情感分析1. 数据类别说明2. 什么是词袋模型3. 数据展示4. 利用词袋模型进行词表构建5. 到了这一步,我们的前期工作都已经准备好了,有了样本的向量化数据,开始进行 朴素贝叶斯…

2023年北京.NET线下技术沙龙来了!大咖分享,还有精品好礼等你

MASA技术团队来北京啦! 为了与北京的.NET开发者们更深入的交流学习,我们将在北京市举办一场.NET线下技术沙龙。同时也是希望通过举办这样的线下沙龙,让更多的.NET开发者了解我们,加入.NET开源技术生态,向更多的.NET开…

SpringCloud-服务间通信OpenFeignRibbon

服务间通信&OpenFeign&Ribbon 一、服务间通信1.创建两个服务并注册到服务中心1.1.服务添加相关依赖1.2.编写配置文件application.yml1.3.入口类加上注解启动Eureka Client 2.Product服务中提供调用方法3.User服务中使用RestTemplate调用 二、负载均衡及Ribbon组件1.负载…

《三》包管理工具

包管理工具 npm: npm:Node Package Manager,Node 包管理器,目前已经不仅仅作为 Node 的包管理工具,也作为前端的包管理工具来管理包。 npm 管理的包是存放在一个名为 registry 的仓库中的,发布一个包时是…

AI歌手——超简单一键运用ACE Studio来训练模拟真人唱歌

目录 1.安装ACE Studio 2.打开ACE Studio 3.导入midi或音频 4.调试音频 5.调整人物音色音高 6.调整歌词 7.自动添加呼吸​编辑 8.成品演示(周杰伦の稻香——鲤阮) 1.安装ACE Studio 安装地址 ACE Studio | Create Limitless Vocals with AI (t…

如何用AI画56个民族的女孩!

大家好,我是菜鸟哥! 目前在带领600多个小伙伴一起玩AI!Chatgpt现在是最火最出圈的产品,而一旦文字和图像,声音,视频结合可以演化出很多很多的需求。前面我们公众号已经分享了很多很多关于chatgpt的使用和技…

大势智慧软硬件技术答疑第二期

1. 编辑模型视图为什么是空的呢?工程这里也选了obj数据位置。 答:CtrlT选择下瓦块就可以,或者点这个图标。 2. 支持编辑DSM 生成正射吗? 答:重建大师,模方,和dasview均支持直接生产正射和DSM&a…

idea-properties文件编码为iso-8859-1修改为utf-8

一、现状 idea中properties文件编码为iso-8859-1并且为灰色不可修改 二、修改成utf-8 command,打开preferences 如下图操作即可

机器学习——logit正则化

机器学习——logit正则化 文章目录 机器学习——logit正则化[toc]1 logit模型正则化2 logit回归求解器2.1 ℓ 1 \ell_1 ℓ1​和 ℓ 2 \ell_2 ℓ2​正则化2.2 e l a s t i c − n e t elastic-net elastic−net正则化 1 logit模型正则化 logit模型能实现分类,识别…

励志长篇小说《周兴和》书连载之四 屋漏偏遇连天雨

屋漏偏遇连天雨 周兴和的母亲就死于那个寒冷的冬天。 她死时是1969年农历正月十八的早晨。 这时,周兴和的大女儿刚出生40多天。 母亲的病其实已经拖了好长时间了。刚开始她还能起床给一家人做饭,干点轻微的家务事。渐渐地,她开始不能吞食东…

如何成为年薪70万的全栈开发和测试人员?必备技能一网打尽

目录 引言 什么是全栈开发人员? 为什么需要全栈开发人员? 成为Full Stack Developer所需的技能组合 什么是软件栈? LAMP栈 MERN是基于JavaScript的技术的集合: Full Stack Developer的职责 技术的准备 一、测试基础 二…

面试官常问的音视频技术点!

一、前言: 今天继续给大家分享最近星球上的星友音视频面试题目,希望对大家有用! 下面是具体面试问的问题: 二、面试题目: 1、请说下H264的两种形态: Annex B格式:这种格式常用于网络流媒体传输…

yum源下载,及安装本地rpm包

yum源下载: yumdownloader rpm包名 如 :要下载 关于 pcre2-devel的包, 发现需要 依赖: Downloading packages: (1/4): pcre2-10.23-2.el7.x86_64.rpm | 20…

架构师备战(一)-软考如何备考

我要备战的是系统架构设计师,那么软考有哪些可供我们选择的考试呢。 1、软考能考哪些 我们知道,软考的体系结构有很多,比如初级的程序员,中级的软件设计师,高级的系统架构师等。具体有哪些,大概有如下这些…

华硕ROG STRIX B760-G GAMING WIFI小吹雪D5评测:最能超的小主板 轻松提升14%

一、前言:华硕推出新版B760-G小吹雪主板 加入DDR5内存支持 和以往的每一代规格一样,DDR5内存上市初期的表现并不如人意,频率是高了,但延迟也高了,导致性能提升一般般。 经过一两年的演进,DDR5内存的时序延迟…

港联证券|熊市牛市出现的原因?出现时应该怎么办?

熊市和牛市是股市专业术语,都指的是股市的一种形式。那么熊市牛市出现的原因?出现时应该怎么办?下面就由港联证券为大家进行分析: 熊市牛市出现的原因? 熊市出现原因: 1、市场利空消息出现 比如公司业绩…