我有一个 1Gbit/s 的 LAN。我已将一个支持 10 Mbit/s 的多速交换机连接到该 LAN。多速交换集线器的另一侧是一个只有 10 Mbit/s 的以太网设备。
多速集线器在一侧将数据包接收到内部缓冲区中,并在接收完成且数据包有效后在另一侧发送数据包。
我观察到 TCP 连接在两个方向上均能正常工作,不会出现数据包丢失和 TCP 重新传输。此类 TCP 流量在收到第一个段的 ACK 之前会发送一堆带有 TCP 段的数据包。
如果多速集线器以 1 GBit/s 的速度接收数据包,而只能以 1% 的速度发送数据包,那么为什么它不会丢失数据包?我不认为它可以具有永恒的缓冲容量。
编辑:为了让问题更清楚... 发送带有 TCP 段的 IP 数据包的节点连续发送最多 20 个数据包,而无需等待低速侧节点的任何 TCP-ACK 数据包。这是由 TCP 窗口大小允许的。如果 10 MBit/s 链接无法传输数据,那么数据(临时)存储在哪里?
答案1
重要的是要区分中心,以及转变。
集线器
- 哑设备,有时称为位喷射器或中继器。一个端口里有什么在每个其他端口上重复。
从内部来看,这些设备是总线拓扑,这意味着它将使用带冲突检测的载波侦听多路访问 (CSMA/CD)。
连接到集线器端口的每个设备都处于共享的冲突域,一次只能有一台设备发送或接收。如果任何设备确实发生冲突(两台设备同时尝试 TX),则两台设备都会等待随机“退避”计时器重新传输。这也称为“半双工”通信。
- 传统上,这些设备位于OSI 模型(第 1 层)
开关
- “智能设备”当在入口端口接收到数据包时,交换机(也适用于网桥)会查看MAC 表或 CAM 表并确定目标设备连接到哪个出口端口。如果设备未知,或已从 MAC 表中过期,则交换机将泛洪所有端口(入口端口除外)以了解设备 mac 地址并将其添加到表中。
- 参照 CSMA\CD,每个交换机端口都有自己的冲突域。
- 现代交换机具有用于每个端口入口/出口的缓冲区(内部存储器)。(但消费级设备可能并非如此,因为消费级设备可能具有在端口之间共享的入口/出口内部缓冲区。)全部交换机端口。
- 传统上居住在第 2 层OSI 模型,但更现代的交换机超越了这一差距,可以在第 3 层执行功能。
您可能想知道所有这些如何适用于这个问题。如果不知道交换机型号和 10Mbps 设备 NIC 品牌/型号,几乎不可能给出明确的答案。(如果制造商甚至在文档中提到缓冲区,情况也是如此。)
有根据的猜测是这样的。
如果将一个 10Mbps 设备连接到交换机端口,则不存在带宽争用。
10/100/1000Mbps 交换机具有内部缓冲区,可以接收使用 1Gbps 的设备发送的数据,并使用内部缓冲区将其传送到 10Mbps 设备,并且无需丢弃数据包。
我可能忽略了两者之间的一些区别,我已经有一段时间没有了解它们之间的区别了。
~谨致问候
这个问题networkengineering.SE 也可能有帮助。
答案2
传输速度与连接速度无关。可以
这样想:你的车时速为 150 英里,但这并不意味着它总是速度那么快。数据不是以 1 Gb/s 发送的。交换机可能以千兆位速度连接,但这并不意味着它必须以这种速度发送数据。无论什么设备向慢速 10 Mb/s 设备发送数据,等待等待慢速设备的确认以发送更多数据。