检查已连接客户端的最可靠方法?

检查已连接客户端的最可靠方法?

我有一个使用 Yocto 从头开始​​开发的嵌入式 Linux 操作系统。这与 Windows XP/7 客户端对话。嵌入式操作系统运行 DHCP 服务器并向客户端提供地址。问题在于客户端被“锁定”并阻止了许多标准端口和执行操作的方法。如果嵌入式系统检测到客户端存在,我的启动脚本将启动测试系统的服务器;否则我 kexec 到另一个操作系统。检测启动时(在 Linux 中)是否存在通过以太网连接的客户端而不显着增加系统启动时间的最佳方法是什么?

以下是我尝试过的以及不起作用的方法:

  1. ICMP 数据包在客户端被阻止,因此传统的 ping 不起作用
  2. arping 可以工作(以及使用 ARP 扫描的 nmap),但 Windows 客户端试图变得“智能”并拨号,因此实际建立连接需要 20-25 秒,这是不可接受的;理想情况下,它应该在 5-10 秒内检测到某些内容。我可以在服务器端设置什么来加快速度吗?它总是首先启动到该分区,因此最快的解决方案就是最好的解决方案。
  3. ifplugd、ethtool、netplugd 和探测 /sys/class/net/eth0/operstate 和 /sys/class/net/eth0/carrier 不起作用,因为嵌入式系统上的以太网端口连接到内部交换机,因此它始终“向上”和“连接”硬件方面
  4. 未来的解决方案可能会在客户端使用 Bonjour,在服务器上使用 Avahi,这样我们就可以拥有无​​连接协议,但这需要时间来实现,我需要一个临时解决方案,因为我们添加到客户端的任何软件都需要很长时间获得批准的时间。

同样,我无法在客户端执行任何操作,因为这些单元是由另一家公司配置并锁定的。那么我还可以在服务器上尝试什么来检测客户端是否存在?

答案1

所以,你说有一个内部开关。您能够访问该交换机的管理吗?通过 I2C(嵌入式交换机)还是 SNMP?

您声明您的嵌入式操作系统运行 DHCP 服务器。如果客户端发出 DHCP 请求,这不是证明客户端存在并且可以访问吗?

我不知道你所说的“智能”和“拨出”是什么意思。如果 Windows 计算机要在以太网上进行通信,则需要响应 ARP。到目前为止,琶音似乎是最好的选择。

相关内容