我很难区分延迟、带宽和吞吐量之间的明确界限。
有人能用简单易懂的例子来解释一下吗?
我很难区分延迟、带宽和吞吐量之间的明确界限。
有人能用简单易懂的例子来解释一下吗?
SYN
数据包时,它会等待SYN+ACK
响应,发送和接收之间的时间是延迟。它是一个变量的函数,即时间。以下是我能理解的内容:
当你去购买一根水管时,有两个完全独立的参数需要考虑:管道的直径和长度。直径决定了管道的吞吐量,而长度则决定了延迟时间,即水滴穿过管道所需的时间。需要注意的关键点是长度和直径是独立的,因此通信信道的延迟和吞吐量也是独立的。
更正式地说,吞吐量被定义为每秒进入或离开管道的水量,而延迟是从管道一端到另一端运输一个水滴所需的平均时间。
让我们做些数学计算:
为简单起见,假设我们的管道是一个4英寸x 4英寸的正方形,其长度为12英寸。现在假设每个水滴是一个0.1英寸x 0.1英寸x 0.1英寸的立方体。因此,在管道的一个横截面中,我将能够容纳1600个水滴。现在假设水滴以每秒1英寸的速度移动。
吞吐量:每组水滴将在0.1秒内移入管道。因此,每秒将移动10组,即每秒将有16000个水滴进入管道。请注意,这与管道的长度无关。
延迟:以1英寸/秒的速度,不考虑管道直径,需要12秒钟才能使水滴A从一端到达另一端。因此延迟时间为12秒。
延迟:事件经过的时间。
例如,从A点到B点步行需要一分钟,延迟为一分钟。
吞吐量:每单位时间内可以执行的事件数量。
例如,带宽是吞吐量的一种度量。
我们可以增加带宽以改善吞吐量,但这不会改善延迟。
以RPC为例——在分布式系统中,消息通信的延迟有两个组成部分,第一个组成部分是硬件开销,第二个组成部分是软件开销。
硬件开销取决于网络如何与计算机接口,这主要由网络控制器管理。
我写了一篇博客 :) https://medium.com/@nbosco/latency-vs-throughput-d7a4459b5cdb
带宽是数据每秒的度量,等于这些数据的时间速度乘以空间复用通道的数量,因此在水管类比中,它是流速*直径。在数字信号处理中,数据的时间速度受到信道频带和信噪比的限制。
延迟是信道的物理长度(以其能够容纳的位数为单位)除以带宽。当发射机和接收机在空间上相距越远时,延迟会增加,但带宽不会改变,因为发射机层1仍然可以以相同的速度发送。当存在间歇节点或缓冲、处理或延迟数据的接收节点时,延迟也会增加,但带宽仍然相同-可能需要一段时间才能下载的第一个数据包,但当它们到达时,希望它们能以完整的带宽传输。当然,这假设发射机协议栈不需要等待来自接收器的控制数据包,例如TCP ACK或层2 ACK。