gpt4 book ai didi

c - 在 GNU/Linux/C 中使用多播 (224.0.0.12) 发现 DHCP 服务器

转载 作者:IT王子 更新时间:2023-10-29 00:39:23 26 4
gpt4 key购买 nike

这个问题可能源于对 IP 多播的基本误解,所以如果我错了,请纠正我。

我正在尝试编写 C 代码来查找网络上所有 DHCP 服务器的 IP 地址。用例是这样的:

  1. 客户端广播 DHCP 发现。
  2. 我的专有中继代理拾取数据包,添加一些基本信息,然后将其单播转发到已知 IP 地址的 DHCP 服务器。

我遇到的问题是告诉中继代理 DHCP 服务器在哪里。我发现 IANA 为 DHCP 服务器保留了多播地址 224.0.0.12,所以我想我只需配置服务器来监听该多播流量。但是每当我将 IP_ADD_MEMBERSHIP 的 linux 套接字选项配置为 224.0.0.12 时,它都会使用 IGMP,这是一个完全独立的协议(protocol),我不想实现它。

我是不是误解了多播的工作原理?我不应该能够从中继代理发送 ping 到 224.0.0.12 并让它从所有 DHCP 服务器返回 ping 响应吗?


附加信息:

  • 当我执行 ifconfig
  • 时,所有盒子上的接口(interface)都列出了 MULTICAST
  • 我已经在所有盒子上使用 ip route add 224.0.0.0/4 dev eth0 添加了多播路由

最佳答案

也许您应该做客户端所做的事情 - 使用 DHCPDISCOVER 数据包在目标网络上广播(而不是多播!)?我有几个正在运行的 DHCP 服务器,但没有一个在监听 224 网络。

您可能还想请求您现有的地址,或者为您返回的任何优惠发送 DHCPRELEASE,以免在服务器上的虚假预订中绑定(bind)地址。

关于c - 在 GNU/Linux/C 中使用多播 (224.0.0.12) 发现 DHCP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10537917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com