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

C 使用套接字将数据包发送到另一个子网/网络,c,sockets,networking,C,Sockets,Networking,我试图找出网络中的机器是否运行某个应用程序。更像是,我试图解析网络中节点的地址 我构建了一个基于ARP的小代码,但它只在本地网络(同一子网)上工作。我要做的是解析子网之外的地址,即所有其他节点 我读了这些答案: 及 但他们都在谈论改变路由器设置或创建多播网络 从我读到的关于多播的内容来看,我需要事先创建一个多任务网络。真的有必要吗 对于更改路由器设置,它真的必须是“特殊”路由器吗 这是一个大学作业的全部,可能会在一个特别的网络或类似的东西上演示。 我愿意接受解决原始问题的想法 附言: 1.我是一

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

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

我读了这些答案: 及

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

  • 从我读到的关于多播的内容来看,我需要事先创建一个多任务网络。真的有必要吗
  • 对于更改路由器设置,它真的必须是“特殊”路由器吗
  • 这是一个大学作业的全部,可能会在一个特别的网络或类似的东西上演示。 我愿意接受解决原始问题的想法

    附言: 1.我是一个网络初学者,所以请原谅我的任何错误或误解

  • 我使用的是sockets和C(没有其他选项)
  • 编辑1: 我很清楚ARP在子网之外是无用的。我提到它是因为我使用了它,它有助于解释问题

    编辑2:

    最初的问题是:

    构建一个聊天应用程序,不用使用任何类型的中央服务器就可以从一个点向另一个点发送消息。甚至不允许使用带有中央存储的混合网络

    i、 e.如果A和B是两个客户端,A应该直接连接到B,反之亦然。
    我做了一些研究,决定使用P2P架构。现在我一直想知道A是如何发现B的地址的。如果我知道B的子网,我可以强行找到B,但既然我没有这样的信息,我该怎么办

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

    类似地,UDP广播通常不会在本地网络之外传播,出于与安全性和通信量相关的原因,它们不会传播是件好事

  • 从我读到的关于多播的内容来看,我需要事先创建一个多任务网络。真的有必要吗
  • 基本上,是的。您的路由器需要配置为支持多播(这可能是它们的默认设置)。所有参与者都需要同意并加入同一个多播组。可能不需要任何新的网络硬件,但多播通信有自己的协议和网络要求;它不仅仅是一个可以跨越网络边界的广播

  • 对于更改路由器设置,它真的必须是“特殊”路由器吗

  • 如果您的意思是更改路由器设置以便在网络之间路由UDP广播,那么您确实需要一个公开此功能的路由器。但我敦促你们不要这样做,因为它会让来自所有其他来源的广播,出于所有其他原因,也通过路由器传输。至少,这将显著增加所有相关网络的噪音,但它可能会导致应用程序和服务的真正错误行为,而不是您的应用程序和服务。

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

    类似地,UDP广播通常不会在本地网络之外传播,出于与安全性和通信量相关的原因,它们不会传播是件好事

  • 从我读到的关于多播的内容来看,我需要事先创建一个多任务网络。真的有必要吗
  • 基本上,是的。您的路由器需要配置为支持多播(这可能是它们的默认设置)。所有参与者都需要同意并加入同一个多播组。可能不需要任何新的网络硬件,但多播通信有自己的协议和网络要求;它不仅仅是一个可以跨越网络边界的广播

  • 对于更改路由器设置,它真的必须是“特殊”路由器吗
  • 如果您的意思是更改路由器设置以便在网络之间路由UDP广播,那么您确实需要一个公开此功能的路由器。但我敦促你们不要这样做,因为它会让来自所有其他来源的广播,出于所有其他原因,也通过路由器传输。至少,这将显著增加所有相关网络的噪音,但它可能会导致应用程序和服务的真正错误行为,而不是您的应用程序和服务。

    有限的广播(
    255.255.255
    ,ARP请求将其用作目标地址,而ARP仅适用于本地LAN上的IPv4)无法跨越路由器,并且网络广播(最后一个网络地址,其中主机为所有网络地址)默认情况下无法跨越路由器(定向广播),因为这存在安全风险(请参阅)

    一些路由器可以配置为转发定向广播,但这可能是危险的

    多播是广播的一种形式。多播路由与单播路由非常不同,路径中的每个路由器都必须配置为多播路由。此外,主机必须先订阅多播组,然后才能侦听来自多播组的数据包。此外,还有一些所有主机都会侦听的多播组,但这些是无法从本地LAN转发的链路本地多播。

    有限的广播(
    255.255.255.255
    ,ARP请求将其用作目标地址,ARP仅在本地LAN上对IPv4有效)无法通过路由器,默认情况下,网络广播(最后一个网络地址,其中主机为所有网络地址)无法通过路由器(定向广播),因为这存在安全风险(请参阅)

    可以配置一些路由器