如何测试HTTP Keep alive实际上正在工作

时间:2010-11-22 03:54:49

标签: http wireshark keep-alive

我知道在HTTP 1.1中默认启用了HTTP keep-alive,但我想找到一种方法来确认它确实在工作。

有没有人知道从网络浏览器测试的简单方法(EG如何理解wireshark)。我知道我需要通过相同的TCP连接查找多个HTTP请求,但我不知道如何以wireshark或任何其他方式确认。

谢谢!

3 个答案:

答案 0 :(得分:18)

作为Ron Garrity said on ServerFault,您可以像这样使用Curl

curl -Iv http://www.aptivate.org 2>&1 | grep -i 'connection #0'

如果keep-alive工作,它会输出这两行:

* Connection #0 to host www.aptivate.org left intact
* Closing connection #0

如果保持活着不起作用,那么它只输出这一行:

* Closing connection #0

答案 1 :(得分:4)

如果您使用的是Windows Vista或更高版本,则可以使用资源管理器。 “网络”选项卡将列出所有打开的TCP连接及其启动过程。使用一个选项卡打开浏览器,浏览到您的页面并进行测试。

答案 2 :(得分:0)

首先,尝试在Wireshark中捕获目标网站的流量,并使用以下过滤器将其限制为所需内容:

tcp port 80 and host targetwebsite.com

然后在浏览器中加载页面或通过您拥有的任何工具获取页面。如果目标网页刷新自身或其中的某个值,请将其保持打开状态,直到您至少进行一次更改为止。

现在您有足够的数据,您可以停止在Wireshark中捕获过程。

你应该看到几十条记录,它们的协议应该是TCP或HTTP。为了快速简单检查,您不需要TCP记录。所以,让我们通过应用另一个过滤器删除它们在窗口的顶部有一个“过滤器”字段。在那里键入http,wireshark将隐藏所有记录,但是那些具有HTTP协议的记录。

现在选择一条记录并查看下一级详细信息,您可以在第二个框中找到所有记录。为了确保您正在寻找合适的位置,第一行以“Frame XYZ”开头。第四行以“传输控制协议”开头。在“SRC端口”和“DST端口:”之后查找端口号。根据记录,其中一个号码属于网络服务器(通常为80),另一个号码显示最终的端口号。

现在检查几个不同的GET记录。要知道请求是否为GET记录,请查看“信息”列。如果您的端口号码被多次使用,那么所有这些请求都是通过HTTP keepalive完成的。

请记住,即使网络服务器支持keepalive,大多数浏览器也会打开多个连接。所以,不要只找到一个不同的端口来结束你的评估。