为什么聊天软件一般采用UDP协议
TCP是美国国防部设计的两种传输协议之一,另一种是UDP。UDP是一种不可靠的网络服务,负载比
较小,而TCP则是一种可靠的通信服务,负载相对而言比较大。TCP采用套接字(socket)或者端口
(port)来建立通信。TCP给端口到端口通信提供了错误和流量控制机制,同时TCP还负责建立连接
、处理终止和中断的端对端通信控制。  通常情况下我们认为TCP相比UDP具有更大的通信负载,
UDP不具备TCP的控制特性,TCP用了大约20个字节来发送一个65Kbps的数据块,这个报头占整个数
据块的比重也不过3%。总得来看,这个负载是合理的,何况还令通信具有了可靠性性。
socket通信为什么要指定端口
 
 tcp
 udp
 是否连接
 面向连接
 面向非连接
 传输可靠性
 可靠的
 不可靠的
 应用场合
 传输大量数据
 传输少量数据
 速度
 慢
 快
所以UDP的速度快的优点是很关键的因素,而且,UDP是“推”的协议,有多少个接收客户,客户端
是否链接均无所谓,只顾把数据发送/广播出去就行;这对链接不可靠,需要一对多等情形很有用。
TCP关键是可靠,是基于可靠链接基础上的协议,因而可能较慢,网络数据量较大。
当然UDP并不一定永远都比TCP快。我们之所以认为UDP快,仅仅是从报头中传输的信息比重更大来考虑
的。但是如果网络情况,可能UDP就不一定比TCP快了。UDP只负责发送,因而不会管网络的情况,一旦
网络阻塞,继续发UDP包只会加重整个网络的负担。而此时TCP的控制及复杂的传输算法就起到很好的
作用了。通过自适应窗口等方式减少实际发往网络的数据。就像堵车的时候一样,UDP只会越来越堵,
而TCP还可以缓慢的行走。还有像聊天这种及时性高,如果采用TCP短连接,频繁的连接断开也会增加
网络负担。
综上所述:如果是每次连接时间较短,或者即时性要求高,发送内容较少,则采用UDP;而对数据完整
性、可靠性要求较高,传输性能要求较低时采用TCP。
而我们知道像QQ这种大型的聊天软件却主要使用的是UDP连接,而以TCP为辅。即使是传文件,也是以UDP
为主,个人认为这主要还是从服务器的角度来考虑的。
首先是每一个客户实际上都是和服务器交互,再由服务器转发给正在通信的用户。
如果每一个QQ从一上线到下线的这段时间全部采用TCP长连接,这对服务器的负担很大。而如果采用TCP
短连接,频繁的连接断开也会造成网络负担。而采用UDP则可以避开上述这些麻烦,减少服务器的负担。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。