使用raw socket发送magic packet

  • Post author:
  • Post category:其他


Magic Packet是进行网络唤醒的数据包,将这个数据包以广播的形式发到局域网上,与数据包中所关联的MAC相同的电脑就会被唤醒开机,通常我们都是使用UDP报文的形式来发送这个数据包,但实际上在进行网络唤醒的时候,只要报文中包含Magic Packet应该就可以唤醒相关的计算机,与IP协议、UDP协议没有任何关系,本文将试图抛开网络层(IP层)和传输层(TCP/UDP层),直接在数据链路层发出Magic Packet,并成功实现网络唤醒,本文将提供完整的源代码。阅读本文需要有较好的网络编程基础,本文对网络编程的初学者有一定难度。



1. Magic Packet

  • 我比较喜欢把这个数据包称作”网络唤醒包”;有很多地方把它翻译成”魔术包”或者”魔法数据包”,我个人觉着太过表面,无法表达其实际的含义;本文将这个数据包称为”网络唤醒包”或者”Magic Packet”,二者具有完全相同的含义;
  • 以前写过一篇与嵌入式相关的文章

    《远程开机:一个简单的嵌入式项目开发》

    ,在嵌入式环境下使用Magic Packet进行远程开机的小项目,有兴趣的读者可以参考;

  • Magic Packet

    就是一个指定格式的数据包,其格式为:6 个

    0xff

    ,然后16组需要被网络唤醒的电脑的

    MAC

    地址,比如需要被唤醒的电脑的 M