精通linux内核网络———第二章Netlink套接字

一、背景
1. IOCTL处理程序不能从内核向用户空间发送异步消息。而Netlink套接字可以。
2. 使用IOCTL必须定义IOCTL号。Netlink只需使用套接字API打开并注册一个Netlink套接字,它就会处理与内核Netlink套接字的双向通讯。(通常是通过发送消息,来配置各种系统设置以及获取来自内核的响应)。Netlink也可以用户空间进程间通讯,一般不这样做。
二、优点
1. 使用Netlink套接字时不需要轮询。用户空间应用程序打开套接字,再调用recvmsg()。如果没有来自内核的消息,就进入阻塞状态。
2. 内核可以主动向用户空间发送异步消息,而不需要用户空间来触发。
3. Netlink套接字支持组播传输。
三、使用
1. 用户空间使用系统调用socket().
2. 内核中使用netlink_kernel_create().
3. 无论是内核还是用户空间都将创建一个netlink_sock()对象。
4. 用户空间netlink_create()处理套接字,内核_netlink_kernel_create()处理套接字。最终两种方法都将调用_netlink_create()。
四、Netlink套接字库
libnl
iproute2基于Netlink套接字
net-tools基于IOCTL
五、结构sockaddr_nl(include/uapi/linux/netlink.h)
它表示Netlink套接字的地址。
六、NETLINK_ROUTExiao

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值