0

我想创建一个用于从数据链路层访问 IPv4 数据包的套接字。从unix网络编程V1开始,

socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))

1)我正在实现一个dhcp客户端,这是正确的方法吗?(意味着没有访问数据链路层,我无法收到来自 dhcp 服务器的回复)或者还有其他更简单的方法吗? 另外,由于此套接字将接收发往我系统的所有 IPv4 数据包,我应该如何区分 dhcp 回复数据包和其他数据包?

2)请给我一个好的链接/教程,用于数据链路层访问的网络编程。在上面的书中,没有详细描述。

这是我的代码

4

2 回答 2

2

您是否尝试过查看 PCAP 库?它提供了很好的IP、端口和其他东西的过滤功能。

于 2009-11-25T05:15:21.317 回答
1

您是否也需要链路层标头?如果是这样,您需要使用SOCK_RAW—<code>SOCK_DGRAM 将在将链接层标头提供给您的应用程序之前将其删除。

您可以通过源端口和目标端口识别 DHCP 请求,因为 DHCP 在 UDP 端口 67 和 68 上生成流量。

于 2009-11-25T04:31:16.430 回答