iwlist() 命令如何扫描无线网络?

2024-02-06

我想知道 iwlist 命令如何在 Linux 中扫描可用的无线网络。我阅读了它的源代码,发现有一个 ioctl 调用,使用 SIOCSIWSCAN 来触发扫描,并使用 SIOCGIWSCAN 来获取扫描结果。但是这些系统调用如何捕获和分析信标帧呢?


列表(8) http://linux.die.net/man/8/iwlist其他无线工具为不同的无线设备驱动程序提供了一个公共前端,支持Linux 无线扩展 http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Linux.Wireless.Extensions.html(西文)。每个驱动程序将向 WEXT 注册处理程序,以实现此接口定义的设备特定操作。对于扫描,两个处理程序是触发扫描(命令 SIOCSIWSCAN)和获取扫描结果(命令 SIOCGIWSCAN)。设备完成扫描后,会通过netlink http://www.linuxfoundation.org/en/Net:Netlink界面。然后,侦听此套接字的应用程序可以发出 SIOCGIWSCAN 命令以从设备获取扫描结果。请注意,设备可以自由选择如何实施扫描。例如,它可以被动侦听信标或通过发送探测请求来主动扫描。

上面对向设备发送命令的机制故意含糊不清,因为有传统方式(ioctl)和新方式(netlink - cfg80211)。但举一个具体的例子,考虑一下传统的方式。 ioctl 调用在 WEXT 模块中实现,但处理此命令的代码在设备驱动程序中实现。当用户空间应用程序进行 ioctl 时,WEXT 查找设备驱动程序的处理程序并运行它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iwlist() 命令如何扫描无线网络? 的相关文章

随机推荐