TCP是简单直接的长连接,可靠的信息传输,数据包的大小没有限制。要实现一个稳定的TCP网络连接,需要处理断线检测、慢速客户端响应阻塞数据包,对开放连接的各种dos攻击,阻塞和非阻塞IO模型等等。最糟糕的特性是它对阻塞的控制,TCP假定丢包是网络带宽不够造成的,这种情况时TCP就会减少发包速度。
可靠的UDP也是有延迟的,但是由于它是在UDP的基础之上建立的通信协议,所以可以通过多种方式来减少延迟,不像TCP,所有的东西都要依赖于TCP协议本身而无法被更改。
我们到底是使用TCP还是UDP取决于我们能否隐藏延迟,对延迟有敏感要求且TCP没有相应解决方案的时候就选择UDP吧。
选择标准:
由客户端间歇性的发起无状态的查询且偶尔发生延迟可以容忍,那么使用HTTP/HTTPS。
客户端和服务器都可以独立发包,偶尔延迟可以容忍,使用TCP长连接。
客户端和服务器都可以独立发包,无法忍受延迟,使用UDP。
网友评论