【问题标题】:UDP vs TCP securityUDP 与 TCP 安全性
【发布时间】:2013-03-18 00:55:07
【问题描述】:

我们正在开发一款游戏,数百万客户端与我们的服务器进行通信。这些游戏大部分都是回合制的。我知道 UDP 比 TCP 提供了一些性能优势,但我想知道一个协议是否比另一个协议具有安全优势?我读过一些网站表明 TCP 通常会更安全,但我看到了大量利用 TCP 弱点的攻击。

我们的代码可以很好地容忍不可靠的连接和丢失/乱序的数据,这就是我想到 UDP 的原因。谢谢!

【问题讨论】:

  • 这些协议的设计都没有考虑到安全性...

标签: security tcp network-programming udp


【解决方案1】:

UDP 最大的安全问题是您容易受到spoofingDOS attacks 的影响。由于握手永远不会完成,因此不可能使用 TCP 在 Internet 上欺骗地址。 OTOH 与 UDP 没有隐式握手 - 任何会话维护都必须由您的代码完成(处理开销)。

我知道 UDP 比 TCP 提供了一些性能优势

仅通过 LAN - 部分原因是不必执行握手减少了延迟 - 但最大的区别在于它绕过了拥塞控制机制。这对于通过 LAN 的数据包丢失非常低的数据来说不是问题 - 但是如果您想通过 Internet 发送数据,您将不得不在您的应用程序中实现带宽限制、错误恢复和congestion control(更多处理开销)。虽然您可以通过转发错误控制来处理某些类型的数据包丢失,但这对过载的路由器没有帮助。所有减慢 UDP 的东西都是有原因的。

如果您的数据流不超过 2 个 MSS,则在任何方向,然后是来自远程端的确认,然后继续 - 但如果您想快速移动大量数据,请使用 TCP(或旅行车) .

【讨论】:

  • 我们的游戏不是流式传输音频或视频,它只是传送具有当前游戏状态的简短数据包 - 这会避免拥塞问题吗?
  • 如果它们真的很简短,那么拥塞不应该是一个太大的问题——使用 FEC 会减少影响——但是没有太多关于 UDP 在互联网上的可靠性的数据因此我建议进行一些现场试验或坚持使用 TCP。
  • @symcbean UDP 不会创建可靠的通信形式,因此与 TCP 相比具有性能优势,后者可以保证接收到每个数据包。
  • @symcbean 此外,可以劫持 TCP 会话,最常见的是在 LAN 上,但理论上可以使用计时器攻击进行远程 TCP 会话劫持。
  • @person27:也许您想证明自己的主张并提出反对建议,而不是批评其他人。
【解决方案2】:

这是比较 UDP 和 TCP 的好资源:http://www.skullbox.net/tcpudp.php

传统上,大多数实时应用程序都使用 UDP,例如:VOIP。我不是安全专家, 但我想它们都同样安全/不安全。这取决于 TLS 等安全协议的使用情况。

TCP 只是有机制来保证数据包的传递。

【讨论】:

  • 根据我的理解,TCP 也有一个握手模型,用于连接到端口以侦听在建立加密之前完成身份验证的流量。所以它不仅仅是保证数据包的传递。
猜你喜欢
  • 2015-05-20
  • 1970-01-01
  • 2011-05-09
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2018-04-22
相关资源
最近更新 更多