如何与分配了“0.0.0.0”IP 地址的设备通信?

Pab*_*lez 20 networking ip

我有一台工业设备,它运行在一个非常基本的操作系统上,称为VxWorks。我通常通过将我的 IPv4 IP 设置为与本地 IP 相同的范围然后运行诊断软件来与系统通信以进行故障排除。

几周前,我发现由于某种奇怪的原因,系统的本地 IP 地址将自身设置为0.0.0.0. 现在我想进入诊断程序以更改它,但我的 PC 不允许设置以0.

有没有其他方法可以与具有0.0.0.0使用 Windows PC的本地 IP 的设备进行通信。

如果不将设备寄回制造商,则无法将设备重置为出厂默认设置。

小智 23

0.0.0.0不是有效的 IP 地址。RFC1700 (a) 声明0.0.0.0/8( 0.anything.anything.anything) 仅保留为源地址。

通常您会看到系统和应用程序绑定端口,0.0.0.0这意味着可以从任何接口访问该端口。

我不熟悉 VxWrks,但我认为有一种方法可以指定本地 IP 以与其他计算机设备连接。

WindRiver 有各种关于如何配置 IP 设置的手册。

  • @CaptainMan:您将 *sockets API* 的一个方面与 *IP 协议* 的一个方面混淆了。绑定“0.0.0.0”是一个 API 级别的东西,用于接受寻址到任何本地配置地址的数据包/连接。它不涉及寻址到“0.0.0.0”的数据包在协议级别的任何地方旅行。 (20认同)

小智 13

您可以诱使您的 PC 认为该设备具有真实的 IP 地址。但是您需要物理地址(也称为 MAC 地址),即具有 6 个两位六位数字字段的东西。你可以通过将它添加到你的 arp 分辨率表来做到这一点。在 Windows 中,打开一个 cmd 终端并使用 arp。

arp -s <IP address> <physical address>
Run Code Online (Sandbox Code Playgroud)

当然,您需要一个在您的网络中唯一的 IP 地址。否则,堆栈将重新路由到其他地方。如果到了这一点,您应该能够访问该设备。网络基础设施将根据物理地址进行路由。

在 Linux 中几乎相同。打开终端,使用arp。

可能不行!!某些设备仅响应其自己的 IP。但我猜这不是你的情况。

  • 如果您现在可以将内容发送到此地址,这并不总是意味着您可以正确处理 RESPONSE(如果有)... (2认同)

Gia*_*968 12

0.0.0.0IP地址是不错,但我猜想,别的东西也该设备是从让你的诊断软件可以方便地连接到该设备阻止零配置网络流量在网络上的改变。

与其他人一样,他们回答0.0.0.0中的state是一个不可路由的 IP 地址,软件通常使用它来绑定设备上所有网络接口上的任何 IP 地址。这基本上意味着:

“嘿,我是一个软件,将接受与我正在运行的机器上任何分配的 IP 地址进行的任何连接。”

因此,如果设备使用 DHCP(为其连接的接口获取其自己的 IP 地址)并获取分配的地址,1.2.3.4那么您可以在1.2.3.4. 如果该地址更改为5.6.7.8设备将很乐意允许您通过5.6.7.8.

0.0.0.0似乎是您发现的东西,但不是问题的原因。相反,我认为,当您陈述时,您遇到的问题就会暴露:

“我通常通过将我的 IPv4 IP 设置为与本地 IP 相同的范围然后运行诊断软件来与系统通信以进行故障排除。”

首先,这看起来很奇怪。为什么需要更改机器的本地 IP 地址才能连接到 VxWorks 设备?你不应该直接连接到设备的IP地址吗?

好吧,当你说出这一点时,我能想到的就是设备和诊断软件可能会使用某种零配置网络设置来运行。意思是,设备在网络上广播,而诊断软件旨在寻找这些设备广播以帮助它在不知道确切 IP 地址的情况下连接到设备。

这种“自配置”零配置网络的东西很方便,直到它变得令人头疼。

我的第一个猜测是,如果您可以确定设备分配给它的 IP 地址,则可以直接连接到设备。再想一想,我敢打赌,您过去可以连接到它的原因(但不是现在)可能与某些网络更改有关,该更改阻止了设备的零配置网络设置正在广播的端口。那可能是什么端口?不确定。但是,如果零配置流量没有通过网络路由,那么这就是您无法连接到设备并且0.0.0.0IP 地址与此无关的原因。


Tet*_*jin 6

0.0.0.0是一个不可路由的地址。您无法路由到它,因为“它实际上并不存在”,或者实际上“可以存在于太多地方”。

根据它是主机还是路由,它的含义可能略有不同。

作为路由,在这种情况下不适用,它表示“默认路由”,没有进一步说明,表示默认网关或“我的任何路由”,或类似于 127.0.0.1

作为主持人,最值得注意的是,在您的情况下,要么是;如维基百科所述

主机在尚未分配地址时声明为自己的地址。比如在使用DHCP时发送初始的DHCPDISCOVER数据包。

当通过 DHCP 请求地址失败时主机分配给自己的地址,前提是主机的 IP 堆栈支持此操作。

假设它通常使用 DHCP,尝试一些事情,而不是完全重置 - “关闭并再次打开”或只是拔掉网络,等一下,重新插入。它可能只是要求一个新的 DHCP地址。

此外,当然,请确保它确实可以看到其 DHCP 服务器。