繁体   English   中英

为什么有些 udp 数据包没有在不同的网络上发送

[英]why do some udp packets not get sent on different networks

我通过自己的研发知道了一些可能的原因,但我仍然感到困惑。

我的应用程序发送一个最大的小图像。 2000Kbs 到我的服务器。 在那里,它将这个图像绘制到我的 canvas 控件上。 I use udp because if i use tcp the image appears 'jumpy' because the tcp does more work than udp and sends a ack back to my client. 这就是我使用 udp 的原因。 事实上,对于这种类型的场景,我可以看到它有时建议使用 udp。 如果您看到的所有图像都没有进入我的服务器,我不会感到困扰。 我需要的是一劳永逸。

这一切都在我自己的局域网上运行良好。 最近,我(在 COVID 之前)去了一个偏远的威尔士小屋。 那里的互联网不是很好。 我认为对我的应用程序进行压力测试是个好主意。 图像从未到达我的服务器,所以,到处玩。 我降低了法师的质量,因此每个 udp 数据包平均只发送 1000Kbs。 图像开始通过。 图像的质量不是很好,但我可以忍受。

所以,我想如果我能检测到当前 LAN 上较差的 udp 传输速率,我可以自动降低图像的图像质量。 所以,我用谷歌搜索了这个。 我所能做的就是检查那个 LAN 上的 MTU。 但它也说你不应该超过 512Kbs。 但它也说最大的 udp 数据包可以是 65507。但是它说 udp 数据包以该大小通过的可能性很小。

所以真的很迷茫。 就像我说的,我可以处理随机丢失的图像。 但我想增加大多数图像通过的机会。 如果 MTU 只给我 512kb 到 go,我可以使用其他指标吗?

谢谢

每个连接都有一个可靠率。 这些天的可靠性非常高,但仍然可能存在问题。 TCP 被认为是可靠的,因为数据包的最大大小为 1500,并且每个数据包都会收到一个 ACK,并且当未收到 ACK 时会重新发送数据包。 所以 TCP 处理 ACK 的开销也很大。 UDP 没有 ACK 并且不如 TCP 可靠,但在良好的网络上,您应该没有问题。 因此,测试网络可靠性的一个好方法是使用 ping 进行测试。 使用: ping -t -l 65500 IP 其中 t 是 ping 直到停止,l(长度)是长度大小。 – jdweng 11 分钟前

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM