108-网络接口
网卡,是让计算机通向外部世界的一扇大门。但是在计算机的世界里,一般这扇门称为“接口(Interface)”。接口是物理意义上的设备。
在 Linux/Unix 中,我们使用 ifconfig
命令来查看接口信息:
图1 接口信息
接口通常都有自己的属性,比如在图1 中我们可以看到:
有自己的名字,比如 ens33, lo, virbr0.有一些标志位,比如 UP, BROADCAST, RUNNING, MULTICAST 等等。有 ip 地址,子网掩码,广播地址有物理地址,比如 ether 00:0c:29:03:40:40…2. 接口名称与接口索引号每个接口都有自己的名字,比如图 1 中三个接口名字分别是 ens33, lo, virbr0.
除了 ifconfig 中列举的属性外,接口还有自己的编号,也称为接口索引号(interface index)。
程序 if_nametoindex 能帮我们根据接口名字查看接口对应的索引号:
图2 查看接口的索引号。
程序位于路径unp/program/test/interface
下.
程序 if_indextoname 能帮我们根据接口索引号查看接口对应的名字:
图3 查看接口名称
从图 3 可以看到,接口 0 是不存在的。写程序的时候,通常用 0 来表示不存在的接口。
3. 相关函数图 2 和图 3 中的程序就是使用下面这两个函数实现的,使用起来相当简单。当然代码我就不贴出来了,你可以自己去 unp/program/test/interface
路径下查看源代码。
unsigned int if_nametoindex(const char *ifname);
char *if_indextoname(unsigned int ifindex, char
还有一对函数(第二个用是释放资源的),主要用来:
struct if_nameindex *if_nameindex(void);
void if_freenameindex(struct if_nameindex *ptr);
其中 struct if_nameindex 至少包含两个成员:
struct if_nameindex {
unsigned int if_index;
char *if_name;
// 其它成员
if_nameindex 函数返回一个数组,该数组最后一个元素是 NULL.
4.总结掌握接口的基本概念接口名称和接口索引
版权声明
本文仅代表作者观点,不代表博信信息网立场。
上一篇:SOME模型怎么处理缺失标签的数据 下一篇:用户如何进行域名注册