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

50、网络驱动开发全解析

网络驱动开发全解析

1. 以太网设置优势

以太网设备具备通用支持特性,使用以太网设置有诸多好处。像 plip 接口(使用打印机端口的接口)也会将自身声明为以太网设备。对于 snull 而言,采用以太网设置的最后一个优势是能在接口上运行 tcpdump 来查看数据包的传输情况,通过 tcpdump 观察接口是了解两个接口工作方式的有效途径。不过要注意,在 2.0 内核中,只有当 snull 的接口显示为 ethx 时,tcpdump 才能正常工作,可使用 eth=1 选项加载驱动以使用常规以太网名称,而非默认的 snx 名称。

此外,snull 仅支持 IP 数据包,这是因为其代码会对数据包进行窥探甚至修改,在未检查是否为 IP 信息的情况下就修改 IP 报头中的源地址、目的地址和校验和,这种简单粗暴的数据修改会破坏非 IP 数据包。若要通过 snull 传输其他协议,就必须修改模块的源代码。

2. 连接内核与模块加载

要了解网络驱动的结构,可从剖析 snull 源代码入手。准备好几个驱动的源代码,如 loopback.c、plip.c 和 3c509.c(复杂度依次递增),以及 skeleton.c(虽不能实际运行但有帮助),这些文件都位于内核源代码树的 drivers/net 目录下。

当驱动模块加载到运行的内核中时,它会请求资源并提供相应功能。资源请求方式并无特别之处,驱动应探测其设备及其硬件位置(I/O 端口和 IRQ 线),但暂不进行注册。网络驱动通过模块初始化函数进行注册的方式与字符和块驱动不同,由于网络接口没有主设备号和次设备号的概念,网络驱动无需请求此类编号,而是将每个新检测到的接口的数据结构插入到网络设备的全局列表中。

http://www.cnnetsun.cn/news/22613.html

相关文章:

  • 57、外设总线概述
  • 60、Linux内核源代码物理布局解析
  • Google Apps Script OAuth2 库完整指南:轻松实现第三方服务集成
  • PySceneDetect完整指南:零基础掌握视频智能分割技术
  • 24、结合psad和fwsnort保障网络安全
  • 32、网络攻击欺骗与 fwsnort 脚本详解
  • 师生交流论坛|基于springboot + vue师生交流论坛系统(源码+数据库+文档)
  • 二手商城|基于springboot + vue二手商城系统(源码+数据库+文档)
  • 20、帧缓冲区接口设计与 STBmenu 简易 UI 开发
  • 24、深入浅出:SNMP 实践指南
  • 高级前端 Input 公共组件设计方案(Vue3 + TypeScript)
  • 前后端HTTPS及证书配置完整流程
  • TIA博途虚拟机终极配置指南:V17+V16+V15.1全版本一键部署
  • 【开题答辩全过程】以 基于Java的人体骨骼健康知识普及系统为例,包含答辩的问题和答案
  • 企业微信开发总卡壳?试试cpolar,回调调试超顺畅
  • ChatPPT:国内综合实力最强的AI PPT工具
  • 测试经验,自动化测试的痛点+发展趋势,一篇带你上高速...
  • NetGuard实战指南:告别流量焦虑,让Android网络管理如此简单
  • 大厂已经不用人干活了?“AI中台+Agent”正在重塑商业规则
  • Qwen2.5-Omni全模态大模型:70亿参数重构人机交互范式
  • Morisawa BIZ UDGothic 字体使用指南:让文字表达更专业优雅
  • 量子化学:材料的电子态密度
  • 零基础也能做!用Qoder快速开发“技能五子棋”蹭热点项目
  • GitHub加速终极方案:告别龟速访问,体验丝滑编程
  • 【总结】【计组】【OS】页号、页框号、虚拟地址、物理地址、地址
  • 超细整理,性能测试如何做?怎么做?性能压力负载(汇总三)
  • 国外代理IP怎么选?4大标准帮你避坑选优
  • 艾体宝洞察 | 当供应链恶意代码会“二次来袭”:Shai-Hulud 事件下,为什么必须重新审视你的应用安全体系?
  • OpenHarmony环境搭建——02-JDK17安装教程
  • 艾体宝干货 |【Redis实用技巧#4】Redis分布式锁真的安全吗?可靠性深度剖析(Part 2)