![不知道如何显示网络中的无源设备](https://linux22.com/image/154092/%E4%B8%8D%E7%9F%A5%E9%81%93%E5%A6%82%E4%BD%95%E6%98%BE%E7%A4%BA%E7%BD%91%E7%BB%9C%E4%B8%AD%E7%9A%84%E6%97%A0%E6%BA%90%E8%AE%BE%E5%A4%87.png)
我对 Wi-Fi 网络上处于待机模式的设备有疑问。我的配置由 Fritzbox3490 和 Raspberry-PI3 组成。在我的 Fritzbox 连接菜单 (fritz.box) 中,我可以看到无源设备(总共 14 个),例如我的智能手机处于待机状态,但另一方面,我的 PI 无法向我显示无源设备(仅 10 个)。我尝试了很多程序,如 ARP-Scan、netdiscover...,但这些程序只显示活动设备。我也尝试了 fritzconnection api,但它对我不起作用。我必须承认我是网络新手。有没有办法在控制台或Python脚本中获取连接到fritzbox的无源设备?
答案1
我不知道。
ping
我们在尝试使用手机时遇到了一个听起来非常相似的问题。我们试图设置一个“寻宝”谜题。它没有像我们希望的那样工作,因为手机会在一段时间后进入睡眠状态以节省电量。
[我停产的手机]似乎有几种“模式”。我得到 50-100 毫秒 [
ping
开始响应]。后来,我交替得到 1000ms 和 10ms,以及 10% 的损失。只需点击锁定按钮即可返回到第一个模式。大约需要 30 秒才能进入第二模式。
你真是个天才!锁定 iPhone,30-60 秒后它会完全停止响应 ping。再次按下锁定按钮将其唤醒,它立即再次开始响应。
如果没有响应多个 ARP 探测,我会说它完全睡着了。没有 ARP = 没有 TCP/IP。
但是。这就是谜题。设备是否提供任何“推送通知”,例如即时通知电子邮件聊天消息?那必须依赖于 TCP/IP。
Linux 内核的默认设置将在之后过期并删除旧的 ARP 条目十分钟或更短时间。到期后,基于 Linux 的路由器将无法转发推送通知。
为了解释这些结果,休眠的电话必须故意忽略 ARP 请求,除非它们来自路由器。这并非不可能,我只是惊讶于它被认为是必要的!我想这可能是为了切断手机在活动时可能使用的一些繁琐的本地网络发现协议,例如 uPNP?
编辑:我怀疑当你查看 Android Linux 内核本身时,你找不到任何这样的代码。具体行为可以由以下方式确定ARP 卸载Wi-Fi 设备固件中的代码。
要测试此行为,您将
- 设置 Linux 设备,作为无线接入点和路由器
- 在 Linux 设备的 Wi-Fi 接口上运行数据包嗅探器
- 将手机连接到它
- 等待手机进入睡眠状态并停止响应探测
- 等待 Linux 设备上的 ARP 表项过期
- 发送电话
电子邮件使用聊天应用程序发送消息。
默认情况下,您的 Android 设备会在非高峰时段不使用设备时关闭 Wi-Fi 模块,这是 Doze 模式的一部分。
-- 第三方非技术文章:https://www.theandroidsoul.com/how-to-fix-delayed-notifications-problem-on-android/
https://developer.android.com/training/monitoring-device-state/doze-standby
https://firebase.google.com/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message
普通优先级当应用程序位于前台时,消息会立即传递。当设备处于打瞌睡状态时,交付可能会延迟以节省电池。对于时间敏感度较低的消息,例如新电子邮件的通知...选择正常传送优先级。
FCM 尝试交付高优先级立即消息,允许 FCM 服务在必要时唤醒睡眠设备并运行一些有限的处理(包括非常有限的网络访问)。
另外,如果手机没有安装和启用聊天应用程序,只有“低优先级”通知(例如电子邮件),那么它可能只会定期轮询,其余时间可能甚至不会响应 ARP。