我可以仅使用一个 TCP 数据包来关闭计算机吗

我可以仅使用一个 TCP 数据包来关闭计算机吗

因此,您可以在局域网上唤醒,因为以太网电缆不仅用于传输数据,它们还传输电流。如果它们直接连接到主板,有人可以发送数据包并关闭您的 PC 吗?在 Windows 主机上是否更容易?

答案1

与您所问相反的问题非常常见 - LAN 唤醒 (WOL)。要回答您的问题,首先解释一下这一点会容易得多。

睡眠呼吸暂停

WOL 要求具备这些功能

  1. 断电 PC 中的网络必须在其驱动程序中内置支持。

  2. 主板 (BIOS) 必须支持低功耗模式,当 PC 处于关闭状态时仍能为 NIC 提供少量电力。

  3. 第二台 PC/网络设备必须位于 LAN 上(为了简化示例,您可以通过 Internet 执行此操作),并且它必须具有软件来生成特殊数据包。

当 PC 关闭时,命令其打开的 PC 会创建一个魔术包:

魔术包是一个广播帧,其有效负载中包含全部 255 个字节中的 6 个字节(十六进制为 FF FF FF FF FF FF),后面跟着目标计算机的 48 位 MAC 地址的十六个重复,总共 102 个字节。

这个数据包被发送给局域网上的每个人。每个网卡检查其中的 MAC 地址,如果匹配,则通知主板启动系统。


使用 UDP 数据包

对于您的问题,这要简单得多。 PC 已启动,MB/NIC 不需要知道特殊数据包。 可以设置一个简单的程序或利用 nc 等程序的脚本来监听特定端口上具有预定义内容的 UDP 数据包。

由于 UDP 是无连接的,因此不涉及任何开销(事务数据包)。单个数据包就足够了。接收后可能发生任何事情 - 断电、启动另一个程序、删除硬盘内容...

假设存在正确的路由,您可以从任何地方发送此数据包 - 它只是一个普通的点对点 UDP 消息。

您还可以(实际上必须)在数据包内容中加入安全功能来验证数据包。

它实际上是一个不错的套接字编程入门项目。

TCP 解决方案

使用 TCP 数据包需要开销和常规消息来保持套接字处于活动状态,因此这不符合您的要求。

但是,您可以使用 iptables 在 PC 上设置防火墙规则,该规则将识别 TCP 数据包,并将其转换为可用作触发器的东西,以启动程序来执行所需的活动。有点笨拙,但完全可行。

相关内容