我很难找到有关此的信息。
我想知道数据是如何共享/划分的。例如,如果我支付 1GB 的下载/上传互联网速度,并且有 10 台设备请求下载游戏等非常大的文件。每台设备是否分配了一定的最大速度,或者它是如何工作的?
另一个例子是,如果我有一个安全摄像头不停地上传视频,并且有人正在向观众播放视频。
任何信息,将不胜感激
答案1
例如,如果我支付 1Gb 的下载/上传网速,并且有 10 台设备请求下载游戏等非常大的文件。是否为每台设备分配了一定的最大速度,或者它如何工作
在这种情况下,它根本不是针对每个设备的,而是(主要)针对每个连接的。
网络是基于数据包的。如果数据包到达路由器的速度比通过出站链路发送的速度快(例如,如果来自 Web 服务器的数据包到达 ISP 路由器的速度比通过 WAN 连接发送的速度快),那么其中一些数据包最终将被延迟(在路由器排队)并可能被丢弃。
大多数传输(除实时视频流外)都是使用 TCP 完成的,TCP 具有内置拥塞控制功能。发送方不会无限制地持续传输数据包 - 发送一定数量的数据包后,如果接收方未“确认”这些数据包,则发送方会暂停并等待接收方确认。(如果您在 Wireshark 中查看数据包捕获,您会看到每次上传或下载都伴随着连续的 ACK 流;这就是为什么您需要一定的上传速度才能下载任何东西。)
因此,当数据包丢失且未得到确认时,发送方的拥塞控制算法将导致其速度变慢。因此,每个 TCP 连接都会自我调整,直到它消耗几乎可用带宽(不会超出并导致数据包丢失),拥塞控制算法的设计非常“公平”,因此并发连接最终大致平衡。它对来自同一设备的多个连接的工作方式与对多个设备的工作方式相同。
[注:这是一个很粗糙的解释,因为坦白地说,我也不明白其中的一半。
另一个例子是,如果我有一个安全摄像头不停地上传视频,并且有人正在向观众播放视频。
实时视频流 (RTMP/RTSP/VoIP) 与文件下载略有不同。下载文件时,通常所有数据都已存储并预先可用,因此发送方可以以存储允许的速度运行(即通常速度足够快,足以饱和千兆位连接,即使从 HDD 发送),而实时视频流以大致固定的速率(音频和视频编解码器中配置的比特率)产生数据,并且即使可用,通常也不会使用更多。
因此,如果您通过 RTSP 观看安全摄像头流,并通过 RTMP 将您的流发送到中央服务器(例如,将 OBS 发送到 YouTube),那么您的流和安全摄像头的流都仅消耗几 Mbps - 它们由编解码器调节 - 而其余 1 Gbps 仍然可用。
(不过请注意观看YouTube 上的直播介于这两种模式之间,因为它不使用 RTSP,而是通过快速连续地下载单个视频块来运行,因此平均的带宽随时间的变化仍然大致相同,它用于短暂突发,而不是连续流。当然,VOD 不再是“实时”的,因此它更加突发,播放器每次都会预先缓冲大量数据。)
答案2
每个设备是否分配了一定的最大速度?...
不,没有分配或划分“速度”。
而是使用时间复用共享传输介质。信息/数据始终以固定速度以数据包/帧为单位传输。每次每个方向只传输一个数据包。使用介质的可用时间通过简单地传输数据包来划分。根据数据包/帧长度和固定传输速率,每个数据包/帧的传输将在线(或 WiFi 通道)上消耗有限的时间。
双工模式将决定是否允许同时发送和接收。
传输介质通过时间复用进行共享。尽管传输是通过以固定传输速度发送的数据包进行的,但当您计算单个传输的“传输速度”时,您实际上是在计算平均数据速率随时间的变化。最终可能会出现“ISP 网速“以某种方式在用户之间共享。这只是一个数字错觉,因为你忽略了“传输速度”是一个平均数的事实。