【问题标题】:TCP faster than UDP over Ethernet?TCP 比以太网上的 UDP 快?
【发布时间】:2012-03-04 05:05:35
【问题描述】:

我构建了一个程序,为 TCP 和 UDP 传输提供一些统计信息。客户端发送一个包含 30KB 数据的数据包,连续发送 100 次到服务器。在这种情况下,客户端和服务器通过以太网连接。目前让我感到困惑的是,在我的结果中,TCP 的完成速度几乎是 UDP 的 2 倍。

我进行了一些研究,并看到了涉及 MTU 等的解释,但我似乎无法将它们全部联系起来。有人可以解释发生了什么吗?我的结果有意义吗?

【问题讨论】:

  • 您可以使用一些网络流量监控工具(例如 ethereal 或 wireshark)来监控传输,看看那里到底发生了什么。
  • 您是在 UDP 中使用连接的套接字还是在调用 sendto?另外,客户端和服务器在同一个局域网吗?

标签: tcp udp winsock ethernet


【解决方案1】:

您很可能看到了 nagle 算法的效果。 http://en.wikipedia.org/wiki/Nagle's_algorithm。

TCP 会在短时间内“等待”更多数据,然后将它们放在一个数据包中一起发送,而 UDP 将发送每个单独的数据报。

【讨论】:

  • 我明白这一点,但为什么只有当我通过以太网连接时 TCP 才会更快,但一旦我切换到无线,UDP 就会变得更快——这正是我所期望的。
  • naggle 算法用于将数据包“填充”到 MTU,但在这种情况下,数据包的大小已经达到 30K,因此不会产生任何影响。关于无线性能,这可能是由于更多的重传减慢了 TCP 而 UDP 根本不关心
猜你喜欢
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 2017-08-09
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
相关资源
最近更新 更多