Tcp 计算网络吞吐量

Tcp 计算网络吞吐量,tcp,ip,ethernet,throughput,Tcp,Ip,Ethernet,Throughput,假设我有一个4MBits的网络,我想计算数据吞吐量,这是考虑最大传输速率减去以太网/IP/TCP报头的开销。 在网上阅读时,我发现TCP段的MSS(最大段大小)是576-20-20,最后两个是TCP和IP头开销,导致93%的数据,这意味着我将只使用93%的4MBits链接来传输数据。现在链接在哪里?不也应该加上吗?如果我没有弄错,以太网报头大约是46字节,因此最终的总和将是576-20-20-46=490,从而导致85%的数据吞吐量,但我做错了什么吗?请自下而上工作。常规以太网帧(无巨型帧,无v

假设我有一个4MBits的网络,我想计算数据吞吐量,这是考虑最大传输速率减去以太网/IP/TCP报头的开销。
在网上阅读时,我发现TCP段的MSS(最大段大小)是576-20-20,最后两个是TCP和IP头开销,导致93%的数据,这意味着我将只使用93%的4MBits链接来传输数据。现在链接在哪里?不也应该加上吗?如果我没有弄错,以太网报头大约是46字节,因此最终的总和将是576-20-20-46=490,从而导致85%的数据吞吐量,但我做错了什么吗?

请自下而上工作。常规以太网帧(无巨型帧,无vlan标记)总共为
1542字节
,有效负载为
1500字节
。没有选项的Ipv4头是
20字节
,没有选项的TCP头也是
20字节
。因此,您最终得到的是
1460字节
链接层帧的
1542字节的可能有效负载。因此,您的效率是
1460/1542=0.9468223086900129
,最大吞吐量为
3.787289234760517Mbps

请注意,这通常较低。这是在TCP会话建立后,当您是该链路的唯一用户时,在全双工链路上可以获得的连续流的理论最大速率。还要注意的是,当您以稍高的速率发送一段时间后,您的链接将变得拥挤,您将看到下降,并且由于启动缓慢,您的实际TCP吞吐量可能会显著下降


如果链路是无线的(802.11),由于RTS/CTS机制,计算会变得复杂得多,但是对于一个活动用户来说,这是关于
/2
,并且不包含丢失,这是不现实的。

一般来说,协议会影响网络吞吐量,而不仅仅是数据包开销。您提到要在以太网/IP/TCP网络上测量吞吐量,但这些协议的数据包开销的影响不是唯一要考虑的问题。TCP是一种面向连接的协议,它使用ACK来表示是否接收到数据包。user1777914错过了ACK的标记,但发现了一些问题——它们不会占用更多的空间,但可以延迟数据包的传输。随着延迟的增加,总体网络吞吐量可能会根据应用程序或宿主操作系统期望响应的频率而降低

理查德·史蒂文斯写了一本关于TCP/IP的书。是一个例外,它解释了理论上的TCP性能、什么影响它以及如何计算它


Nagle算法也有助于延迟,但如果禁用,则会降低吞吐量。

这是最小的MSS。通常它会是1460。仍然没有回答这个问题,如果使用TCP,它是否应该计算链路层头来计算链路的最大数据吞吐量?我并没有试图回答您的问题本身。我只回答了问题,但是我做错了什么。我们还应该考虑来自TCP的ACK数据包是否占用了链路的一部分?即使他们没有有效负载,他们仍然有报头,这会进一步降低吞吐量,对吗?不,如果您连续流式传输并延迟ACK(应为默认值),ACK将包含在常规数据包的报头中。