使用和不使用http://进行ping操作之间的区别


46

我正在尝试Ping我的网站http://www.example.com/,它解析为未知的IP地址并超时。

PING http://www.example.com/ (198.105.254.228): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

但是当我ping example.com它有效

我在这里错过了什么?


32
令人困惑的是,ping甚至无法将其解析为主机名,更不用说发送失败的ICMP数据包了。您正在使用什么操作系统/版本?
蓬松的

11
我很抱歉,但是由于多种原因,我拒绝了这个理由-新用户有一个问题,其中包含指向其网站的URL,而PING的输出显然是虚假的。保留所有权利,这是试图将流量吸引到该URL。除非我们能找到哪个操作系统具有PING版本,否则1)知道URL是什么,2)每次超时都标识icmp_seq号。
黎明本顿2015年


25
为了谁downvoted,因为他们根本不知道有这劫持未能查找DNS服务的人,不知道pinggetaddrinfo()朋友通过斜线,不知道56 data bytes是一种常见的默认等:请以此为标志您在尝试提供帮助之前要多了解一些事情的努力将不胜感激。
rakslice

5
@Ƭᴇcʜιᴇ007ping结果是真实的,当我在OS X上使用TimeWarner Cable DNS ping无效的主机名时,看到的结果完全相同。–
Hunter Dolan

Answers:


108

我试图对我的网站http://www.example.com/进行ping操作,它解析为未知的IP地址并超时。

PING http://www.example.com/ (198.105.254.228): 56 data bytes
Request timeout for icmp_seq 0

ping的参数是主机名(或IP地址)。

所以以下所有工作:

ping example.com
ping www.example.com
ping 127.0.0.1

另一方面,

ping http://www.example.com/

不能作为http://www.example.com/使用HTTP 统一资源定位符(URL)而不是有效的主机名(尽管其中一部分是主机名)。

HTTP URL由4部分组成:

  • 方案-始终存在
  • 主机名-始终存在
  • 路径或词干-始终存在,但有时为null
  • 参数-可选

Ping通常不会将URL识别为有效的目标主机名。

注意事项

  • 并非所有URL都具有上述格式。

  • 完整的URL包含一个命名方案说明符,后跟一个字符串,该字符串的格式取决于命名方案。

  • URL的格式在IETF规范统一资源定位符(URL)中定义


DNS劫持

如果将DNS服务器(将主机名解析为IP地址)配置为返回有效IP地址(即使提供了无效的主机名),也可能发生上述情况。

如果ISP劫持了您的DNS查询,则可能会发生这种情况。

从答案中,对于我键入的任何随机主机名,为什么Ping解析为IP 198.105.254.228?迈克尔·汉普顿Michael Hampton)

他们试图通过将对不存在的域的请求重定向到提供搜索结果和广告的白标服务来“帮助”,除您之外的所有人都从中获利。

幸运的是,他们确实有一个首选项页面,您可以在其中将其关闭。


33

当使用不是IP地址的字符串运行ping命令时,它首先需要解析您要ping的主机的IP地址。

运行时:

$ ping example.com

DNS服务器返回托管网站的服务器的IP地址。

但是,当您为协议和路径添加前缀以创建标准的HTTP URL时,该URL将全部发送到要解析的DNS服务器。

因此,代替DNS服务器查找记录的example.com不是查找http://example.com/有效主机名的记录。

许多DNS服务器将一无所获。在这种情况下,ping命令将因DNS解析错误而出错。

但是,您的DNS服务器返回IP地址123.456.789.000。该地址似乎是时代华纳有线公司的一项建议服务,旨在帮助在浏览器中输入错误网址的用户。

但是ping命令按字面意义进行操作,并认为主机名http://example.com/(不是有效的主机名)解析为address 123.456.789.000

此后ping命令超时的原因是因为123.456.789.000它不响应ICMP请求。


5
值得指出的是,实际的域/ IP是由社区bot编辑的。“ 123.456.789.000”最初是当您尝试解析不存在的主机名时TWC的DNS抛出的IP地址。
Hunter Dolan 2015年

1
机器人不知道如何进行自动编辑;我想说这是匿名用户建议的修改。
Lao Lam 2015年

该编辑是由一个匿名用户提出的,并由本人和另一个用户批准。
DavidPostill

21

http://代表超文本传输​​协议,该协议用于访问网页。对服务器执行Ping操作不使用HTTP,而是由ICMP(互联网控制消息协议)消息组成,因此,在这种情况下,http://没有任何意义。


我想说这对于一个尚不了解的人来说并不明显,但是现在您知道了KJ4TIP的答案中的信息,请看一下输出:Request timeout for icmp_seq 0您可以在那里看到ICMP,这意味着ICMP序列0、1、2 ...
Tyler Collier 2015年

0

您为什么仍要使用“ ping”。如果存在阻止“ ping”流量的防火墙,那么它将无法正常工作。

我认为,如果您要测试Web服务器,则最好使用“ telnet”,然后可以测试主机和应该监听的端口。

例如:要 在空白屏幕上测试Web服务器 telnet www.mywebserver.com 80,请键入“ get”,然后输入“ enter”,您应该从Web服务器返回一堆http响应。(例如:HTTP / 1.1 400错误请求...

这告诉我,不仅服务器“启动”,而且还在端口80上侦听和响应。(我也希望所有防火墙都能将端口80传递到我的Web服务器)

同样,“ telnet”也可用于测试邮件服务器,ftp和几乎所有其他内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.