C 语言网络编程 — PF_NETLINK sockets
Posted 范桂飓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言网络编程 — PF_NETLINK sockets相关的知识,希望对你有一定的参考价值。
目录
文章目录
PF_NETLINK sockets
Linux 提供了 4 种 User Process 和 Kernel 之间进行通信的 IPC(Inter-Process Communicate,进程间通信)方式:
- /proc
- ioctl
- sysfs
- PF_NETLINK sockets(Netlink Socket)
其中,前 3 种都只支持 User Process => Kernel 的单向通信,只有 Netlink Socket 支持双向通信,并且是一种异步全双工的通信方式。
在 Linux 中有大量的 Application 通过 Netlink Socket 与 Kernel 进行通信,例如:
- NETLINK_ROUTE(Route daemon):用于获取、设置路由与链路信息。
- NETLINK_FIB_LOOKUP(FIB 转发信息表查询)
- NETLINK_ISCSI(iSCSI 子系统)
- NETLINK_XFRM(IPSec 安全策略)
- NETLINK_USERSOCK(用户态 Socket 协议)
- NETLINK_FIREWALL(防火墙)
- NETLINK_NETFILTER(Netfilter 子系统)
- NETLINK_KOBJECT_UEVENT(内核事件向用户态通知):用于 Kernel 向 Userspace 的 udev 进程发送通知。
- NETLINK_GENERIC(Netlink 复用器):用于自行扩展子协议类型。
以上是关于C 语言网络编程 — PF_NETLINK sockets的主要内容,如果未能解决你的问题,请参考以下文章
PF_NETLINK应用实例NETLINK_KOBJECT_UEVENT具体实现--udev实现原理