尝试实现只在BOOTP / DHCP数据包中发送IP地址的自定义DHCP服务器。完成收到的DISCOVER数据包的解析。填充结构后;我无法通过sendto功能发送OFFER数据包。 OFFER数据包似乎是一个单播数据包,其中目标地址是我们将提供给客户端计算机的IP。
有点困惑;如何使用普通DGRAM套接字为非现有IP地址丢弃DHCP OFFER数据包?也;在丢弃数据包时是否需要启用SO_BROADCAST标志?
非常感谢任何帮助!!!
-Thnx, DDPS。
答案 0 :(得分:0)
我认为使用普通DGRAM(SOCK_DGRM,IPPROTO_UDP)发送是不行的。因为操作系统将首先发出ARP来定位目的地。 您必须使用原始套接字(SOCK_RAW,IPPROTO_RAW),甚至(SOCK_RAW,htons(ETH_P_ALL))。和setsockopt与IPHDRINCL。这意味着您将自己填写IP标头。因此操作系统不会为您检查它并按照构造发送出去。