我正在做一个我必须制作自定义数据包的项目。也就是说,我必须控制每个数据包标头。我试图使用套接字来做到这一点。基本上,我需要做的是:
SOCKET s = socket(PF_UNSPEC, SOCK_RAW, ethernet_type);
ethernet_type是自定义的,非标准的,如0xAAAA。我正在使用htons()。另外,我最好不要使用winPcap。
现在,我收到错误10043,协议不受支持。
错误消息似乎表明我可以将协议配置到我的系统中,但我不知道该怎么做。
它说:
不支持协议。请求的协议尚未配置到系统中,或者没有针对它的实现。例如,套接字调用请求SOCK_DGRAM套接字,但指定流协议。
这里有一些不同的问题,所以如果有人有任何意见,我真的很感激。
答案 0 :(得分:3)
答案 1 :(得分:0)
我认为在套接字调用中添加新协议会非常困难。您必须确保套接字支持该调用。我认为你必须重新编译套接字函数,我不认为它在windows下很容易实现。
制作自定义数据包不需要您创建新协议
我认为指定RAW套接字的正确方法就是这样
SOCKET s;
s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
如果你真的想尝试使用变量名建议的原始以太网,那么要么使用winpcap驱动程序要么写your own driver
我认为原始以太网还没有另一个“简单”的解决方案。 winpcap相当容易,所以你可能想看看它