“延迟”和“往返时间”有什么区别?

网络工程 潜伏
2021-07-07 14:32:24

Golang 社区提供了一个HTTP/2 演示网站来比较 HTTP 1.1 和 HTTP/2 之间的性能。

我们可以选择不同的latency,例如 0s 延迟、30 ms 延迟、200 ms 延迟。

  1. latency计算机科学的术语吗?
  2. 这意味着什么?
  3. 什么之间的区别latencyRound Trip Time

在此处输入图片说明

4个回答

网络延迟是指从源主机发送的内容到达目标主机所需的时间。延迟有很多组成部分,延迟实际上可以是不同的 A 到 B 和 B 到 A。

往返时间是将请求从源发送到目标以及响应返回到原始源所需的时间。基本上,每个方向的延迟加上处理时间。

“延迟”可能意味着不同的东西。通常,这是某种延迟 - 应用程序延迟是应用程序的反应时间(从输入到输出),网络延迟是从 A 点到 B 点获取数据包的延迟等等。

“往返时间”或多或少被很好地定义为从 A 点到 B 点再返回的网络延迟。这是两个方向上所有编码、排队、处理、解码和传播延迟的总和。从本质上讲,这是当 A 可能期望 B 对需要很少处理的请求作出答复时的延迟。

通常,将往返时间与A 和 B 之间ping 时间进行比较。 ping 时间可能为有效 RTT 提供一个很好的值,但也可能是其他原因,因为使用的 ICMP 数据包之间可能存在路由和处理差异通过 ping 和实际使用的协议数据包。

在您的情况下,“延迟”是指 HTTP 服务器中的人为延迟,它会在已经存在的延迟之上添加。因此,如果您对服务器的有效往返时间为 50 毫秒并选择“200 毫秒延迟”,您可以期望在 250 毫秒内回复请求(加上服务器上的处理开销)。

往返时间 (RTT) 是数据包从发送端点到接收端点并返回所需的时间。影响RTT的因素很多,包括传播延迟、处理延迟、排队延迟和编码延迟。对于给定的一对通信端点,这些因素通常是恒定的。此外,网络拥塞可以为 RTT 添加一个动态组件。

RTT 和 ping 一样吗?

往返时间和 ping 时间通常被认为是同义词。虽然 ping 时间可以提供良好的 RTT 估计,但不同之处在于大多数 ping 测试是在使用 ICMP 数据包的传输协议内执行的。相比之下,RTT 是在应用层测量的,包括由更高级别的协议和应用程序(例如 HTTPS)产生的额外处理延迟。

RTT和网络延迟怎么样?

网络延迟密切相关,但与 RTT 不同。延迟是数据包从发送端点到接收端点所需的时间。许多因素可能会影响服务的延迟。延迟并不明确等于 RTT 的一半,因为延迟在任何两个给定端点之间可能是不对称的。RTT 包括在回声端点的处理延迟。

查看RTT上的这篇博文了解更多信息。

要为其他答案添加一点背景知识,必须记住网络延迟可能会有很大差异,并且会影响用户体验。

网络延迟最明显的来源之一是距离:携带数据的信号或多或少以光速传输,因此从客户端到服务器传输的距离越长,延迟就越高。通过以太网电缆连接的两台计算机之间的通信需要几毫秒。跨洋与服务器的通信将花费数十或数百毫秒。通过地球同步卫星的通信将花费数百毫秒。

这在执行 ping 时清晰可见,它测量往返时间,在这种情况下,它非常接近两个方向的延迟总和。

其他一些影响延迟的事情:

  • 链路/跳数:在大多数情况下,一个数据包需要被完全接收才能在下一个链路上发送。这会在每一跳上增加一点延迟;
  • 这些链路的吞吐量:链路越慢,整个数据包通过所需的时间就越长,从而在下一个链路上转发;
  • 这些链接的负载:如果链接已满,则数据包可能必须排队等待才能发送;
  • 对于具有本地重传的链路,链路上的错误率:错误率越高,数据包需要重发的机会就越大。

延迟会对用户体验产生很大影响(或不会):

  • 最著名的案例是影响 MMORPG 和其他在线游戏玩家的延迟。
  • 任何在另一侧控制交互的交互都会受到延迟的影响。Telnet/ssh、远程桌面,都受到延迟的影响。
  • 语音通信受到延迟的影响,如果延迟太高,人们就会一直互相打断。
  • 较旧的文件传输协议也受到延迟的影响,因为它们没有实现滑动窗口,并且发送方必须等待数据包到达目的地,并在发送下一个之前等待确认返回。

即使在非交互式情况下,延迟也会产生影响(这在 OP 的示例中进行了说明):当有大量小文件要下载时,如果协议必须等待一个文件,则延迟会导致总加载时间更长与允许一次发送多个请求的协议相比,在开始下载下一个之前完全下载,并且在连续文件之间没有中断地发送响应。