计算HTTP数据包

时间:2011-04-20 23:18:25

标签: http packet

HTTP数据包的数量与网页中的对象数量之间的关系是什么?

2 个答案:

答案 0 :(得分:2)

为HTML页面中引用的每个文件发出GET请求,所有这些文件通常都适合一个TCP流段。 HTTP是一个状态机,因此,许多请求/响应可以在一个请求/响应中流水线化。

响应中发送的数据包数量因对象大小和缓存参数而异。例如,如果文件已经在浏览器缓存中,它将进行条件获取并将接收HTTP / 1.1 304 Not Modified响应代码,该代码不包含任何数据。此外,许多HTTP / 1.1 304可以在一个段中发布,因为与段的最大大小相比,这种响应非常小。另一个例子,如果文件大于最大段大小,文件可能(并且可能会)分成许多段。

这是你想知道的吗?

答案 1 :(得分:2)

  

HTTP数据包的数量与网页中的对象数量之间的关系是什么?

简短的回答是显然存在某种关系,但是你无法准确地预测另一种关系。

要获得更长的答案,我们首先需要纠正问题中的一些误解:

  • 没有“HTTP数据包”这样的东西。 HTTP是面向消息的应用程序协议,其中每个“资源”获取一个请求消息和一个响应消息。它位于称为TCP的可靠字节流协议(带流量控制等)之上。这反过来又位于称为IP的分组交换协议之上。 HTTP请求/响应交换采用不可预测数量的IP数据包...取决于消息大小和网络条件。其他HTTP功能,如压缩,保持连接活动,缓存等,使事情变得更加复杂。

  • “对象”的概念定义不明确。 “对象”可以在HTTP请求/响应对(即上面的“资源”)之间具有一对一的对应关系,然后该部分是简单的。 OTOH,“资源”可以是网络服务器的应用程序域中的多个“对象”的呈现。

  • 最重要的是,您还要考虑到典型的HTML资源引用了其他资源(脚本,CSS,图像等),甚至可能涉及Ajax回调。这些中的每一个都是“资源”,可能需要也可能不需要获取......取决于缓存等。

  • 最后,隐含的假设是所有“对象”都是相同的大小。在某些应用程序域中可能会出现这种情况,但一般情况下并非如此。

总而言之,预测获取一定数量“对象”所需的网络数据包的数量是可行的,有很多变量和未知数。

更实际的方法是将数据包级网络分析器连接到您的网络,并使其计算发送和接收的数据包数量。


如果您做出以下假设:

  • “HTTP数据包”是HTTP消息,
  • “对象”是资源,
  • 资源不需要其他资源(脚本,CSS,图像等)来呈现,
  • 没有缓存,
  • 服务器没有进行重定向。

然后一个“对象”需要两个“HTTP数据包”。

但坦率地说,您已经将问题简化到了接下来无法用于预测真实Web服务器的实际性能的程度。 (例如,这些“对象”中的任何一个可能很小......或者很大。如果你允许任意的javascript,或者诸如视频流的链接之类的内容,那么这种或那种类型的“数据包”的数量是可能是无限的。)