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