fbpx
维基百科

Netlink

Netlink套接字家族(英語:Netlink socket family)是一組Linux核心介面(Linux kernel interfaces),可用於行程間通訊,Linux内核与用户空间的进程间、用户进程间的通讯。然而它并不像网络套接字可以用于主机间通讯,Netlink只能用于同一主机上进程通讯,并通过PID来标识它们。

Netlink被设计为在Linux内核与用户空间进程传送各种网络信息。网络工具iproute2利用 Netlink从用户空间与内核进行通讯。Netlink由一个在用户空间的标准的Socket接口和内核模块 提供的内核API组成。Netlink的设计比ioctl更加灵活,Netlink使用了AF_NETLINK Socket 家族。

RFC 3549(页面存档备份,存于互联网档案馆)详细的描述了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开始提供使用。

包结构 编辑

不像BSD套接字存取互联网协议那样,头信息中的标识和目的地都是自动生成(如TCP), Netlink消息头(结构体nlmsghdr)必须由发送方准备好,就像socket工作在SOCK_RAW模式下 一样。尽管SOCK_DGRAM被用于创建它。

Bit offset 0–15 16–31
0 Message length
32 Type Flags
64 Sequence number
96 PID
128+  
Data
 

然而,数据部分可能进一步嵌套其它特定的子消息系统。

Netlink套接字簇 编辑

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

int socket(AF_NETLINK, SOCK_DGRAM or SOCK_RAW, protocol) 

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

Netlink协议 编辑

Netlink所支持的协议如下(并不完全): NETLINK_ROUTE NETLINK_ROUTE提供路由和连接信息。这些信息主要被用户空间的路由守护进程使用。对于这个 协议,Linux声明了大量的子消息:

  • 链路层:RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK, RTM_SETLINK
  • 地址设定:RTM_NEWADDR, RTM_DELADDR, RTM_GETADDR
  • 路由表:RTM_NEWROUTE, RTM_DELROUTE, RTM_GETROUTE
  • 邻居缓存(Neighbor Cache):RTM_NEWNEIGH, RTM_DELNEIGH, RTM_GETNEIGH
  • 路由规则:RTM_NEWRULE, RTM_DELRULE, RTM_GETRULE
  • Queuing Discipline Settings: RTM_NEWQDISC, RTM_DELQDISC, RTM_GETQDISC
  • Traffic Classes used with Queues: RTM_NEWTCLASS, RTM_DELTCLASS, RTM_GETTCLASS
  • 流量过滤:RTM_NEWTFILTER, RTM_DELTFILTER, RTM_GETTFILTER
  • 其它:RTM_NEWACTION, RTM_DELACTION, RTM_GETACTION, RTM_NEWPREFIX, RTM_GETPREFIX, RTM_GETMULTICAST, RTM_GETANYCAST, RTM_NEWNEIGHTBL,RTM_GETNEIGHTBL, RTM_SETNEIGHTBL

NETLINK_FIREWALL

NETLINK_FIREWALL提供给用户空间用户程序一个接口,用户空间应用程序利用这个接口可以从防火墙接收包。

NETLINK_NFLOG

NETLINK_NFLOG提供了一个iptables和Netfilter间通讯的接口。

NETLINK_ARPD

NETLINK_ARPD提供了一个接口用于从用户空间来管理ARP表。

NETLINK_AUDIT

NETLINK_AUDIT只能在Linux内核2.6.6及以后才可以使用,它提供了一个用户审计子系统的接口。

NETLINK_IPV6_FW

NETLINK_IPV6_FW提供了一个将包从netfilter传送到用户空间的接口。

NETLINK_ROUTE6

NETLINK_TAPBASE

NETLINK_TCPDIAG

NETLINK_XFRM

NETLINK_XFRM提供了一个接口用于管理IPSec安全组件(IPSec Security association)和安全策略数据库的接口。主要被密钥管理的守护进程用于互联网密钥交换(Internet Key Exchange)协议。

用户自定义的Netlink协议 编辑

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

参考资料 编辑

  1. ^ Why and How to Use Netlink Sockets. [2013-03-26]. (原始内容于2013-03-19). 

外部链接 编辑

netlink, 此條目翻譯自英語維基百科, 需要相關領域的編者協助校對翻譯, 如果您精通本領域, 又能清楚地將英語翻譯為中文, 歡迎您協助校訂翻譯, 原文参见en, 套接字家族, 英語, socket, family, 是一組linux核心介面, linux, kernel, interfaces, 可用於行程間通訊, linux内核与用户空间的进程间, 用户进程间的通讯, 然而它并不像网络套接字可以用于主机间通讯, 只能用于同一主机上进程通讯, 并通过pid来标识它们, 被设计为在linux内核与用户空间进程传. 此條目翻譯自英語維基百科 需要相關領域的編者協助校對翻譯 如果您精通本領域 又能清楚地將英語翻譯為中文 歡迎您協助校訂翻譯 原文参见en Netlink Netlink套接字家族 英語 Netlink socket family 是一組Linux核心介面 Linux kernel interfaces 可用於行程間通訊 Linux内核与用户空间的进程间 用户进程间的通讯 然而它并不像网络套接字可以用于主机间通讯 Netlink只能用于同一主机上进程通讯 并通过PID来标识它们 Netlink被设计为在Linux内核与用户空间进程传送各种网络信息 网络工具iproute2利用 Netlink从用户空间与内核进行通讯 Netlink由一个在用户空间的标准的Socket接口和内核模块 提供的内核API组成 Netlink的设计比ioctl更加灵活 Netlink使用了AF NETLINK Socket 家族 RFC 3549 页面存档备份 存于互联网档案馆 详细的描述了Netlink协议 目录 1 历史 2 包结构 3 Netlink套接字簇 4 Netlink协议 4 1 用户自定义的Netlink协议 5 参考资料 6 外部链接历史 编辑Netlink用于替代复杂和不够灵活的ioctl通讯方式 ioctl方法主要用设定和取得外部socket 为了提供向后兼容 ioctl将一直被Linux内核所支持 用法如下 error ioctl ip socket ioctl type amp value result Netlink在Linux内核2 0版本中作为字符设备被首次提供使用 这个接口已经过时了 但是作为 一种ioctl通讯方法 它仍可继续使用 Netlink socket接口从Linux内核2 2开始提供使用 包结构 编辑不像BSD套接字存取互联网协议那样 头信息中的标识和目的地都是自动生成 如TCP Netlink消息头 结构体nlmsghdr 必须由发送方准备好 就像socket工作在SOCK RAW模式下 一样 尽管SOCK DGRAM被用于创建它 Bit offset 0 15 16 310 Message length32 Type Flags64 Sequence number96 PID128 Data 然而 数据部分可能进一步嵌套其它特定的子消息系统 Netlink套接字簇 编辑AF NETLINK协议家族提供了多个子协议 每个接口连接不同的内核组件并且有各自的消息集 如 int socket AF NETLINK SOCK DGRAM or SOCK RAW protocol 由于缺少标准 SOCK DGRAM和SOCK RAW并不保证在每个Linux发行版 或其它操作系统 被声 明 有些源码中声明两种都可以使用 红帽的文档中声明SOCK RAW一直可以被使用 而 iproute2交换使用两者 Netlink协议 编辑Netlink所支持的协议如下 并不完全 NETLINK ROUTE NETLINK ROUTE提供路由和连接信息 这些信息主要被用户空间的路由守护进程使用 对于这个 协议 Linux声明了大量的子消息 链路层 RTM NEWLINK RTM DELLINK RTM GETLINK RTM SETLINK 地址设定 RTM NEWADDR RTM DELADDR RTM GETADDR 路由表 RTM NEWROUTE RTM DELROUTE RTM GETROUTE 邻居缓存 Neighbor Cache RTM NEWNEIGH RTM DELNEIGH RTM GETNEIGH 路由规则 RTM NEWRULE RTM DELRULE RTM GETRULE Queuing Discipline Settings RTM NEWQDISC RTM DELQDISC RTM GETQDISC Traffic Classes used with Queues RTM NEWTCLASS RTM DELTCLASS RTM GETTCLASS 流量过滤 RTM NEWTFILTER RTM DELTFILTER RTM GETTFILTER 其它 RTM NEWACTION RTM DELACTION RTM GETACTION RTM NEWPREFIX RTM GETPREFIX RTM GETMULTICAST RTM GETANYCAST RTM NEWNEIGHTBL RTM GETNEIGHTBL RTM SETNEIGHTBLNETLINK FIREWALL NETLINK FIREWALL提供给用户空间用户程序一个接口 用户空间应用程序利用这个接口可以从防火墙接收包 NETLINK NFLOG NETLINK NFLOG提供了一个iptables和Netfilter间通讯的接口 NETLINK ARPD NETLINK ARPD提供了一个接口用于从用户空间来管理ARP表 NETLINK AUDIT NETLINK AUDIT只能在Linux内核2 6 6及以后才可以使用 它提供了一个用户审计子系统的接口 NETLINK IPV6 FW NETLINK IPV6 FW提供了一个将包从netfilter传送到用户空间的接口 NETLINK ROUTE6NETLINK TAPBASENETLINK TCPDIAGNETLINK XFRM NETLINK XFRM提供了一个接口用于管理IPSec安全组件 IPSec Security association 和安全策略数据库的接口 主要被密钥管理的守护进程用于互联网密钥交换 Internet Key Exchange 协议 用户自定义的Netlink协议 编辑 用户也可以在自己的内核中添加自定义的Netlink处理器 这允许其它Netlink协议被开发用于连接新的内核模块 1 参考资料 编辑 Why and How to Use Netlink Sockets 2013 03 26 原始内容存档于2013 03 19 外部链接 编辑Pablo Neira Ayuso Rafael M Gasca Laurent Lefevre Communicating between the kernel and user space in Linux using Netlink sockets Software Practice and Experience 40 9 797 810 August 2010 Why and How to Use Netlink Sockets 页面存档备份 存于互联网档案馆 RFC 3549 页面存档备份 存于互联网档案馆 http netfilter org projects libmnl 页面存档备份 存于互联网档案馆 Minimalist Library for Netlink userspace library for construction and parsing of Netlink messages http www infradead org tgr libnl 页面存档备份 存于互联网档案馆 Netlink Protocol Library Suite full functional library covering almost all aspects of working with netlink sockets Manipulating the Networking Environment Using RTNETLINK 页面存档备份 存于互联网档案馆 Netlink Sockets Overview 取自 https zh wikipedia org w index php title Netlink amp oldid 68119593, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。