目录
文章目录
- 目录
- 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 复用器):用于自行扩展子协议类型。