gpt4 book ai didi

c - 使用套接字将数据包发送到另一个子网/网络

转载 作者:太空宇宙 更新时间:2023-11-04 08:00:02 28 4
gpt4 key购买 nike

我试图查明网络中的机器是否正在运行某个应用程序。更像是,我正在尝试解析网络中节点的地址。

我构建了一个基于 ARP 的小代码,但它只能在本地网络(同一子网)上运行。我想要做的是解析子网外的地址,即所有其他节点。

我阅读了这些答案:UDP broadcast packets across subnetsBroadcast on different subnets

但他们都在谈论更改路由器设置或创建多播网络。

  1. 根据我阅读的有关多播工作的内容,我需要事先创建一个多任务网络。真的有必要吗?
  2. 对于更改路由器设置,它真的必须是“特殊”路由器吗?

这都是为了大学作业,可能会在临时网络或类似网络上进行演示。我对解决原始问题的想法持开放态度。

附言:1. 我是网络初学者,如有任何错误或误解,请多多包涵。

  1. 我正在使用套接字和 C(没有其他选择)。

编辑 1:我很清楚 ARP 在子网之外是无用的。我提到它是因为我使用它并且它有助于解释问题。

编辑 2:

原问题是:

构建一个聊天应用程序,无需使用任何类型的中央服务器即可将消息从一个点发送到另一个点。甚至不允许具有中央商店的混合网络。

即如果 A 和 B 是两个客户端,A 应该直接连接到 B,反之亦然。我做了一些研究并决定使用 P2P 架构。现在我被困在 A 如何发现 B 的地址上。如果我知道 B 的子网,我可以暴力破解并找到 B,但由于我没有此类信息,我该怎么办?

最佳答案

ARP 不打算在本地网络之外路由,在 IPv4 中,“本地网络”通常对应于一个子网。您不应期望 ARP 流量将路由器从内部传输到外部,或者反之亦然

同样,UDP 广播通常不会传播到本地网络之外,出于与安全和流量相关的原因,它们不传播是件好事。

  1. From what I read for multicasting to work, I need to create a multitask network beforehand. Is it really necessary?

基本上,是的。您的路由器需要配置为支持多播(这可能是它们的默认设置)。所有参与者都需要同意并加入同一个多播组。可能不需要任何新的网络硬件,但多播通信有其自己的协议(protocol)和网络要求;它不仅仅是可以穿越网络边界的广播。

  1. And for changing router setting, does it really have to be a "special" router?

如果您的意思是更改路由器设置以便在网络之间路由 UDP 广播,那么您确实需要一个具有此功能的路由器。但我强烈建议您不要这样做,因为出于所有其他原因,它也会让来自所有其他来源的广播也通过路由器。至少,这会显着增加所有相关网络的噪音,但它可能会对您以外的应用程序和服务产生真正的不当行为。

关于c - 使用套接字将数据包发送到另一个子网/网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47354880/

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