版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用户空间和内核空间通讯之Netlink引言AlanCox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信;随后,在2.1内核开发过程中,AlexeyKuznetsov将Netlink改写成一个更加灵活、且易于扩展的基于消息通信接口,并将其应用到高级路由子系统的基础框架里。自那时起,Netlink就成了Linux内核子系统和用户态的应用程序通信的主要手段之一。2001年,ForCESIETF委员会正式对Netlink进行了标准化的工作。JamalHadiSalim提议将Netlink定义成一种用于网络设备的路由引擎组件和其控制管理组件之间通信的协议。不过他的建议最终没有被采纳,取而代之的是我们今天所看到的格局:Netlink被设计成一个新的协议域,domain。Linux之父托瓦斯曾说过“Linuxisevolution,notintelligentdesign”。什么意思?就是说,Netlink也同样遵循了Linux的某些设计理念,即没有完整的规范文档,亦没有设计文档。只有什么?你懂得---“Readthef**kingsourcecode”。当然,本文不是分析Netlink在Linux上的实现机制,而是就“什么是Netlink”以及“如何用好Netlink”的话题和大家做个分享,只有在遇到问题时才需要去阅读内核源码弄清个所以然。<spanstyle="font-size:10.5pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:">什么是Netlink关于Netlink的理解,需要把握几个关键点:1、面向数据报的无连接消息子系统2、基于通用的BSDSocket架构而实现关于第一点使我们很容易联想到UDP协议,能想到这一点就非常棒了。按着UDP协议来理解Netlink不是不无道理,只要你能触类旁通,做到“活学”,善于总结归纳、联想,最后实现知识迁移这就是学习的本质。Netlink可以实现内核->用户以及用户->内核的双向、异步的数据通信,同时它还支持两个用户进程之间、甚至两个内核子系统之间的数据通信。本文中,对后两者我们不予考虑,焦点集中在如何实现用户<->内核之间的数据通信。看到第二点脑海中是不是瞬间闪现了下面这张图片呢?如果是,则说明你确实有慧根;当然,不是也没关系,慧根可以{__u32nlmsg_len;/*Lengthofmessageincludingheader*/__u16nlmsg_type;/*Messagecontent*/__u16nlmsg_flags;/*Additionalflags*/__u32nlmsg_seq;/*Sequencenumber*/__u32nlmsg_pid;/*SendingprocessPID*/};消息头中各成员属性的解释及说明:nlmsg_type:消息的类型,即是数据还是控制消息。目前(内核版本2.6.21)Netlink仅支持四种类型的控制消息,如下:NLMSG_NOOP-空消息,什么也不做;NLMSG_ERROR-指明该消息中包含一个错误;NLMSG_DONE-如果内核通过Netlink队列返回了多个消息,那么队列的最后一条消息的类型为NLMSG_DONE,其余所有消息的nlmsg_flags属性都被设置NLM_F_MULTI位有效。NLMSG_OVERRUN-暂时没用到。nlmsg_flags:附加在消息上的额外说明信息,如上面提到的NLM_F_MULTI。摘录如下:<tableclass="MsoTableGrid"style="border-collapse:collapse;border:none;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0cm5.4pt0cm5.4pt"border="1"cellpadding="0"cellspacing="0">标记<tdstyle="width:340.45pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-left:none;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">作用及说明<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:none;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="114">NLM_F_REQUEST<tdstyle="width:340.45pt;border-top:none;border-left:none;border-bottom:solidblack1.0pt;mso-border-bottom-themecolor:text1;border-right:solidblack1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">如果消息中有该标记位,说明这是一个请求消息。所有从用户空间到内核空间的消息都要设置该位,否则内核将向用户返回一个EINVAL无效参数的错误<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:none;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="114">NLM_F_MULTI<tdstyle="width:340.45pt;border-top:none;border-left:none;border-bottom:solidblack1.0pt;mso-border-bottom-themecolor:text1;border-right:solidblack1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">消息从用户->内核是同步的立刻完成,而从内核->用户则需要排队。如果内核之前收到过来自用户的消息中有NLM_F_DUMP位为1的消息,那么内核就会向用户空间发送一个由多个Netlink消息组成的链表。除了最后个消息外,其余每条消息中都设置了该位有效。<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:none;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="114">NLM_F_ACK<tdstyle="width:340.45pt;border-top:none;border-left:none;border-bottom:solidblack1.0pt;mso-border-bottom-themecolor:text1;border-right:solidblack1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">该消息是内核对来自用户空间的NLM_F_REQUEST消息的响应<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:none;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="114">NLM_F_ECHO<tdstyle="width:340.45pt;border-top:none;border-left:none;border-bottom:solidblack1.0pt;mso-border-bottom-themecolor:text1;border-right:solidblack1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">如果从用户空间发给内核的消息中该标记为1,则说明用户的应用进程要求内核将用户发给它的每条消息通过单播的形式再发送给用户进程。和我们通常说的“回显”功能类似。<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度特殊场合服装租赁采购合同3篇
- 2024年中国甜菊叶市场调查研究报告
- 2024年中国生脉饮口服液市场调查研究报告
- 2025年农村房屋赠与及土地流转合同
- 2025年度教育资源共享合作协议范文3篇
- 2024年中国活细胞胶原弹力粉底市场调查研究报告
- 2024年中国汽车改装式液压升降平台市场调查研究报告
- 2024年中国比伐卢定市场调查研究报告
- 2024年江阴市人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 《Sn基软钎料合金的晶须快速生长行为和抑制方法研究》
- 锚杆锚索钻机操作规程
- 《录音技术与艺术》课程教学大纲
- 部编版七年级语文上下册教材解读分析精编ppt
- InternationalSettlementsLecture3InternationalClearingSystems
- (完整版)景观园林工程施工规范和技术要求
- (完整版)六年级转述句练习题
- 苏武传作文素材整理-
- 小学一年级班会课教案汇编 全册
- 公司董事会、总经理办公会议事清单.docx
- 煤矿矿井供电设计(DOC26页)
- 中国鹤翔庄气功之五站桩功
评论
0/150
提交评论