Networking 网络传输100kb/s的实际比特传输速率是多少?
例如,当通过互联网传输1GB的数据时,这些数据被分成数据包,每个数据包包含一小段数据,这些数据包中的每一个都是一个帧的一部分 例如,Windows报告您正在通过TCP连接以100kb/s的速度传输文件,但这似乎是每秒传输的文件数据量,并且似乎不包括ip或TCP标头或以太网帧 以这种速度传输所需的网络实际流量是多少?或者,数据实际上已经包含在传输速度中,但只是足够小,不会产生显著差异 此外,IP支持高达1500字节/包(我想是吧?),但在reddit上加载高清图像时,数据包的一般大小是多少Networking 网络传输100kb/s的实际比特传输速率是多少?,networking,tcp,ip,Networking,Tcp,Ip,例如,当通过互联网传输1GB的数据时,这些数据被分成数据包,每个数据包包含一小段数据,这些数据包中的每一个都是一个帧的一部分 例如,Windows报告您正在通过TCP连接以100kb/s的速度传输文件,但这似乎是每秒传输的文件数据量,并且似乎不包括ip或TCP标头或以太网帧 以这种速度传输所需的网络实际流量是多少?或者,数据实际上已经包含在传输速度中,但只是足够小,不会产生显著差异 此外,IP支持高达1500字节/包(我想是吧?),但在reddit上加载高清图像时,数据包的一般大小是多少 很抱歉
很抱歉,我现在可能已经解决了一些基本的问题…Internet上典型的全尺寸TCP/IPv4数据包的大小为1500B(最大传输单元(MTU)),其中(最小)20B是TCP头,而(最小)20B是IPv4。选择此MTU是为了与以太网兼容。此外,此数据包中还包括应用程序头(例如,用于web的HTTP、用于语音呼叫的SIP/RTP/RTCP等)。IPv4的最小MTU为576B,IPv6的最小MTU为1280B。使用
ifconfig
命令可以在Linux上看到MTU
计算这些值的最佳方法是使用pcap工具/网络分析仪,如。关于协议的标题和字段,请参阅wiki页面或优秀的网络书籍。我很确定报告的传输速率不包括协议堆栈中不同层的所有标题和开销,由于报告的吞吐量通常来自某个用户空间应用程序,该应用程序只能从网络流对象获取实际数据。它需要做额外的工作,以了解不同层中发生的、影响实际物理传输的所有报头和帧以及其他开销。这取决于您查看传输速率的位置:
- 任务管理器将报告所有传输的字节(即所有数据包的总和,包括它们的头)
- 文件传输程序将报告传输的有效负载
- 可能存在从未到达或校验和错误的数据包,因此需要重新传输
- 在某些情况下,数据可以以较小的部分发送,从而导致更高的开销/有效负载比率(但使用小数据块可以解决这一问题)
- 某些软件可能正在将文件内容读入小缓冲区(比如4096字节)。然后,可以将它们拆分为2x1460和1x1176,从而引入一些额外的开销
很难说出或计算准确的传输字节/有效负载比率。这取决于internet连接的质量(丢失的数据包、重新传输)、用于传输数据的软件或API调用,甚至是底层网络(例如,小帧与巨型帧)。我无法回答这个问题,但确切的数字肯定取决于您的设置(windows TCP有几十个可设置的参数,默认值很糟糕),以及网络连接和质量(如果数据包丢失或损坏,它会重复,因此对于坏连接,大量重复会降低平均传输速率)谢谢你的回答!不过我更感兴趣的部分是这个。假设我们使用1500B数据包传输,包括标头,Windows Say的传输速度是100kb/s。100kb/s是网络上产生的实际流量,还是这只是数据传输速率?(即速度实际上至少是40B/数据包以上)简而言之,是的,100 kb/s是实际数据速率,不包括标头。详细信息:让我们从应用程序的角度来看它。如果应用程序有GB的数据要发送,它只会尝试尽可能多地推送字节。现在为了响应并向用户显示性能,它会触发一个定期计时器(每秒)并查看在这段时间内清除了多少字节。显然,它不关心作为