博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
netlink--内核态与用户态通信
阅读量:4684 次
发布时间:2019-06-09

本文共 695 字,大约阅读时间需要 2 分钟。

1. 什么是 Netlink

什么是Netlink?Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信,但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式,一般不用Netlink。除非需要用到Netlink的广播特性时。

那么Netlink有什么优势呢?一般来说用户空间和内核空间的通信方式有三种:/proc、ioctl、Netlink。而前两种都是单向的,但是Netlink可以实现双工通信。

Netlink协议基于BSD socket和AF_NETLINK地址簇(address family),使用32位的端口号寻址(以前称作PID),每个Netlink协议(或称作总线,man手册中则称之为netlink family),通常与一个或一组内核服务/组件相关联,如NETLINK_ROUTE用于获取和设置路由与链路信息、NETLINK_KOBJECT_UEVENT用于内核向用户空间的udev进程发送通知等。netlink具有以下特点:

① 支持全双工、异步通信(当然同步也支持)

② 用户空间可使用标准的BSD socket接口(但netlink并没有屏蔽掉协议包的构造与解析过程,推荐使用libnl等第三方库)

③ 在内核空间使用专用的内核API接口

④ 支持多播(因此支持“总线”式通信,可实现消息订阅)

⑤ 在内核端可用于进程上下文与中断上下文

 

参考:

1. 

2. 

3. 

转载于:https://www.cnblogs.com/embedded-linux/p/7895076.html

你可能感兴趣的文章
MVC弹出子页面向父页面传值
查看>>
用shell定义和访问数组
查看>>
KNN算法原理以及代码实现
查看>>
解读typescript中 super关键字的用法
查看>>
指定IE7(或其他版本)如何访问?
查看>>
iframe 自动适应页面高度
查看>>
eclipse环境下基于tomcat-7.0.82构建struts2项目
查看>>
input标签附带提示文字(bootstrap里面输入框的两侧同时添加额外元素)
查看>>
VHDL硬件描述语言学习笔记---VHDL语言要素
查看>>
某种密码(搜索专练)
查看>>
【BZOJ5305】【HAOI2018】—苹果树(组合数学)
查看>>
【BZOJ3821】【UOJ#46】【清华集训2014】—玄学(线段树分治)
查看>>
【leetcode 简单】 第八十三题 反转字符串中的元音字母
查看>>
【leetcode 简单】 第一百零八题 找到所有数组中消失的数字
查看>>
引用同一解决方案的类库工程不成功
查看>>
[转]单例模式中为什么用枚举更好
查看>>
selenium 获取断言信息
查看>>
c# 模拟get请求例子,演示Session会话状态。
查看>>
[.net 面向对象程序设计深入](0) 开篇
查看>>
C 多线程学习
查看>>