TCP 在 UDP 上引起的数据包丢失和学士论文引用

标签 tcp udp ip packet-loss

我目前正在撰写计算机科学与工程专业的学士论文,我们正在使用 OpenGL 使用 C++ 创建一款赛车游戏。在报告中,我比较了 TCP 和 UDP 的使用,我发现了 source ,声称多个 TCP 连接会导致 UDP 连接中的数据包丢失。我什至得到了一个很好的reference

问题在于它已有 13 年的历史,但我还没有找到任何迹象表明任何协议(protocol)都已修改以解决此问题。我也找不到任何更新的、进行类似调查的论文或文章

因此,我的问题是协议(protocol)是否有任何可能相关的更改和/或我是否应该忘记在论文报告中使用这个旧引用。

最佳答案

阅读文章中的重要观点:

  1. 首先,我们关注只有 TCP 连接使用所有网络带宽的情况。
  2. 随着TCP连接数的增加,更多的数据包可以同时到达节点,从而使缓冲区严重拥塞,从而使丢包发生的频率更高。

所以被测WAN链路饱和,测试是为了TCP和UDP协议(protocol)的公平性。评论中链接的 29 West 文章还指出:

Myth--There is no loss in networks that are operating properly.

Reality--The normal operation of TCP congestion control may cause loss due to queue overflow. See this report for more information. Loss rates of several percent were common under heavy congestion.

这些都不是特别新的,也不应该让任何人感到惊讶。考虑家庭 Internet 连接、DSL 或 Cable,速度最低,例如2mb/s 并用 Bittorrent 安装一台计算机下载几个大文件,现在尝试运行 UDP 游戏,例如 Valve 的军团要塞 2。它不会运行良好。

对于 VoIP,许多网络人员开始寻找改善这种情况的方法,从而将 QoS 带到桌面上。然而,QoS 需要 WAN 两端的合作,因此这对大多数最终用户没有好处。唯一真正的解决方案是带宽限制。如果您有一个 2mb 的链接,您可以将 TCP 流量设置为 1.5mb,并将其余部分留给用于游戏的 UDP 流量。

如果您正在开发拆分协议(protocol)游戏,您可以定义一个带宽上限,比如每个客户端的总流量为 25KB/s,然后在该限制内为 TCP 和 UDP 流量定义单独的限制,例如TCP 为 15KB/s,UDP 为 10KB/s。一般游戏倾向于使用 HTTP (TCP) 在游戏外下载游戏内容,然后在游戏内切换到 UDP 以彻底解决问题。

关于TCP 在 UDP 上引起的数据包丢失和学士论文引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499495/

相关文章:

php - iptolong是如何工作的

c++ - 绑定(bind) falis 以绑定(bind) (TCP) 并返回 -1

c++ - 多个应用程序如何使用同一个网络端口?

linux - 如何在 Debian Stretch 的代码中粗暴地中断远程网络连接

c++ - UDP 数据是否会损坏?

sockets - 如何在内核模块开发下将Mac地址解析为IP地址?

c# - WCF 端口不监听

security - 保护 UDP 流量的选项

sockets - 捕获Web Audio API数据以进行套接字编程

linux - Linux下各接口(interface)之间的ping通信