发帖子已经是初一的子时了,不过春晚是在是没什么看头呀……
——————————————————————–
放假了,赶在年前给家里升级了千兆 络环境(内 )。各种布线、换件,实在是件体力活。
在调试 卡1Gbps速率协商的时候,发现 卡驱动设置里有个名为“Wake on Magic
Packet”的选项(图),应该是做局域 远程唤醒计算机用的。之前没怎么关注过,不过前些天升级千兆 的时候顺便向楼上的奶奶家布置了一根 线,远程开机就成为潜在的需求了。
与“幻数据包”相同功能的还有一个“模式匹配(Pattern
Match)”,暂时还不清楚,求高人解达。这里先说说我对前者学习到的一些皮毛。
用“Magic
Packet”当关键字问度娘,找到了一些相关的资料。发现这个东西是AMD研发的协议,不过已经被所有的 卡支持了。AMD自己出了个”Magic
Packet Utility”,图形化应用,可以方便的使用(图)。 当然,既然是学计算机的就不能满足于“能用”,研究原理当然更重要
[^o^].
发送数据包测试,没唤醒。想不出为什么(当时脑残了),于是抓包看了看(图)。

白皮书里还介绍了如何跨子 实现远程唤醒,暂时没精力看完,以后有空继续学习。
在搜索的过程中看到了微软MSDN的一个连接(点这里),对Magic Packet有一个狭义的说明。
The magic packet is a UDP packet that is encapsulated in an IPv4
or IPv6 datagram. The IP datagram is sent as a link layer broadcast
packet.
If IPv4 is used, the destination IP address MUST be the IP
subnet broadcast address.
If IPv6 is used, the destination IP address MUST be FF:2::1.
The payload of the UDP packet MUST adhere to the AMD magic
packet specification.
文中特意强调幻数据包是个UDP包,而我在测试中得到结论,内容在任何 卡可解开的封装中都可以。
查了一些论坛的资料,原因有三:
封装到帧的障碍:Windows 本身并没有提供发送以太 帧的接口,需要第三方软件,如winpcap
封装到IP的障碍:唤醒 络封包直接作为数据封装在IP协议里,需要原始套接字编程,要构造IP头,Windows
对原始套接字编程做了限制
封装到TCP的障碍:不支持255.255.255.255的广播
综上,UDP既能广播又容易编程,被广泛采用。毕竟不是谁都闲的用包生成器做测试的 – -|
最后,附上 络中广为流传的一份SendMagic.cpp的源码,用C++实现的,简洁易懂,很不错。
希望能够多和大家交流!欢迎拍砖~
相关资源:梦幻软件下载系统DDdownV1.0 -其它文档类资源…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!