首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >发送UDP多播消息时设置源地址

发送UDP多播消息时设置源地址
EN

Stack Overflow用户
提问于 2019-09-01 08:26:25
回答 1查看 538关注 0票数 0

如何将UDP组播包的源IP地址设置为非接口IP?

我试图编写一个小路由器,选择性地将UDP SSDP包从一个网络路由到另一个网络。我们的计划是在python中这样做,尽管我在这方面很灵活。

路由SSDP通知消息似乎相当容易:我在一个接口上接收它们,并决定在哪个接口上重新广播它们。但是,M-搜索消息的协议要求将源IP设置为消息的原始源,因为任何选择响应的服务都将以单播消息响应源IP和端口。

示例(严重简化):

  • 网络A: 192.168.10.0/24
  • 网络B: 192.168.11.0/24
  • 我的路由器应用程序在192.168.10.2和192.168.11.2的多宿主计算机上运行。

网络A上具有IP 192.168.10.10的客户端发送M-搜索消息:

  • Src IP/端口: 192.168.10.10端口40000
  • Dst IP/港口: 239.255.255.250港口1900

我在192.168.10.2上的“路由器应用程序”接收数据包,并希望在网络B上重新广播它。然而,我在socket API中找不到任何允许我设置源IP地址的方法。只能选择源接口。

因此,重新广播的数据包现在如下所示:

  • Src IP/端口: 192.168.11.2端口xxxxx
  • Dst IP/港口: 239.255.255.250港口1900

由于原始IP和端口丢失,接收服务现在无法返回到客户端。

EN

回答 1

Stack Overflow用户

发布于 2019-09-02 06:41:12

如何将UDP组播包的源IP地址设置为非接口IP?

我所知道的唯一方法是使用原始套接字并手动构造IP报头。请注意,在大多数平台上,原始套接字的使用通常仅限于管理用户。

但是,在套接字API中找不到允许我设置源IP地址的任何方法。

因为根本就没有。

由于原始IP和端口丢失,接收服务现在无法返回到客户端。

当路由器接收到M-搜索请求时,当它接收到单播回复,然后将其转发给原始请求者时,难道不能让路由器记住原始源吗?这就是大多数路由器通常的工作方式。

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

https://stackoverflow.com/questions/57744381

复制
相关文章

相似问题

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