网络唤醒(WOL)原理学习

什么是网络唤醒

网络唤醒(Wake-on-LAN,WOL)是一种计算机局域网唤醒技术,用它可以通过网络唤醒一台计算机。

幻数据包(Magic Packet)

幻数据包是一个广播帧,由6个连续的0xFF字节和16个目标节点的MAC地址组成,用于远程唤醒网络设备。

数据包格式如下

字节偏移原始值说明
0x00-0x0570 70 fc 03 88 c3目标 MAC —— 直投(directed magic packet)。若采用广播则会是 ff ff ff ff ff ff。
0x06-0x0b64 64 4a 3d c7 f6源 MAC —— 发送工具所在主机的网卡地址。
0x0c-0x0d08 42EtherType = 0x0842,已被 IANA 保留给 Wake-on-LAN。
0x0e-0x13ff ff ff ff ff ff同步流 (sync stream) —— 6 × FF,这正是 WOL 规范的开头。
0x14-0x7370 70 fc 03 88 c3 × 16目标 MAC 重复 16 次(96 byte)。抓包截断于 0x73,后面继续是同样的序列,直至填满整个帧。

对于实际使用来说,在发包的时候,无需指定源MAC和目标MAC

普通 UDP/TCP/IPv4/IPv6 套接字工作在 L4/L3,开发者只用关心端口和 IP;

L2 细节(MAC 地址、以太类型、CRC 校验和等)由 内核 + 网卡 自动补齐。
这样一来,同一段代码既能在以太网跑,也能在 WLAN、拨号 PPP、隧道接口上跑,而不需要每种介质都重写一次。

自动解析与填充流程

步骤谁来做主要动作
应用层send()/sendto()只交付 载荷(例如 WOL 魔术包 102 byte)和“目的 IP/端口”或“广播 IP”。
内核协议栈L4/L3计算 UDP/TCP 校验和 → 封装 IP 头。
内核协议栈ARP/ND如果目的 IP 在本网段:查询 ARP 缓存;没有就广播 ARP,拿到 目的 MAC。若发送广播 IP(255.255.255.255),直接设为 FF\:FF\:FF\:FF\:FF\:FF
内核协议栈L2目的 MAC(ARP 或广播得到)+ 源 MAC(本机网卡硬件地址) 写入帧头;设置 EtherType(0x0800, 0x0842 …)。
网卡硬件PHY追加 FCS(CRC-32),发射比特流。


知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
上一篇