Netlink

历史

Netlink用于替代复杂和不够灵活的ioctl通讯方式，ioctl方法主要用设定和获取外部socket， 为了提供向后兼容，ioctl将一直被Linux内核所支持，用法如下：

error = ioctl(ip_socket, ioctl_type, &value_result);
Netlink在Linux内核2.0版本中作为字符设备被首次提供使用。这个接口已经过时了，但是作为 一种ioctl通讯方法，它仍可继续使用。Netlink socket接口从Linux内核2.2开始提供使用。

Netlink套接字簇

AF_NETLINK协议家族提供了多个子协议。每个接口连接不同的内核组件并且有各自的消息集。 如：

int socket(AF_NETLINK, SOCK_DGRAM or SOCK_RAW, protocol)
由于缺少标准，SOCK_DGRAM和SOCK_RAW并不保证在每个Linux发行版（或其它操作系统）被声 明。有些源码中声明两种都可以使用，红帽的文档中声明SOCK_RAW一直可以被使用，而 iproute2交换使用两者。

用户自定义的Netlink协议

用户也可以在自己的内核中添加自定义的Netlink处理器。这允许其它Netlink协议被开发用于连接新的内核模块。