首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在GNU/Linux/C中使用多播(224.0.0.12)发现DHCP服务器

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

Stack Overflow用户
提问于 2012-05-10 16:00:42
回答 2查看 6.4K关注 0票数 5

这个问题可能源于对IP组播的基本误解,所以如果我不在基础上,请纠正我。

我试图编写C代码来查找网络上所有DHCP服务器的IP地址。用例如下:

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

我遇到的问题是告诉中继代理DHCP服务器在哪里。我发现多播地址224.0.0.12是由IANA为DHCP服务器保留的,所以我想我只需要配置服务器来侦听多播通信量。但是,每当我将linux选项配置为IP_ADD_MEMBERSHIP为224.0.0.12时,它就使用IGMP,这是一个完全独立的协议,我不想实现它。

我只是误解了组播的工作原理吗?难道我不能从中继代理发送一个ping到224.0.0.12,并让它从所有DHCP服务器返回ping响应吗?

附加信息:

  • 当我执行ifconfig时,所有框上的接口都列出了多播列表
  • 我已经在所有的框中添加了使用ip route add 224.0.0.0/4 dev eth0的多播路由
EN

回答 2

Stack Overflow用户

发布于 2012-05-12 04:49:27

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

您还可能希望请求您现有的地址,或者发送一个DHCPRELEASE作为您返回的任何报价,以便不将地址绑定在服务器上的假预订中。

票数 2
EN

Stack Overflow用户

发布于 2012-06-01 17:59:14

在一般的IPv4设置中,使用广播到UDP端口67,而不是多播。广播请求应由网络上的所有DHCP服务器响应。看一看维基百科页面上的详细信息或者阅读RFC 2131第3节中的广播解释,也可以参见这条线

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10537917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档