-2

试图实现一个定制的 DHCP 服务器,它只在 BOOTP/DHCP 数据包中发送一个 IP 地址。接收到的DISCOVER数据包解析完成。填充结构后;我无法通过 sendto 功能发送 OFFER 数据包。提供数据包似乎是一个单播数据包,其中目标地址是我们要提供给客户端机器的 IP。

有点困惑;如何使用普通 DGRAM 套接字为不存在的 IP 地址抛出 DHCP OFFER 数据包?还; 扔数据包时是否需要启用 SO_BROADCAST 标志?

任何帮助都非常感谢!

-Thnx,DDPS。

4

1 回答 1

0

我认为使用普通 DGRAM(SOCK_DGRM,IPPROTO_UDP)发送是不行的。因为操作系统会先发出一个 ARP 来定位目的地。您必须使用原始套接字(SOCK_RAW,IPPROTO_RAW),甚至(SOCK_RAW,htons(ETH_P_ALL))。和 setsockopt 与 IPHDRINCL。这意味着您将自己填写IP头。因此,操作系统不会为您检查它并按构造发送。

于 2013-05-12T05:31:47.517 回答