无论IP地址如何,都与所有网络计算机进行通信

时间:2010-06-03 15:00:31

标签: .net .net-3.5 networking .net-2.0 pinvoke

我有兴趣找到一种方法来枚举本地网络上的所有可访问设备,无论其IP地址如何。例如,在192.168.1.X网络中,如果有一台插入网络的10.0.0.X IP地址的计算机,我希望能够检测到该恶意计算机,并且最好也能与之通信。两台计算机都将运行此自定义软件。

  

澄清:我们希望处理不知道单个计算机的IP地址是什么情况,并且不能保证它在任何特定的子网上。我们所知道的是,计算机被物理地插入同一个交换机,并且计算机分配了一个静态IP(但IP可以是任何东西)。

     

我们可以远程访问网络上的一台计算机(例如,192.168.1.30),我们希望能够与网络上的所有其他计算机进行通信,无论其静态IP是否设置为192.168.1。 x,10.0.0.x,10.45.21.7等。)

我意识到这是一个模糊的描述,问题的完整解决方案将是冗长的,所以我真的在寻找帮助找到正确的方向(“以这种方式使用类XYZ和ABC”)而不是一个完整的实施。

我之所以这样,是因为我们公司将成像计算机出货给成千上万的客户,每个客户都有不同的网络设置(大多数使用相同的IP方案,但很大一部分没有,大多数都没有启用DHCP)他们的网络)。一旦硬件到达,我们很难在网络上获取它,特别是如果IP方案不匹配,因为没有一个技术上面向现场。理想情况下,我想设计一种可以从主工作站使用的控制台,它可以在网络上查找,查找运行我们软件的所有计算机,显示当前的IP地址,并允许您更改IP。

编辑:除非我误解了某些内容,否则我认为我无法使用广播地址255.255.255.255来执行此操作。问题是流氓计算器没有返回原始计算机的路由,所以它会丢弃数据包。也许我误解了一些东西,但下图显示了我对将要发生的事情的理解。

5 个答案:

答案 0 :(得分:2)

您可以查看各种发现协议,尤其是SNMP发现。你也可以做一些简单的事情,比如监听UDP广播和每台电脑,然后做出回应。请记住,所有这些解决方案都可能带来安全漏洞,您的客户可能也不会理解这一点。

答案 1 :(得分:1)

你想要的是广播,这是一篇关于它的文章:

http://www.codeproject.com/KB/cs/BroadCasting.aspx

答案 2 :(得分:0)

您可以使用多播/广播地址与网络中的所有计算机进行通信。

您可以参考本主题,了解如何将该技术用于.NET应用程序:

Multicast support in .Net

背后的基本概念是您的客户将要监听该多播地址,当他们收到信息(PING)时,他们可以将其发回(PONG)。

答案 3 :(得分:0)

根据我的经验,通常有三种方法。

拥有预定义数量的IP地址,计算机在联机时将始终尝试联系(例如,192.168.x.250,192.168.x.230等)并让该计算机成为您可以使用的代理连接到网络上的每台其他计算机。所说的软件将作为服务运行,每5个?分钟将重新连接到服务器以确认它仍然在线。

或者,只需迭代扫描每个IP地址。是的,这需要时间,不,它不是“征税”,因为我们正在谈论硬件和软件。当然,您将以这种方式生成网络流量。还有很多。但是既然你知道可能的IP范围是什么,你可以扫描它们。

第三个是广播,但那有点不同。

这些都是蛮力技术。我会从那里开始并根据需要进行改进。奥卡姆的剃刀和所有混乱。 (是的,我意识到这是准确的“多数不应该被假定没有必要”但是说Occam的Razor听起来更酷〜我们会尝试爱因斯坦:“让一切变得如此简单,但不是更简单”?)

答案 4 :(得分:0)

假设您有一个类似于您的图片的测试平台

1 - On the 192.168.1.30 PC get a dos prompt
2 - Type  arp 10.0.0.47 <enter>
3 - Type  arp -a <enter>

10.0.0.47是否有条目?