- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux用户态内核态通讯分析-11.11.pdf
Linux 内核态与用户态通信程序的分析与应用:
多数的 Linux 内核态程序都需要和用户空间的进程交
换数据,但 Linux 内核态无法对传统的 Linux 进程间同步
和通信的方法提供足够的支持。netlink是一种很好的解决
机制。
在 Linux 2.4 版以后版本的内核中,几乎全部的中断
过程与用户态进程的通信都是使用 netlink 套接字实现的
,例如iprote2网络管理工具,它与内核的交互就全部使用
了netlink ,著名的内核包过滤框架Netfilter在与用户空间
的通信,也在最新版本中改变为netlink。
netlink socket ;
• netlink socekt是一种用于在内核态和用户态进程之间进行数据传输的
特殊的IPC。它通过为内核模块提供一组特殊的API ,并为用户程序提
供了一组标准的socket 接口的方式,实现了一种全双工的通讯连接。
类似于TCP/IP中使用AF_INET地址族一样,netlink socket使用地址
族AF_NETLINK。
• 下面是netlink socket 目前的特性集合以及它支持的协议类型:
• NETLINK_ROUTE 用户空间的路由守护程序之间的通讯通道,比如
BGP,OSPF,RIP以及内核数据转发模块。用户态的路由守护程序通过
此类型的协议来更新内核中的路由表。
• NETLINK_FIREWALL:接收IPV4防火墙代码发送的数据包。
• NETLINK_NFLOG:用户态的iptables管理工具和内核中的netfilter模块
之间通讯的通道。
• NETLINK_ARPD:用来从用户空间管理内核中的ARP表
用户态进程和内核态进程通信的方法:
1、系统调用。
2、ioctl接口。
3、proc文件系统。
4、netlink socket等等。
为什么使用netlink socket ?
1、为新的特性添加一个新的系统调用,ioctls或者一个proc文件的做法并
不是很容易的一件事情,因为我们要冒着污染内核代码并且可能破坏
系统稳定性的风险去完成这件事情。
2、内核中实现系统调用的代码都是在编译时静态链接到内核的,因此,
在动态加载模块中去包含一个系统调用的做法是不合适的。
3、它支持多点传送。一个进程可以把消息传输给一个netlink组地址,然
后任意多个进程都可以监听那个组地址(并且接收消息)。
4、系统调用和ioctl都属于单工方式的IPC ,也就是说,这种IPC会话的发
起者只能是用户态程序。Netlink 通过允许内核初始化会话的方式完
美的解决了此问题,我们称之为netlink socket的双工特性。
problem:
• 用户态应用使用什么接口与内核通讯(用户态接口和内核
态接口)
• 用户态程序和内核态程序使用何种方式实现消息的发送和
接收
• 内核程序如何设计成模块以及如何动态加载
/thread-2029813-
1-1.html
ways:
• 查看netlink内核原代码并进行代码分析,分析了解到用户态应用使用标
准的socket与内核通讯。用户空间的netlink API接口:socket()、
bind()、 sendmsg()、 recvmsg() 和 close()等接口。这些很容易地应
用到 netlink socket ;内核空间的netlink API接口:
netlink_kernel_create ()、input()、skb_recv_datagram()、
wake_up_interruptible ()等。熟悉并使用这些接口。使用socket()
函数创建一个socket ,输入:
eg: int socket(int domain, int type, int protocol)
socket域(地址族)是AF_NETLINK,socket的类型是SOCK_RAW或
者SOCK_DGRAM,因为netlink是一种面向数据包的服务
• netlink通信依据是一个对应于进程的标识,一般定为该进程的 ID。当
通信的一端处于中断过程时,该标识为 0。当使用 netlink 套接字进行
通信,通信的双方都是用户态进程,则使用方法类似于消息队列。
netl
您可能关注的文档
- 1.2 极限测试-分析讲解..ppt
- 1.2-计算机图形学概论.pdf
- 1.从实践者到服务者,云计算助力企 业快速转型 何刚.pdf
- 16×16位移位相加乘法器设计毕业设计--139831835.doc
- 17春福师《计算机网络与通讯》在线作业一.doc
- 2.2 安装WINDOWS2000操作系统.ppt
- 2011年1月开本—计算机绘图(本).pdf
- 2012年计算机导论A卷.doc
- 2012计算机网络与通信技术B及答案.docx
- 2013年秋学期班级课表(江阳路南校区).doc
- 2025届中工国际工程股份有限公司校园招聘笔试参考题库附带答案详解.doc
- 2025届乌鲁木齐石化分公司高校毕业生春季招聘10人笔试参考题库附带答案详解.doc
- 2025届华夏金融租赁有限公司校园招聘笔试参考题库附带答案详解.doc
- 2025届物产中大金属集团有限公司校园招聘笔试参考题库附带答案详解.doc
- 2025山东济南城市发展集团春季校园招聘43人笔试参考题库附带答案详解.doc
- 2025山西临县裕民焦煤有限公司招聘15人笔试参考题库附带答案详解.doc
- 2025年01月河南洛阳龙潭大峡谷景区公开招聘20人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2025中国移动秋季校园招聘启动笔试参考题库附带答案详解.doc
- 2025年02月内蒙古自治区政府系统第二批事业单位公开招聘(赤峰市市直公开招聘23人)笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024年12月湖州长兴事业单位编外公开招聘(2)人长兴县文化和广电旅游体育局笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
文档评论(0)