我们正在开发一个拥有数百万客户端与我们的服务器通信的游戏。这些游戏大部分是回合制的。我知道UDP相比TCP具有一定的性能优势,但我想知道是否有一种协议比另一种更安全?我阅读了一些网站,表明TCP通常会更安全,但我看到了许多利用TCP弱点的攻击行为。
我们的代码对于不可靠连接和丢失/乱序数据相当宽容,这就是我想到使用UDP的原因。谢谢!
我们的代码对于不可靠连接和丢失/乱序数据相当宽容,这就是我想到使用UDP的原因。谢谢!
UDP的一个大安全问题是你容易受到欺骗和DOS攻击的影响。使用TCP在互联网上无法伪造地址,因为握手永远不会完成。然而,使用UDP没有隐式握手 - 任何会话维护必须由您的代码完成(处理开销)。
只有在局域网内 - 部分原因是不必进行握手的延迟较低 - 但最大的区别是它绕过了拥塞控制机制。这对于局域网内的数据不是问题,因为数据包丢失率将非常低 - 但如果您想通过互联网发送数据,则必须在应用程序中实现带宽限制、错误恢复和拥塞控制(更多的处理开销)。虽然您可以通过前向纠错控制处理某些类型的数据包丢失,但这对于超载路由器没有帮助。所有减慢UDP速度的东西都有其原因。我知道UDP相对于TCP具有一些性能优势
这是一个很好的比较UDP和TCP的资源:http://www.skullbox.net/tcpudp.php。
传统上,大多数实时应用程序使用UDP,例如:VOIP。我不是安全领域的专家,但我猜两者同样安全/不安全。这取决于使用诸如TLS等安全协议的情况。
TCP只有机制来保证数据包的传递。