有损网络的解决方法

有损网络的解决方法

我家里的互联网有损耗(12%的数据包丢失),这导致我完全控制的(根访问)服务器和我的计算机之间的 TCP 连接速度非常慢。

有没有什么方法可以解决网络损耗问题,使连接更加可靠。它不必是全球性的,只要一个隧道就足够了。

PS:我知道这部分是因为 TCP 处理数据包丢失的方式,它假设数据包丢失是因为网络上的数据包太多而超出了它的处理能力,所以它会降低速度,除非获得更好的连接性,但就我而言,这对我来说成了一场噩梦。

答案1

这有点像理论答案,提供理解问题的背景:

从您所写的内容来看,我假设您不想听到“修复连接!”这样的答案,对吗?

让我们看看还能做些什么:

大部分包裹都丢失了。TCP/IP(传输控制协议)就是为您提供一个连接,以相同的顺序传输发送的数据。只要连接没有断开,您仍然可以从连接中获得完美的质量。

但显然,这有一个折衷方案——连接速度很慢。
因为很难模拟完美连接通过某种不规则的方式丢失大约 12% 的数据的连接。

我们的确是不要指望魔法,所以一些妥协需要接受。有人可能会问,是否可以使用其他东西来做 TCP/IP 所做的事情,但速度更快。
对于一般解决方案,我们可以假设 TCP/IP 几乎是最佳的,因为在它上面花费了大量时间进行了大量研究。
(使用一种基于连接测量而开发的特殊连接解决方​​案,它肯定会更快,如果您使用适合您连接的硬件,速度甚至会更快 - 但这个方向在这里没有多大意义)

现在我们能做的就是寻找一个不同的妥协

妥协的另一端是极快的连接,数据包丢失率为 -12%。
如果你不使用 TCP/IP,这就是你所拥有的,但是UDP/IP(用户数据报协议),它会为您转运单独的包裹,并且不保证它们能按顺序到达,或者根本无法到达。

理论上,你可以在 UDP/IP 的基础上做出妥协,减少数据包丢失,降低速度。但在很多情况下,只有 TCP/IP 才有意义。

所以实际的答案是:“修复连接!”



一些实用说明:

关于为什么连接慢的:TCP 可以识别何时发送了过多的数据包,并减慢速度,但我不认为这里发生了这种情况。丢失数据包与发送过多数据包相比是一个完全不同的问题。

我认为时间花在重发丢失包裹,并等待丢失的包裹,这些包裹需要在已经收到的包裹之前送达。

因为你没有说哪一个数据类型你想转学:有充分的理由最好是 12% 的丢包率在某些用例中,UDP/IP 是最佳选择:
如果您从摄像机传输实时视频,则只需关注及时到达并显示在屏幕上的数据包。使用 TCP,数据将完整且有序地到达,但无法使用,因为太晚了。及时获得 88% 的视频流要好得多,甚至足以实现良好的传输。

相关内容