当前位置: 首页 > article >正文

linux内核网络协议栈分层及各层之间的传递解析

我在linux内核中是如何实现网络数据的发送的(一)这两篇文章中较为细致的解析了一包网络数据如何从应用层到内核再到网口发送的。但这两篇文章属于对数据流动路程的梳理,虽较为详细,但无法清晰的看出Linux内核中网络协议栈中对数据分层处理的思想,所以本篇文章便是基于上两篇文章,从数据分层处理的角度,对Linux内核中网络数据传输处理进行解析,因这篇文章主要是解释各层之间的数据处理的,所以数据从各层之间的跳转便不再详细分析,有疑问的读者可参考《linux内核中是如何实现网络数据的发送的(一)》中的详细分析。我们仍然从应用层的sendto函数为起点,来分析用户要发送的一包数据是如何经过层层处理,最终发送到网口的。一:socket接口层首先sendto函数经系统调用,进入内核态,调用了内核中net\socket.c文件的sys_sendto函数,原型是SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len, unsigned int, flags, struct sockaddr __user *, addr, int, addr_len)在此处我们就进入了内核网络协议栈的socket接口层,这层主要是连接用户空间和内核空间的桥梁,用户空间的很多函数接口经系统调用,首先就是执行的这一层的函数。在这一层中函数的调用关系如下sys_sendto--sock_sendmsg--sock_sendmsg_nosec--sock-ops-sendmsg,这些函数主要是执行安全策略检测,数据的初步封装。二:传输层sock-ops-sendmsg便是传输层中的raw_sendmsg函数,此函数位于net\ipv4\raw.c文件中,至此我们便从socket层进入传输层,在这一层中,raw_sendmsg函数经历的调用关系如下:raw_sendmsg--raw_send_hdrinc--skb-dst-output在这一层中,实现了IP数据合法性检测,确认数据发送的源地址、目的地址、ip选项、路由路径、发送接口等关键数据的处理,并构建skb结构体,用于下一层函数的处理。三:网络层通过linux内核中是如何实现网络数据的发送的(一)中的分析,我们知道skb-dst-output指向了net\ipv4\ip_output.c文件中ip_output函数,到此处我们便进入了网络层的处理。在此层中,函数的调用关系如下:ip_output--ip_finish_output--ip_finish_output2--dst_neigh_output--neigh_hh_output--dev_queue_xmit(net\core\dev.c)--__dev_queue_xmit--__dev_xmit_skb--sch_direct_xmit(net\sched\sch_generic.c)--dev_hard_start_xmit(net\core\dev.c)--xmit_one-netdev_start_xmit-__netdev_start_xmit(include\linux\netdevice.h)--ops-ndo_start_xmit.上述调用路径较长,是决定前期构造的数据报文最终流向的一系列流程,经过上述流程的处理,数据流确定的最终调用哪个网口驱动接口进行网络数据的发送,也就是最终ops-ndo_start_xmit指向的函数。四:数据链路层在《linux内核中是如何实现网络数据的发送的(二)》这篇文章中我们以nxp公司的imx6q系列芯片为例子,可以确定出ops-ndo_start_xmit最终指向的是drivers\net\ethernet\freescale\fec_main.c文件中的fec_enet_start_xmit函数,至此我们便进入到了网络协议栈中的数据链路层或者说是网口驱动层,在此层面中的fec_enet_start_xmit函数,就会将我们的网络数据报文,通过控制芯片的网口控制器的寄存器,将数据转换为物理信号,发

相关文章:

linux内核网络协议栈分层及各层之间的传递解析

我在linux内核中是如何实现网络数据的发送的(一)这两篇文章中较为细致的解析了一包网络数据如何从应用层到内核再到网口发送的。但这两篇文章属于对数据流动路程的梳理,虽较为详细,但无法清晰的看出Linux内核中网络协议栈中对数据分层处理的思想,所以本篇文章便是基于上两…...

从编码器到安全停车:一文讲透伺服电机那些关键的‘保命’功能(STO/SOS/SLS)

伺服电机安全功能深度解析:从STO到SLS的工业安全实践 在工业自动化领域,伺服电机的安全功能早已超越了简单的"启停"概念,演变为一套精密的安全防护体系。当一台重达数吨的机械臂突然失控,或高速旋转的切割设备意外启动时…...

终极免费音乐解锁工具:3分钟搞定所有加密音乐文件

终极免费音乐解锁工具:3分钟搞定所有加密音乐文件 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://g…...

FanControl风扇控制终极指南:从安装到精通,让你的电脑散热更智能

FanControl风扇控制终极指南:从安装到精通,让你的电脑散热更智能 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.c…...

B站视频下载终极指南:免费获取大会员4K高清内容

B站视频下载终极指南:免费获取大会员4K高清内容 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为无法离线观看B站精彩…...

Masa Mods汉化包:让中文玩家轻松掌握7大Minecraft建筑工具

Masa Mods汉化包:让中文玩家轻松掌握7大Minecraft建筑工具 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Masa Mods的英文界面而头疼吗?这款专为中文玩家…...

BilibiliDown音频提取技术方案:专业级无损音乐下载与批量处理实战

BilibiliDown音频提取技术方案:专业级无损音乐下载与批量处理实战 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/g…...

淘宝/亚马逊卖家必备:一键图片翻译多种语言,保留原排版

对于跨境电商卖家——尤其是深耕亚马逊、淘宝全球购等平台的从业者来说,“图片翻译”从来不是什么一次性需求。一张商品主图可能包含十几处文字信息,从产品名称到促销标语,再到注意事项,每一处都需要精准而自然的本地化。然而市面…...

[具身智能-530]:Trae AI 主导开发:SOLO Builder 擅长“从 0 到 1”的无中生有,而 SOLO Coder 擅长“从 1 到 100”的精雕细琢。

在 Trae 的 SOLO 模式中,SOLO Builder 和 SOLO Coder 是两个核心的智能体(Agent),它们虽然都属于“AI 主导开发”的范畴,但定位、适用场景和工作流有着本质的区别。简单来说:SOLO Builder 擅长“从 0 到 1”…...

终极免费解决方案:如何彻底掌控你的Dell G15笔记本散热系统?

终极免费解决方案:如何彻底掌控你的Dell G15笔记本散热系统? 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否曾经在激烈的游戏对…...

5分钟搞定FF14国际服中文补丁:终极汉化指南

5分钟搞定FF14国际服中文补丁:终极汉化指南 【免费下载链接】FFXIVChnTextPatch 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIVChnTextPatch 还在为《最终幻想XIV》国际服的英文界面而头疼吗?FFXIVChnTextPatch中文补丁工具是你的完美解决…...

DIRL框架:空间推理与工具增强学习的技术突破

1. 空间推理与工具增强学习的技术背景空间推理能力是计算机视觉和机器人技术中的核心挑战之一。简单来说,它要求AI系统能够理解物体之间的几何关系(如相对位置、距离、方向等),并将这种理解转化为具体的操作决策。传统方法主要依靠…...

使用Taotoken后如何清晰观测各项目的API用量与成本

使用Taotoken后如何清晰观测各项目的API用量与成本 1. 用量看板的核心功能 Taotoken控制台提供的用量看板功能,能够从多个维度展示API调用情况。团队管理者可以按项目、API Key或时间段筛选数据,查看每个请求消耗的token数量。系统会自动汇总每日、每周…...

手把手教你用Vector Davinci配置AutoSar NVM队列与回调(附代码示例)

手把手教你用Vector Davinci配置AutoSar NVM队列与回调(附代码示例) 在汽车电子软件开发中,AutoSar NVM(Non-Volatile Memory Manager)模块负责管理非易失性存储数据的读写操作。对于使用Vector Davinci Configurator工…...

如何用FlyOOBE终极方案突破Windows 11硬件限制:完整系统定制指南

如何用FlyOOBE终极方案突破Windows 11硬件限制:完整系统定制指南 【免费下载链接】FlyOOBE Fly through your Windows 11 setup 🐝 项目地址: https://gitcode.com/gh_mirrors/fl/FlyOOBE 你是否拥有一台性能尚可但被微软标记为"不兼容"…...

Shopee关联店铺的原因有哪些?Shopee多账号防关联指南

Shopee现在也是越来越注重平台公平、健康的竞争环境,虽然Shopee平台对于多账号关联这一点没有亚马逊、eBay等平台那么严格,但是做多账号还是存在一定的关联风险的。那么导致Shopee店铺关联的原因有哪些呢?本文就说说关于Shopee店铺关联背后的…...

EVK-IRIS-W101,集成Wi-Fi 6双频与蓝牙5.3的开CPU多无线电评估套件

简介今天我要向大家介绍的是 u-blox 的评估套件——EVK-IRIS-W101。它基于NXP RW612平台,专为支持Wi-Fi 6、蓝牙5.3及IEEE 802.15.4 (Thread/Matter) 的多协议物联网应用而设计。该评估板集成了IRIS-W101开CPU模块,无需下载SDK或编译固件即可通过预装的W…...

为Hermes Agent配置自定义模型提供商指向Taotoken服务

为Hermes Agent配置自定义模型提供商指向Taotoken服务 1. 准备工作 在开始配置前,请确保已安装Hermes Agent并具备基础运行环境。同时需要准备好Taotoken平台的API Key,该密钥可在Taotoken控制台的API密钥管理页面创建。模型ID可在模型广场查看&#x…...

互联网大厂面试:Java SE 11, Spring Boot与微服务架构

互联网大厂面试:Java SE 11, Spring Boot与微服务架构 在这篇文章中,我们将带您走进一次互联网大厂的Java程序员面试,面试官和程序员之间的对话不仅严肃,还夹杂着程序员燕双非的幽默。第一轮提问 面试官:首先&#xff…...

大语言模型评估新方法TrustJudge解析与应用

1. LLM评估的现状与挑战大语言模型评估正面临一个关键转折点。随着模型能力的快速提升,传统的评估方法越来越难以准确衡量模型性能。当前主流的LLM-as-a-Judge(LLM作为评判者)范式虽然解决了人工评估的高成本问题,但在实际应用中暴…...

体验Taotoken多模型聚合在应对单一服务波动时的路由容灾效果

体验Taotoken多模型聚合在服务波动时的路由效果 1. 多模型聚合的核心价值 现代AI应用开发中,服务稳定性是业务连续性的重要保障。Taotoken平台通过聚合多家主流模型供应商,为开发者提供了单一API入口下的多模型选择能力。这种架构设计使得当某个特定模…...

5分钟本地化视频字幕提取:87种语言支持,完全免费的专业级解决方案

5分钟本地化视频字幕提取:87种语言支持,完全免费的专业级解决方案 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含…...

Stable Diffusion WebUI在Windows上卡死、报错?别慌,这7个常见问题我帮你踩过坑了

Stable Diffusion WebUI在Windows上卡死、报错?7个实战解决方案 刚接触Stable Diffusion WebUI的Windows用户,十有八九会在安装或运行阶段遇到各种"拦路虎"。界面突然卡死、弹窗报错闪退、插件莫名失灵…这些问题看似琐碎,却足以让…...

四问+一图,读懂《关于联合实施2026年“模数共振”行动的通知》

近日,工业和信息化部、国家数据局联合印发《关于联合实施2026年“模数共振”行动的通知》(以下简称《行动通知》)。为更好理解和落实《行动通知》,现就有关内容解读如下。一、实施2026年“模数共振”行动的政策背景是什么&#xf…...

使用taotoken后stm32项目api调用延迟与稳定性观测

使用 Taotoken 后 STM32 项目 API 调用延迟与稳定性观测 1. STM32 设备接入 Taotoken 的典型场景 在嵌入式开发中,STM32 系列微控制器常被用于需要轻量级 AI 能力的场景。通过 Taotoken 平台接入大模型服务,开发者可以在资源受限的设备上实现自然语言处…...

告别A*!用D-Star算法在Unity里做个能动态绕开障碍物的寻路Demo

告别A*!用D-Star算法在Unity里做个能动态绕开障碍物的寻路Demo 在游戏开发中,寻路算法是让NPC或玩家角色智能移动的核心技术。传统的A*算法虽然高效,但在动态环境中遇到突然出现的障碍物时,往往需要完全重新计算路径,这…...

QMCDecode:3步解锁QQ音乐加密格式,让音乐真正属于你

QMCDecode:3步解锁QQ音乐加密格式,让音乐真正属于你 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&#xf…...

2025实战:BiRefNet高分辨率二值化图像分割权重获取的5种创新方案

2025实战:BiRefNet高分辨率二值化图像分割权重获取的5种创新方案 【免费下载链接】BiRefNet [CAAI AIR24] Bilateral Reference for High-Resolution Dichotomous Image Segmentation 项目地址: https://gitcode.com/gh_mirrors/bi/BiRefNet 你是否在为BiRef…...

Transformer在机器人控制中的应用与优化

1. 项目概述:当Transformer遇见机器人控制在机器人技术快速发展的今天,如何让机器人像人类一样理解复杂环境并做出精准决策,一直是研究的热点难题。传统方法往往需要大量标注数据和复杂的特征工程,而Transformer架构的出现为这一领…...

别再死记硬背了!用Python+NumPy实战帮你搞定线性代数核心术语(附中英对照表)

PythonNumPy实战:用代码解锁线性代数核心术语 线性代数术语总让人望而生畏——"行列式"、"LU分解"、"阶梯形矩阵",这些抽象概念在课本上密密麻麻排列,像一堵高墙挡在学习路上。但当我第一次用NumPy创建出实际可…...