Linux内核网络

文章目录

  • 前言
  • 网络协议栈
        • 图解
        • 功能
  • 发送Linux内核网络数据包
        • 图解
        • 流程
  • 接收Linux内核网络数据包
        • 图解
        • 流程
  • 最后

前言

你好,我是醉墨居士,因为Linux内核涉及的内容极多,我们初学者如果一上来就开始深挖细节,很有可能会在Linux内核代码的茫茫大海之中迷失自我。本篇博客希望可以帮助大家先有个全局的视野,剩余的细节内容,根据沿着全局的脉络去学习,可能会有意想不到的效果🫠

网络协议栈

图解

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/00c1ab74129f491bb39a893c339fe2fc.png

功能

应用层负责为上层应用程序提供用户接口
传输层负责端到端通信,数据的分割与重组,多路复用与解复用
网络层负责路由选择,数据的分组与重组,转发分组报文
链路层负责错误检测与纠正,帧同步,处理物理地址
物理层负责在网络中传输原始的比特流

发送Linux内核网络数据包

图解

在这里插入图片描述

流程

1.应用协议栈处理:对用户数据进行封装成应用数据
2.CPU Copy:CPU参与将用户空间的数据拷贝到内核的套接字缓冲区中
3.协议栈处理:将套接字缓冲区中的应用数据送给Linux内核网络协议栈进行封包后放入sk_buff
4.建立DMA映射:表示sk_buff中的数据已经装载完毕,设置sk_buff的地址和长度等
5.DMA Copy:通过DMA方式将sk_buff中的数据通过Rx Ring buffer拷贝到网卡的Rx FIFO
6.发送数据:通过有线或者无线的方式将数据发送到网络中

接收Linux内核网络数据包

图解

在这里插入图片描述

流程

1.接收数据:通过有线或者无线的方式接收网络中的数据
2.DMA Copy:通过DMA方式将网卡的Tx FIFO中的数据通过Tx Ring Buffer拷贝到sk_buff
3.硬件中断IRQ:跳转到对应IRQ的中断服务例程(ISR)来处理该事件
4.软中断:驱动程序通过软中断执行对应的软中断处理程序
5.协议栈处理:将sk_buff中的数据通过Linux内核网络协议栈进行拆包放入套接字缓冲区
6.CPU Copy:CPU参与将内核的套接字缓冲区拷贝到用户空间
7.应用协议栈处理:对应用数据解封装成用户数据

最后

我是醉墨居士,这篇博客我们大概梳理了一下Linux网络传输的总体流程😎
如果有问题可以及时通知我,私聊,评论都行哈🤗

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录01 移除元素

移除元素 1.暴力解法2.双指针法 1.暴力解法 暴力解法就是嵌套两次for循环,第一层for循环来寻找数组中的值等于val的, 第二层for循环是往前覆盖,将值等于val的删除. 2.双指针法 双指针法,分为快指针和慢指针 快指针的意义是新的数组中含有的值 慢指针的意义是新的数组中值所在的…

激光雷达反光板算法总结

1 高反特征提取 首先,从雷达原始数据,提取到高反点;根据雷达的规格书提供的不同材料的强度,设定合适的阈值;;更优的方法是根据距离设定不同的阈值 2 反光板及反光柱的聚类 根据高反点是否连续进行聚类,同时结合距离及雷达的角度分辨率,计算出针对不同尺寸的反光板或反…

Python算法100例-2.6 分糖果

完整源代码项目地址,关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.运行结果 1.问题描述 10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块&…

基于Java SSM框架实现家庭食谱管理系统项目【项目源码+论文说明】

基于java的SSM框架实现家庭食谱管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个家庭食谱管理系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论…

拼团小程序制作的步骤是什么_轻松引领社交电商新风潮

打造爆款拼团小程序:轻松引领社交电商新风潮 在数字化浪潮席卷全球的今天,小程序以其轻便、快捷、易于传播的特性,成为了连接用户与商家之间最直接的桥梁。而拼团小程序,作为社交电商的佼佼者,更是以其独特的魅力&…

yolov8学习笔记(一)网络结构

一、yolov8.yaml YOLOv8详解 【网络结构代码实操】: YOLOv8详解 【网络结构代码实操】-CSDN博客文章浏览阅读10w次,点赞559次,收藏2.9k次。YOLOv8 算法的核心特性和改动可以归结为如下:提供了一个全新的 SOTA 模型,包…

新手如何在视频号中提取视频,看完这2个步骤你就懂了!

视频号已经成为许多用户分享生活、表达自我、获取信息的重要平台。 对于新手来说,理解并掌握如何在视频号中提取视频内容是至关重要的一步,很多人由于不知道平台的规则,导致视频号中不知怎么保存和提取。 本文将详细解析这一过程&#xff0…

TF-IDF,textRank,LSI_LDA 关键词提取

目录 任务 代码 keywordExtract.py TF_IDF.py LSI_LDA.py 结果 任务 用这三种方法提取关键词,代码目录如下, keywordExtract.py 为运行主程序 corpus.txt 为现有数据文档 其他文件,停用词,方法文件 corpus.txt 可以自己…

【IDEA】java 项目启动偶现Kotlin 版本问题 error:Kotlin:module was

一、问题描述: error:Kotlin:module was compiled with an incompatible version of kotlin the binary version of its metadata is二、问题原因: jar包版本冲突 三、解决方式: 1、Rebuild Project(推荐☆) 重新构…

【Vue3】学习watch监视:深入了解Vue3响应式系统的核心功能(下)

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议

文章目录 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 目前LLVM在数据库内核侧已默认打开,用户可结合上述的分析进行配置,总体建议如下: 设置合理的wor…

【论文精读】OS-Copilot: Towards Generalist Computer Agents with Self-Improvement

OS-Copilot: Towards Generalist Computer Agents with Self-Improvement 前言ABSTRACT1 INTRODUCTION2 THE OS-COPILOT FRAMEWORK2.1 PLANNER2.2 CONFIGURATOR2.2.1 DECLARATIVE MEMORY2.2.2 PROCEDURAL MEMORY2.2.3 WORKING MEMORY 2.3 ACTOR 3 THE FRIDAY AGENT3.1 A RUNNIN…