我们正在开发一款游戏,数百万客户端与我们的服务器进行通信。这些游戏大部分是回合制的。我知道 UDP 比 TCP 提供了一些性能优势,但我想知道一个协议是否比另一个协议具有安全优势?我读过一些网站表明 TCP 通常会更安全,但我看到了大量利用 TCP 弱点的攻击。
我们的代码非常容忍不可靠的连接和丢失/乱序的数据,这就是我想到 UDP 的原因。谢谢!
我们正在开发一款游戏,数百万客户端与我们的服务器进行通信。这些游戏大部分是回合制的。我知道 UDP 比 TCP 提供了一些性能优势,但我想知道一个协议是否比另一个协议具有安全优势?我读过一些网站表明 TCP 通常会更安全,但我看到了大量利用 TCP 弱点的攻击。
我们的代码非常容忍不可靠的连接和丢失/乱序的数据,这就是我想到 UDP 的原因。谢谢!
UDP 最大的安全问题是您容易受到欺骗和DOS 攻击。由于握手永远不会完成,因此不可能使用 TCP 在 Internet 上欺骗地址。使用 UDP 的 OTOH 没有隐式握手 - 任何会话维护都必须由您的代码完成(处理开销)。
我知道 UDP 提供了一些优于 TCP 的性能优势
仅通过 LAN - 部分原因是不必执行握手减少了延迟 - 但最大的区别在于它绕过了拥塞控制机制。这对于通过 LAN 的数据包丢失非常低的数据来说不是问题 - 但是如果您想通过 Internet 发送数据,您将不得不在应用程序中实现带宽限制、错误恢复和拥塞控制(更多处理高架)。虽然您可以通过转发错误控制来处理某些类型的数据包丢失,但这对过载的路由器没有帮助。所有减慢 UDP 的东西都是有原因的。
如果您的数据流不超过任何方向的 2 MSS,然后是来自远程端的确认,那么就去做吧 - 但如果您想快速移动大量数据,请使用 TCP(或旅行车)。
这是比较 UDP 和 TCP 的好资源:http ://www.skullbox.net/tcpudp.php 。
传统上,大多数实时应用程序都使用 UDP,例如:VOIP。我不是安全专家,但我想它们都同样安全/不安全。这取决于 TLS 等安全协议的使用。
TCP 只是有机制来保证数据包的传递。