TCP的传输速度

如何确定TCP最大传输速度?

TCP 的传输速度,受限于发送窗⼝,接收窗⼝以及⽹络设备传输能⼒。
其中,窗⼝⼤⼩由内核缓冲区⼤⼩决定。如果缓冲区与⽹络传输能⼒匹配,那么缓冲区的利⽤率就达到了最⼤化。

如何计算网络传输能力呢?

⽹络是有「带宽」限制的,带宽描述的是⽹络传输能⼒
它与内核缓冲区的计量单位不同 :
带宽是单位时间内的流 ,表达是「速度」,⽐如常⻅的带宽 100 MB/s
缓冲区单位是字节,当⽹络速度乘以时间才能得到字节数。
带宽时延积 BDP 决定⽹络中⻜⾏报⽂的⼤⼩。所谓【⻜⾏】,是指它们就在⽹络线路、路由器等⽹络设备上。
其中: RTT 为⽹络时延。
由于发送缓冲区⼤⼩决定了发送窗⼝的上限,⽽发送窗⼝⼜决定了「已发送未确认」的⻜⾏报⽂的上限。因此,发送缓冲区不能超过「带宽时延积」。
发送缓冲区与带宽时延积的关系如下:
如果发送缓冲区「超过」带宽时延积,超出的部分就没办法有效的⽹络传输,同时导致⽹络过载,容易丢包;
如果发送缓冲区「⼩于」带宽时延积,就不能很好的发挥出⽹络的传输效率。

怎样调整缓冲区大小?

发送缓冲区⼤⼩可⾃⾏调节,三个数值分别为:动态范围的最⼩值,初始默认值,动态范围的最⼤值
接收缓冲区范围调节
接收缓冲区可以根据系统空闲内存的⼤⼩来调节接收窗⼝:
如果系统的空闲内存很多,就可以⾃动把缓冲区增⼤⼀些,这样传给对⽅的接收窗⼝也会变⼤,因⽽提升发 送⽅发送的传输数据数。反之,如果系统的内存很紧张,就会减少缓冲区,这虽然会降低传输效率,可以保证更多的并发连接正常⼯作发送缓冲区的调节功能是⾃动开启的,⽽接收缓冲区则需要配置 tcp_moderate_rcvbuf 1 来开启调节功能
调节 TCP 内存范围
根据实际场景调节的策略
在Qt中计算TCP传输速度可以通过以下步骤实现: 1. 在发送端,在发送数据之前记录当前时间戳(例如使用`QDateTime::currentMSecsSinceEpoch()`函数获取毫秒级时间戳)。 2. 在接收端,接收到数据后再次记录当前时间戳。 3. 计算传输时间,即接收到数据的时间戳减去发送数据的时间戳。 4. 根据传输时间和数据大小计算传输速度,通过以下公式计算:速度 = 数据大小 / 传输时间。 需要注意的是,这种方法只能计算整个数据的传输速度,而不能实时计算实际传输速度。另外,由于网络环境和其他因素的影响,计算得到的速度可能会有一定的误差。 参考资料: 引用的内容 引用的内容 引用的内容<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [QT笔记文件传输(tcp)功能介绍,局域网速度极快](https://blog.csdn.net/qq_33593652/article/details/122943730)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Qt多线程TCP服务器客户端传输文件](https://blog.csdn.net/L_iostream/article/details/128531354)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值