互联网连接速度快于存储写入速度时会发生什么?


28

如果有人试图以800 Mb / s(100 MB / s)的速度将文件下载到硬盘上,写入速度为500 Mb / s(62.5 MB / s),会发生什么?系统会限制下载速度吗?


5
自从建立网络以来,这种情况一直存在,而在快速网络中(例如在繁忙时间以外的大学中),这是一种完全常见的情况。
彼得-恢复莫妮卡的

4
由于可以编程,因此您可以轻松地自己观察。编写一个简单的TCP服务器和客户端(您应该能够找到所选语言的套接字库的示例),让该服务尽可能快地传递数据,并修改客户端以仅以指定的速度读取该数据(两次读取之间睡眠)。检查数据是否完整接收。您甚至可以观察通过wirehark或类似工具发送的数据包。
卡斯顿1998年

3
拥有@ PeterA.Schneider的帖子中所述的经验,我可以告诉您,您必须考虑操作系统的RAM缓冲区。在填充它们之前,您可以有效地以RAM的速度存储下载的数据。(通常以每秒数千兆的速度。)
没人

@Nobody当然,总有一些荒谬的管道构成了互联网主干网,它们传输数据的速度如此之快,以至于您的典型计算机的RAM甚至无法跟上!
Cort Ammon-恢复莫妮卡

您的计算机将拒绝ICMP请求,以使其减速。但是,以这些微不足道的速度,您可能还可以获得SSD或M.2 ssd,而现在您的写入速度是如此之高,那么100mb / s将会很容易。某些M.2的写入速度为1500MB / s。在RAID中放置2个或更多磁盘,可以多次倍增速度。普通SSD可以达到300-450MB / s,具体取决于容量和品牌。storagereview.com/samsung_960_pro_m2_nvme_ssd_review
cybernard

Answers:


41

许多协议,包括TCP(是Internet上使用最广泛的协议),都使用一种称为流控制的协议。流控制只是意味着TCP将通过发送数据包快于其清空缓冲区的速度来确保发送方不会压倒接收方。这个想法是,接收数据的节点将向发送数据的节点发送某种反馈,以使其了解其当前状况。因此,双向反馈使两台机器都能最佳地利用其资源,并防止由于硬件不匹配而引起的任何问题。

https://zh.wikipedia.org/wiki/Flow_control_(数据)


2
...理想上。 Bufferbloat意味着可能有几个交换机将存储并等待转发不断增长的数据包堆(这可能会因需要偶尔进行ACK的传输协议而有所缓解)。
艾瑞克塔楼

3
您可能会提到,这将TCP(嘿,它具有名称控制权)与UDP区别开来,无论用户使用多少容量,UDP都会很高兴地继续发送。
彼得-恢复莫妮卡的时间

5
@Fabian这总是发生。操作系统的硬盘缓存使数据被“发送”到HDD的速度远远超过了写入速度,从而填充了RAM中的缓存并尽快写入磁盘。因此,根据计算机中(未使用的)RAM的数量,操作系统可能会在到达磁盘之前在RAM中缓冲数十至数百MB的文件。但是,缓存大小是一个折衷方案,因为应用程序可能认为在磁盘上已经永久保存的数据可能在一定时间内没有保存,这可能在(电源)故障或类似情况下导致意外的数据丢失。
JimmyB

2
@Fabian:您可以在Windows的文件复制对话框中(从8.1开始)看到此内容。在扩展模式下,它显示了传输速率,您可以观察到,前半秒非常快,如果文件大于此期间可能传输的文件,则速度会大大降低,恒定的速度。一开始的高速是由于缓存。填充后,速度会降低。
vsz

1
@EricTowers不,仅当网络连接成为瓶颈时才会发生缓冲膨胀。(您可能会在硬盘驱动器上看到某种形式的缓冲膨胀,这会减慢其他硬盘驱动器的运行,但不会影响其他网络连接)
user253751 '17

12

会发生什么?

  • 无法及时写入HDD的字节将在某处临时缓冲;其中很可能将某些缓冲存储在将网络流量“转换”为HDD流量的应用程序(即您的浏览器)中,而在较长的拥塞情况下,堆栈的较低层部分(即您的网络子系统) PC)也将在较低级别上具有缓冲区,缓冲区将填满直到满。
  • 数据进入速度过快的信息将以某种方式传播回发送方。对于TCP / IP,这意味着TCP协议中有一部分告诉发送者它应该停止发送。TCP / IP上的Wikipedia页在显示以下内容时表示最佳:

    它的[TCP]职责包括独立于底层网络的端到端消息传输,以及错误控制,分段,流控制,拥塞控制和...

  • 最终,“系统”(不一定是接收方的计算机,而是由发送方,网络和接收方组成的整个系统)将间接“限制”下载速度。但是,绝对不会存在“速度”变量。网络流量和HDD流量都是基于块的,也就是说,这些块之间的延迟将足够长(在较快的网络侧),直到网络“速度”(吞吐量)平均等于您的较慢速度为止。硬盘

系统会限制下载速度吗?

不是字面上的。几十年前,计算机确实以同步速度进行通信(即具有固定速度设置的调制解调器)。今天,在某种程度上也是如此。也就是说,您的DSL或电缆调制解调器可能会以某种设定的速度与其直接的物理上行链路组件进行通信。但是在2017年,所有这些都非常复杂,几乎所有组件都是动态的。在过去的好日子里,调制解调器在物理上通常只能说出一定的速度,甚至必须在拨入电话之前就建立速度。有些网络协议(例如ATM)试图获得同步的广域网,但与TCP / IP相比,结果却不太理想。

如今,通常总是通过缓冲,流量控制等隐式地达到有效速度。

还要注意,在您的示例中甚至可以有更多的参与者。网络接口可能还有更多工作要做(与PC的其他连接)。沿途网络的某些部分可能很忙(一个家庭成员正在冲浪或观看视频)。HDD可能同时执行3个大文件写入。因此,专门设置可以设置的“速度”是没有意义的。


2

文件下载(通常)通过称为TCP的协议进行。在TCP中,发送者在接收者准备好接收数据之前不会发送任何数据。

将会发生的事情是,您的计算机将保留一定数量的RAM,以便在将接收到的数据写入硬盘驱动器(称为缓冲区)之前暂时保留这些数据。然后它将要求发送方足够的数据来填充缓冲区。当它接收数据时,它将开始将数据从缓冲区写入硬盘驱动器-但是,当缓冲区快满时,它不会要求更多数据。

总体效果是,发送方只是在继续接收之前等待接收方赶上。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.