什么决定了网络上可以发生的并行度?

网络工程 带宽 术语
2021-07-10 00:32:06

我正在尝试更多地了解网络(LAN 和 Internet)如何处理流量,其中一部分是并行性问题。

在 Speedtest.net 的文档中,在描述测试的工作原理时,它提到可以使用“最多 4 个线程”,但没有描述这些线程的实际组成。

我的问题是,是什么决定了网络中可以发生的并行度?我知道一旦信号到达目标服务器,一切都取决于该服务器的资源和接收程序。但是并行性是如何在网络中工作的呢?

例如,网络接口卡是否接受请求并将其拆分以便更快地通过电缆传输?或者它只是将所有东西打包成更大的块,然后让路由器/交换机来做?

具体来说,我试图从业务 > 业务网络的角度来理解这一点,所以我不担心本地电缆调制解调器或本地 DSL 适配器之类的东西。

2个回答

什么决定了网络中可以发生的并行度?

让我们基线一些东西...

Speedtest.net 在 web 浏览器和它们的带宽服务器之间用 javascript 设置了 4 个并行 TCP 套接字。Speedtest.net 通过这些套接字传输批量数据,然后对结果进行计时以获得吞吐量测量值。

4 并行 TCP 流有助于克服速度测试之间路径中的延迟和数据包丢失...并行 TCP 流在克服这些挑战方面比单个 TCP 套接字要好得多...有关如何执行的示例,请参阅此超级用户答案这来自 linux 命令行。

流在相同主机或不同主机之间是并行的并不重要,以太网可以处理数千个同时并行流......它甚至不知道存在超出它们消耗的带宽的并行套接字的确切数量。

我假设您主要谈论的是 10/100/1000 以太网。要理解的关键是,就以太网而言,一次只能发送一个帧(如果它在全双工下运行,则发送一个帧,接收一个帧)。在任何给定时间离开 NIC 的帧超过一帧的意义上不存在“并行性”。这就是缓冲区和排队的讨论开始发挥作用的地方,我不会在这里讨论。

使用网卡的系统能够维持许多不同的流量流,目的地是许多不同的位置(或全部到达同一位置)。但是,它们不会同时离开 NIC。

我建议阅读维基百科关于以太网的文章或查看 O'Reilly 的书以太网:权威指南以获取更多信息。两者都将您链接到许多相关来源。


正如 ytti 在上面的评论中指出的那样,根据我们正在讨论的数据链路/网络技术,这也可能会有很大差异。