如何获取 HTTP 请求和响应的大小(包括协议开销)?

如何获取 HTTP 请求和响应的大小(包括协议开销)?

我正在开展一个与 IoT 相关的研究项目,涉及多台设备。但是,负责基础设施的项目合作伙伴将每台设备的流量限制为每月最多 500 MB。

为了满足这一限制,我尝试使用非常基本的计算来估算请求和响应的大小。可以找到一些开销估算在 Stackoverflow 上的这个答案中在进行任何间接费用估算之前,答案是:

您对 HTTP 下面的层一无所知。您甚至不能假设 HTTP 请求将通过 TCP/IP 传递。即使是这样,您也对网络层增加的开销一无所知。或者路由的可靠性如何以及丢弃/重新发送数据包将产生哪些开销。

为了获得一些可靠的数字,我考虑在开发设置中进行一些测量,因为我同时在远程设备和服务器上工作。

有没有办法测量完整的响应和请求大小,包括有效负载和任何协议开销?如何确定网络基础设施上的完整数据吞吐量?

答案1

对于 Linux 和其他类 Unix 操作系统,您可以使用伊夫托普实用程序。例如:监控我的路由器 Web 界面:sudo iftop -f 'port 80 and host 172.19.76.1' -iwlan0

  • -f--过滤器:port 80--监控目标主机的80端口and host 172.19.76.1--目标主机的主机名或地址。
  • -iwlan0-- [i]接口 wlan0

iftop 截图

答案2

我知道这个问题很久以前就被问过了。

理论上获取 HTTP 请求和响应的大小(包括协议开销):

数据大小和协议开销

当协议发送应用数据时,数据会被封装成协议数据单元(PDU),一个PDU包括应用数据(Payload)和报头(Header)。

数据包大小 = 应用程序数据 + 报头大小

应用程序产生的总数据=完成一次完整数据传输所使用的所有数据包的总大小。

数据大小和协议开销示例

但实际上我还不知道如何找到尺寸。

相关内容