这学期我参加了网络入门课程,我想知道:使用 TCP 在第 4 层级别查看事物,网络上的吞吐量是否可以超过其带宽?根据定义,我认为吞吐量被定义为链路上数据包的百分比,无论它们是否无法到达另一端。
如果这是真正的定义,并且理论上网络可以在其带宽的 100% 下运行,那么该链接上发送者的所有窗口大小现在不会也变得更大并完全超过整个链接的带宽吗?
换句话说,吞吐量会暂时超过 100%,这肯定会导致丢包,我这样想是否正确?
这学期我参加了网络入门课程,我想知道:使用 TCP 在第 4 层级别查看事物,网络上的吞吐量是否可以超过其带宽?根据定义,我认为吞吐量被定义为链路上数据包的百分比,无论它们是否无法到达另一端。
如果这是真正的定义,并且理论上网络可以在其带宽的 100% 下运行,那么该链接上发送者的所有窗口大小现在不会也变得更大并完全超过整个链接的带宽吗?
换句话说,吞吐量会暂时超过 100%,这肯定会导致丢包,我这样想是否正确?
带宽是一秒钟内可以在链路上发送的比特数。吞吐量是数据量被发送,这将需要从带宽减去协议开销,所以没有,吞吐量不能超过的带宽。如果您压缩数据,看起来可能是这样,但那是一种错觉。
TCP 还实现了一个接收窗口,该窗口在 ACK 中为每个接收到的数据包发送,因此如果您尝试使另一端的主机过载,它将在 TCP 接收缓冲区填满时将接收窗口设置为较小的值,直到最终设置为 0 以告诉发送方退出,直到它有时间处理传入的数据包并将它们交给网络堆栈的上层。所以这限制了发送能力。此外,如果网络交换机由于过度拥塞而丢弃帧,这将导致 TCP 停止一切,要求快速重传丢失的数据包(因为数据包将开始无序到达),然后继续处理的其他数据包。TCP 不关心最大速度或吞吐量,它关心让每一帧按顺序通过并且没有错误。
网络设备上的吞吐量可以并且实际上强烈建议这样做。
假设我们有一个带有 24 个千兆端口的工业交换机。它在任何端口上的带宽总是千兆位,但它可以维持的总吞吐量可以是 10 千兆位或更多。该值越接近端口的总组合速度,交换机在高流量负载下的性能越好。示例:一个 52 端口的 XGS2210 交换机可以维持 176 Gpbs 的吞吐量,这超过了以太网端口的 48Gbps + 光端口的 40Gbps。这意味着即使所有端口上都存在全流量,它也永远不会过载。
一个糟糕的实施示例是一些家用路由器确实为 LAN 和 WAN 提供千兆端口,但它们的吞吐量被限制在 500Mbps 或更低。
是的,有点。ISP 经常“过度销售”其线路的容量,因此用户可用的总吞吐量大于其线路的容量。他们这样做是因为通常用户使用的数据明显少于理论上允许使用的数据 - 所有用户同时使用其最大分配容量的情况很少见。例如,如果他们有一条吞吐量为 1 GB/s 的生产线,他们可能会向客户出售 50 100 MB/s 的计划。