统计 HTTP 数据包

Sun*_*irl 1 http packet

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

Ste*_*n C 5

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

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

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

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

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

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

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

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

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


如果您做出以下假设:

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

那么一个“对象”需要两个“HTTP 数据包”。

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