POST 持续时间超过 https 与 ping 时间?

网络工程 通讯协议 潜伏
2021-07-18 20:31:22

我正在尝试对网络延迟/往返时间 (RTT) T(以 ping 时间为特征将如何影响通过 https 连接(假设已建立,跨请求重用)的连续顺序 POST 请求的持续时间进行一阶评估,并使用 TLS v1.1 或更高版本)。我假设 T很大(想想 200 毫秒),我主要是问T是否以 1 的乘法因子或更高的整数影响 POST 持续时间。

客户端在发送下一个请求之前等待服务器的答复。请求和回答都很小,我们首先可以假设即使有加密/MAC 开销也没有达到 MTU。我愿意忽略客户端和服务器的处理延迟、数据包丢失和路由延迟的变化。

我的理由是,对于大T对于一些小的正整数N,平均 POST 时间约为N * T并希望N = 1这是肯定的(在上述假设下)吗?

请求和响应大小如何增加?什么参数很重要,比如 TLS 或 TCP/IP.. 选项?

2个回答

N始终大于 1。无法准确判断比 1 多多少,但这里有一些因素会导致 Post 请求和 HTTP 响应之间的时间增加:

与单个 Echo Request 和单个 Echo Reply 相比,我将从单个 Post 和单个 HTTP 响应的角度来执行此操作。1 个 ICMP 交换和 HTTP 交换与 3 个 ICMP/HTTP 交换之间的时间增加将是线性的。每个交易所都会受到以下每个因素的影响。

1. HTTP Post/Response 中发送/接收的数据包较多

ping“序列”是这样的:

01 Client --> Server ICMP Request
02 Client <-- Server ICMP Response.

HTTP Post/Response 序列如下所示:

01 Client --> Server HTTP Post
02 Client <-- Server TCP ACK
03 Client <-- Server HTTP Response

在发送 HTTP 响应(数据包 #3)之前,服务器不需要等待 ACK(数据包 #2)到达客户端。这两个数据包都直接一个接一个地发送。但无论哪种方式,它仍然是必须发送的第二个数据包,因此增加了您的价值N

2. 额外的加密处理会导致额外的开销

即使不需要发送 TCP Ack(上面的数据包 #2),使用 HTTPS 保护数据包的简单事实将要求双方验证数据包并解密内容,然后再将其传递给 HTTP口译员。

这是 ICMP 数据包不需要的东西。因此,N为 HTTP 请求/响应增加了额外的时间

3. HTTP 数据包可能需要临时设备进行额外检查。

如果此通信通过防火墙发生,则防火墙(或某种 WAF/IPS)很可能正在对 HTTP 数据包执行额外的处理/检查/验证。特别是,因为这是一个 Post 请求。

如果是 HTTPS,则这种情况不太可能发生。但是许多瞬态防火墙现在可以解密 HTTPS,检查底层的 HTTP,然后在发送之前重新加密 HTTPS。同样,可能性较小,但我们不能尽职尽责地完全排除。

对于简单的 ICMP 数据包,这种检查不是必需的。不仅仅是因为数据包本身很可能更小。更简单的 ICMP 协议可能存在的恶意意图更少,因为更多的“注意力”被放在对 HTTP/HTTPS 的更深入检查上。

4. HTTP Post 需要服务器进行更多处理

响应 ICMP 响应是(相对)容易的。充其量,ICMP echo Payload 中有一点数据要复制到ICMP Response。根据 HTTP Post 的内容,还有更多需要考虑的内容。

是否有数据输入验证?发布的内容是否需要处理并以某种方式包含在 HTTP 响应中?它是否必须“按原样”处理,或者在生成有用的 HTTP 响应之前是否需要进行一些分析?

对于 Post 中呈现的分析和/或数据类型,确实存在无限的可能性。而这种额外的处理也会增加你的N价值。


我敢肯定还有其他的,但这些是我目前能想到的。

编辑:添加#4

您无法比较仅达到第 3 层的数据包(如 ICMP)与必须承受一直到第 7 层处理的数据报(如 HTTP)之间的时间。

差异将取决于每一端的主机。主机处理将增加大量不可预测的开销。您无法了解主机的功能、主机正在使用的应用程序以及主机负载。

这种比较是无效的,因为它会根据与网络完全无关的端点本身而有很大差异。

编辑:

当然,网络延迟起着一定的作用,延迟的变化会影响总时间,但是您从 PING 获得的信息并不能真正用于计算。HTTP/HTTPS 的 TCP 特性会改变窗口中可以传输的数据量。TCP 及其可靠性算法将使延迟成倍增加,但它不是常数倍,在传输过程中会发生变化。

高于第 3 层的层的性质将以您无法完全预测的方式成倍增加延迟,但如果每次传输的数据大小相同,您可能能够在一段时间内对它们进行平均。