在网络中,我的 IP 是 192.168.1.101。我正在尝试建立另一台家用电脑,其 IP 为 192.168.1.102(使用路由器连接)。现在,当我在 192.168.1.102 关闭时 ping 时,我得到了Sent = 4, Received = 4, Lost = 0 (0% loss)
。但是,那台电脑已经关闭,
- 为什么我会得到这个。当192.168.1.102打开时,
0% loss
我也得到这个。0% loss
- 并且
Destination host unreachable.
可以安全地假设,在 ping 任何 IP 之后,如果我得到此信息,那么该 IP 已与网络断开连接? - 网络中 IP 是否只有 2 种状态?可访问(已打开,可以 ping 通)和不可访问(已关闭,因此无法 ping 通)
- 防火墙会阻止 ping 吗?如果是,如何检查该 IP 是否在我的网络中?(我正在尝试开发客户端服务器软件,并且正在寻找一种方法来检测有效的 IP,该 IP 将从服务器端进行身份验证。)
什么时候192.168.1.102已关闭
C:\Users>ping 192.168.1.102
Pinging 192.168.1.102 with 32 bytes of data:
Reply from 192.168.1.101: Destination host unreachable.
Reply from 192.168.1.101: Destination host unreachable.
Reply from 192.168.1.101: Destination host unreachable.
Reply from 192.168.1.101: Destination host unreachable.
Ping statistics for 192.168.1.102:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
什么时候192.168.1.102已打开
C:\Users>ping 192.168.1.102
Pinging 192.168.1.102 with 32 bytes of data:
Reply from 192.168.1.102: bytes=32 time=172ms TTL=128
Reply from 192.168.1.102: bytes=32 time=1ms TTL=128
Reply from 192.168.1.102: bytes=32 time=1ms TTL=128
Reply from 192.168.1.102: bytes=32 time=29ms TTL=128
Ping statistics for 192.168.1.102:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 172ms, Average = 50ms
答案1
在这种情况下, Windows ping 会报告0% loss
,但 Linux 的 ping 会报告100% loss
。这实际上是一个语义问题,因为在“目标主机不可达”的情况下,实际的 ping 数据包不会被发送(ARP 查找失败)。
回答您的第二个问题:即使机器处于开启状态,ping 也可能会失败,因为防火墙可以阻止 ICMP ping 数据包。
如果您想要有关问题的替代解决方案的建议,请详细说明您尝试执行的“身份验证”类型。
如果您只是想知道某个地址是否位于同一个本地网络(“子网”)中,您可能会对该route print
命令感兴趣。查看“网络目标”和“网络掩码”列以确定当前子网的地址范围。
答案2
您的路由器报告说它已收到 100%,而不是主机。主机显然是“目标主机无法访问”,因为计算机已关闭,因此无法访问。
这是正常现象,当我 ping 一个我知道未被使用且之前未被使用的 IP 地址时,我得到的正是这种结果。在这种情况下,路由器不知道主机是否可以访问。
ping 还可以返回另一个回复,即“请求超时”,这与“目标主机无法访问”的区别在于,在路由器之前开启时,相关 IP 曾进入路由器的 ARP(地址解析协议)表。它知道它曾经可以访问,但现在报告无法访问。
当然,Ping 可能会被软件防火墙阻止。最简单的检查方法是暂时关闭防火墙。