客户端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应用程序configurationIIS 6.0 / Windows Server 2003 Web服务器。

当我尝试从客户端计算机上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托pipe的虚拟服务器)

我有一个ASP.NET应用程序在服务器上的虚拟目录中。 在IE或Firefox,如果我inputhttp://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这两台电脑。

老兄,你不能ping通端口号大声笑,你的TCP / IP协议栈只是将IP:“80”添加到一些其他的IP,甚至不是你想要ping的IP地址。

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

在客户端74.208.192.xx:80parsing为208.67.216.xxx,这就是ping成功的原因。 你有没有检查客户端A上的主机文件?

请执行traceroute到服务器,以查看您的连接丢失的地方。 还要在你的路由器上设置数据包监控,看看你的ping请求是否已经发出或重新进入。

如上所述,你ping命令成功的原因是74.208.192.xx:80,因为它以某种方式被parsing到其他IP地址,这就是你正在ping的那个。

既然你可以使用来自两个客户端的浏览器进行连接,我猜这个问题与连通性无关,但可能与Web服务客户端或客户端计算机上的防火墙产生干扰。

我会检查你的客户端(我假设的SOAP)是否有任何打印诊断信息的方法。 这可能会让你发现什么是错的。

您也可以尝试使用浏览器加载asmx页面,查看popup的内容,或者是否有任何错误。 当我用浏览器加载一个asmx时,我得到一个带有方法列表的HTML页面; 看看你是否能从你的客户那里获得这么多。

您不能ping通端口号,只能ping通IP地址。

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

如果您尝试ping不同于普通IP地址的东西,可能会发生奇怪的事情,因为ping命令和/或底层TCP / IP堆栈可能会尝试将该stringparsing为除了您尝试联系的地址之外的其他地址。 正如你所看到的,你的ping命令给你这个输出:

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

这意味着它实际上不是ping你所问的IP,而是一个完全不同的IP。

我有同样的问题。 当我做了一个tracert我得到相同的请求超时。 但是,我能够从客户端ping服务器。 从服务器到客户端执行tracert b。 我看到了客户端b的FQDN(完全合格的域名)。 然后,我回到客户端,并使用相同的fqdn,在我的情况是相同的,并replaceip部分与我的目标服务器ip在该fqdn。 我能ping通服务器。

总结:如果你无法ping通一台服务器,你可以尝试用FQDN来ping服务器,这就解决了我的问题。

最好 :)