TCP客户端的最大发送速度是否完全由客户端计算机的上载速度限制

Cas*_*roy 6 c# performance networking tcp

背景

我正在尝试将远程计算机桌面的实时源流式传输到我的应用程序.为此,我使用面向连接的(TCP)套接字,捕获客户端计算机的帧并将其发送到服务器.

我的研究

我每隔100毫秒(即10 FPS)发送一个帧(屏幕截图).每帧大约145kb,这意味着我需要每秒发送1450kb(相当于1.4兆字节,每秒11兆位).

我的互联网最高下载速度为每秒0.32兆位.因为我需要每秒发送11兆位数据,这意味着我的互联网速度比我需要的慢10.6兆.因此,通过我的计算,为了有效地流式传输桌面,我需要每帧大约4.5kb(4608b + 20b TCP头),这在现实系统中是现实的,不可能,即使只发送桌面的更新部分和压缩位图.

我不确定系统是否完全受上传速度的限制.我认为这是因为4.5kb是一个非常小的尺寸.我可以使用类似的软件(Teamviewer,Join.me和Skype等软件)顺利地流式传输我的桌面,即使这些软件包使用的智能协议远远超过我(这里的好问题)我非常怀疑它们只发送了4.5kb每个帧/桌面更新.

所以我的问题最终是; 我的计算是否准确,为什么?我的目标是确定每个帧的适当大小,以便我可以努力达到该大小并计算不同速度连接的质量/间隔.我对任何对我的情况有帮助的评论/答案感兴趣,但我接受的答案将是回答我实际问题的答案.

Bul*_*lki 1

首先不要混淆位和字节,因为您的计算有点令人困惑。

其次,您只查看要发送的对象的大小,而忘记了数据包本身,它会增加一点大小,并且不要忘记您将承受的 TCP 延迟。如果您的网络对发送流量如此敏感,我建议对其进行升级,或使用更好的压缩。

总而言之,我总是说:网络支持的带宽等于所需路径上带宽最小的部分。

ex: 10M => 100K => 1M ==> 10M (此处最大速度为100K)