UNIX网络编程-18-路由套接字

总纲:

  1. 路由套接字
    AF_ROUTE
  2. 机制
    进程到内核
    内核到进程
    sysctl 机制
  3. 路由套接字数据结构
  4. sysctl 机制-SNMP-MIB

细节

  • 数据链路套接字地址结构

struct sockaddr_dl
从内核返回到应用层的,关于接口的链路层信息
MAC地址,接口名称,接口索引等信息

  • 读写路由套接字
    原理:建立一个 AF_ROUTE 的原始(SOCK_RAW)套接字,向该套接字写入对应的数据结构,数据结构里携带参数;写完后,从该套接字读取数据即为根据参数获取到的来自内核的信息,信息仍然以数据结构的方式存储。

添加、变更、删除路由,获取、锁定路径信息,其他从内核获取的信息。
携带参数是,数据结构指定将要携带哪些数据,携带的地址信息放在数据结构尾部,同数据结构一同写入套接字。
返回的数据,数据结构觉得携带了哪些信息,携带的地址信息内容在随后的数据字段里。

  • sysctl 机制
    原理:使用 sysctl 系统调用,可以获取或设置内核参数。内核参数以树状结构组织的节点,SNMP-MIB的机制。对于路由,使用:CTL_NET -> AF_ROUTE 节点下的信息。mib 是以数组的方式传递。

sysctl 系统调用,传递 MIB 信息,并传入用于存放设置或获取的信息地址。
返回的信息是以 “数据结构 + 地址信息” 的方式存储。
net_rt_iflist 使用 CTL_NET -> AF_ROUTE -> 0 -> -> NET_RT_IFLIST -> 的方式获取接口列表。

详细内容参加:UNIX网络编程

你可能感兴趣的:(UNIX网络编程-18-路由套接字)