3

我有一个域名要测试。Ping 约为 20 毫秒。“HTTP HEAD”约为 500 毫秒。

为什么他们之间有这么大的区别?这是服务器端的问题吗?是不是差别太大了?25 次。

4

4 回答 4

7

Ping 通常实现为 ICMP 回显请求。一个更简单的数据报协议:您发送一个数据包,服务器回复相应的数据包,仅此而已。

HTTP HEAD 仍然是 HTTP:必须在两端建立 TCP 连接,并且 HTTP 服务器必须回复您的请求的标头。它显然很快,但不像发送单个数据包响应那么简单。

如果您正在测试一个域,ping 是一个更合适的工具,而 HTTP HEAD 是一个更适合测试HTTP 服务器的工具。

于 2014-12-08T21:11:22.260 回答
7

好吧,首先,ping 通过不同的协议 ICMP。服务器本身直接响应 ping。HTTP 是一种不同的协议,由必须在服务器上运行的附加应用程序(即 Web 服务器)处理(ping 内置于操作系统中)。根据网络服务器的重量,与 ping 之类的东西相比,它可能需要更多的时间。此外,HEAD 与特定 URL 一起发送。如果该 URL 由诸如 ASP.NET 之类的东西而不是直接由 Web 服务器处理,则必须进行额外的处理才能返回响应。

于 2014-12-08T21:11:51.500 回答
2

如果我没记错的话,ping 请求是在网络驱动程序级别处理的,因此速度非常快(有时它由硬件本身处理,完全跳过软件处理)。它将很好地描绘网络延迟。

一个HTTP HEAD请求必须访问 web 服务器,这是一个用户级程序,需要多次复制数据位,以及解析请求的 web 服务器代码等。然后 web 服务器必须为要求。根据服务器和请求的页面,这可能需要一段时间,因为无论如何它都必须生成请求的页面(它只向您发送标题,而不是页面内容。)

于 2014-12-08T21:10:42.737 回答
1

当您运行 ping 时,它的响应速度要快得多,因为它旨在立即响应。它向您显示近似延迟,因此如果您使用 ping 获得一致的结果,则无法获得比这更低的延迟。

当您运行时,HTTP HEAD您实际上是在向特定页面发出请求,它会被处理、执行并呈现,并且只返回 head。与 ping 相比,它的开销要多得多,这就是为什么它需要更长的时间。

于 2014-12-08T21:09:06.423 回答