Linux 设备驱动与网络设备管理全解析
1. 网络设备概述
网络设备与普通设备不同,它并非通过设备节点进行访问,也没有主设备号和次设备号。内核会依据字符串和实例编号为网络设备分配名称。例如以下代码展示了网络驱动注册接口的方式:
my_netdev = alloc_netdev(0, "net%d", NET_NAME_UNKNOWN, netdev_setup);
ret = register_netdev(my_netdev);
首次调用时会创建名为 net0 的网络设备,第二次调用则为 net1 ,依此类推。常见的网络设备名称还有 lo 、 eth0 和 wlan0 。不过,这只是初始名称,像 udev 这样的设备管理器后续可能会对其进行修改。
通常,网络接口名称仅在使用 ip 和 ifconfig 等工具配置网络、设置网络地址和路由时才会用到。之后,通过打开套接字与网络驱动间接交互,由网络层决定如何将数据路由到正确的接口。但也可以在用户空间直接访问网络设备,方法是创建套接字并使用 include/linux/sockios.h 中列出的 ioctl 命令。以下是一个使用 SIOCGIFHWADDR 查询驱动硬件(MAC)地址的程序示例:
超级会员免费看
订阅专栏 解锁全文
2229

被折叠的 条评论
为什么被折叠?



