google了一下,发现ICMP不属于应用层。
那是不是说,即使没有安装操作系统,网卡也知道如何回复ICMP请求呢?
还有一种情况就是,当电脑软关机的时候,还保留了一些电量给网卡(这样才能支持Wake-On-LAN),网卡在这种状态下还能响应ICMP请求吗?
答案1
当然,你可以直接向 NIC 发送 ICMP 请求,但你要把它发送到哪里呢?在没有任何软件控制的情况下,NIC 如何维护 IP 地址?我不得不说不在这一点上。
至于真正的局域网唤醒,该卡仅监视魔术包。但是在 Windows 中,如果您将适配器设置为允许此设备使计算机脱离待机状态这与 BIOS 启用的 LAN 唤醒并不完全相同,当 PC 处于待机状态时,ping 会起作用。它似乎使计算机进入略微升高的电源状态以响应,然后返回睡眠模式。对于真正的 LAN 唤醒,当计算机关闭时,ping 似乎不起作用。
答案2
存在可以配置为处理 IP 堆栈部分的智能 NIC,因此我假设可以在板上配置/包含 ICMP。但这些卡是例外。一般来说,这行不通。
答案3
ICMP 属于堆栈的第 3 层。这通常是软件层。这意味着您需要运行某种软件,尽管它不必是功能齐全的操作系统。您所需要的只是运行一个基本的 TCP/IP 堆栈,它可以嵌入在 NIC 卡本身上作为替代方案。但是,您需要运行某种软件。硬件通常负责堆栈的第 2 层和第 1 层。
答案4
请记住,该层与它在硬件/软件/固件中的实现方式无关。通常,应用层不是唯一的软件层 - 操作系统也会处理其下方的层。
当操作系统未运行时,没有什么可以阻止卡实现其自己的完整堆栈(包括应用程序层),但您只会在服务器的远程访问卡上看到这种情况。
正如 John T 所说,局域网唤醒并不是一个完整的实现:我猜测它实现了数据链路层和一个非常受限制的“网络层”,后者仅检查魔术数据包。