linux – 为什么有AF_NETLINK? AF_UNIX还不够吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 为什么有AF_NETLINK? AF_UNIX还不够吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1044字,纯文字阅读大概需要2分钟。
内容图文
据我所知,AF_NETLINK套接字协议用于内核和用户空间之间的通信,AF_UNIX用于两个用户空间进程之间的通信.
为什么Linux需要单独的AF_NETLINK?为什么UNIX套接字不能用于内核和用户之间的通信?
解决方法:
起源和设计特征是不同的.从头开始设计协议通常是一个更好的主意,因为这样您就可以使它特别适合您的需求,而不会遇到传统协议的问题.
我认为这种选择是因为UNIX域套接字的内核实现太不同了,无法将智能移植到用户内核通信. AF_NETLINK的协议列表专门用于提供类似ioctl的控制. AF_UNIX甚至不使用套接字函数的“protocol”参数.如果他们以某种方式扩展了定义以允许其他协议,它可能会破坏现有的应用程序,并且在内核中将新协议重定向到内核控制代码会非常尴尬.重叠这两个功能也可能存在安全风险(特别是因为AF_UNIX最初并未考虑到这一点而设计).
最后…… UNIX域套接字使用文件系统作为命名空间(虽然有一个允许“匿名”套接字的hack).因此,对于拥有此套接字权限的所有用户,它们立即可用 – 与内核通信,文件系统中的某个地方(sys可能是?)需要一个始终打开的“文件”,用户可以使用它连接到内核.
简而言之,它们只是用于不同的事情.即使你可以为两个用户空间进程重用AF_NETLINK(它的完成方式与AF_UNIX不同),但相反的方法却无法正常工作.
内容总结
以上是互联网集市为您收集整理的linux – 为什么有AF_NETLINK? AF_UNIX还不够吗?全部内容,希望文章能够帮你解决linux – 为什么有AF_NETLINK? AF_UNIX还不够吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。