客户端 A 可以 ping 服务器 S,但客户端 B 不能

客户端 A 可以 ping 服务器 S,但客户端 B 不能

我将问题从 stackoverflow.com 移到这里

https://stackoverflow.com/questions/2917569/unable-to-ping-server-from-client-b-but-able-to-ping-from-client-a-please-help

我正在尝试使用 ASP.net 应用程序配置 IIS 6.0/Windows Server 2003 Web 服务器。

当我尝试从客户端计算机 AI ping 服务器时,得到以下结果:

PING 74.208.192.xxx ==> Ping fails
PING 74.208.192.xxx:80 ==> Ping succeeds!

从客户端计算机 B 来看,两次 ping 操作均失败。

    PING 74.208.192.xxx ==> Ping fails
    PING 74.208.192.xxx:80 ==> Ping fails with a message 
"Ping request could not find host 74.208.192.xxx:80"

客户端 A 和 B 都位于同一子网。服务器位于外部(由 ISP 托管的虚拟服务器)

我在服务器上的虚拟目录中有一个 ASP.NET 应用程序。在 IE 或 Firefox 中,如果我输入http://74.208.192.xxx/subdir/subdir/../Default.aspx,它可在两个客户端上运行!服务器具有默认防火墙设置,但已启用 Web 服务器(端口 80 已打开)。

来自客户A(请注意,当 ping 成功时,‘回复’地址会有所不同。)

C:\Program Files\Microsoft Visual Studio 9.0\VC>ping 74.208.192.xx

Pinging 74.208.192.xx with 32 bytes of data:

Request timed out.
...
Request timed out.

Ping statistics for 74.208.192.xx:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\Program Files\Microsoft Visual Studio 9.0\VC>ping 74.208.192.xx:80

Pinging 74.208.192.xx:80 [208.67.216.xxx] with 32 bytes of data:

Reply from 208.67.216.xxx: bytes=32 time=35ms TTL=54
...
Reply from 208.67.216.xxx: bytes=32 time=33ms TTL=54

Ping statistics for 208.67.216.xxx:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 32ms, Maximum = 54ms, Average = 38ms

来自客户端B

C:\Documents and Settings\user>ping 74.208.192.81

Pinging 74.208.192.81 with 32 bytes of data:

Request timed out.
...
Request timed out.

Ping statistics for 74.208.192.81:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\Documents and Settings\user>ping 74.208.192.81:80
Ping request could not find host 74.208.192.81:80. Please check the name and try
 again.

我的主要问题是我有一个 Web 服务 (asmx) 文件,而 Web 服务客户端程序无法从客户端 B 访问它,但可以从客户端 A 访问它。我试图找出原因,并认为这个 ping 问题可能会有所启发。

我可以在两台计算机上 ping yahoo.com。

答案1

您无法 ping 端口号,只能 ping IP 地址。

如果你想检查给定主机上的给定端口是否打开,只需使用telnet aaa.bbb.ccc.ddd port,fe telnet 74.208.192.xxx 80

如果你尝试 ping 一个不同于普通 IP 地址的东西,可能会发生奇怪的事情,因为 ping 命令和/或底层 TCP/IP 堆栈可能会尝试将该字符串解析为一些其他地址比您尝试联系的地址要小。如您所见,ping 命令给出了以下输出:

Pinging 74.208.192.xx:80 [208.67.216.xxx] with 32 bytes of data: 

这意味着它实际上并没有 ping 您要求的 IP,而是 ping 一个完全不同的 IP。

答案2

我不确定我们是否可以 ping 端口号。

在客户端 A 上,74.208.192.xx:80 解析为 208.67.216.xxx,因此 ping 成功。您检查过客户端 A 上的 hosts 文件吗?

答案3

请对服务器执行跟踪路由,查看您的连接在哪里丢失。另外,在路由器上设置数据包监控,查看您的 ping 请求是否成功发送或返回。

答案4

我遇到了同样的问题。当我执行 tracert 时,我得到了相同的请求超时。但是,我能够从服务器 ping 客户端 b。在从服务器到客户端 b 执行 tracert 时。我看到了客户端 b 的 FQDN(完全限定域名)。然后,我返回客户端并使用与我的情况相同的 fqdn,并将该 fqdn 中的 ip 部分替换为目标服务器 ip。我能够 ping 服务器。

摘要:如果您无法 ping 通服务器,则可以尝试使用 FQDN ping 该服务器,这解决了我的问题。

最好的 :)

相关内容