https://zhuanlan.zhihu.com/p/269141945
https://blog.csdn.net/u011456016/article/details/136380410
https://mp.weixin.qq.com/s/NLPSw-Lj87RXd4ot23H4cg
https://zhuanlan.zhihu.com/p/693908092
目录
一、什么是netlink通信机制
Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。Netlink 是一种特殊的 socket,它是 Linux 所特有的。
Netlink 是一种在内核与用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket API 就可以使用 netlink 提供的强大功能,内核态需要使用专门的内核 API 来使用 netlink。
二、netlink通信机制的特点
使用Netlink通过自定义一种新的协议并加入协议族即可通过socket API使用Netlink协议完成数据交换,而ioctl和proc文件系统均需要通过程序加入相应的设备或文件。
Netlink使用socket缓存队列,是一种异步通信机制,而ioctl是同步通信机制,如果传输的数据量较大,会影响系统性能。
Netlink支持多播,属于一个Netlink组的模块和进程都能获得该多播消息。
使用 netlink 的内核部分可以采用模块的方式实现,使用 netlink 的应用部分和内核部分没有编译时依赖
Netlink允许内核发起会话,而ioctl和系统调用只能由用户空间进程发起。
三、NetLink源码
https://www.jianshu.com/p/c78f1aaf90c7
https://zhuanlan.zhihu.com/p/703570419 (netlink实现原理)
四、NetLink[协议]子系统
协议定义在netlink.h中,一种协议代表一种子系统。
0 条评论