TCP协议是互联网发展过程中非常重要的一个协议,当使用TCP协议作为底层协议时,他能够保证你发送的数据按照一定的时序到达目的地,并且目的地会根据TCP协议的控制数据来校验数据的完整性和正确性。同时TCP协议在网络流量比较拥堵的时候,可以控制数据的流量来防止丢包的发生。需要了解,TCP协议是一个非常严谨的协议,他能够保证数据在恶劣介质的网络(比如wifi,grps连接等)上传送的时候保证数据安全到达。
然而,TCP协议这种严谨性同时带来了一个问题,由于对数据完整性和正确性的苛刻要求,TCP协议不得不在协议自身中加入大量控制内容。这些控制内容可以用于检验数据包的时序,完整性,正确性等。由于这些数据的加入,导致发送端和接收端的计算量加大,并且,由于这些控制数据的加入,使得传输数据的体积也加大了很多。加重了对网络的负载。这些问题最后都指向一个致命的问题:数据的延迟性被增大了。
对于网络游戏,视频聊天,语音聊天这种应用,由于用户对数据实时性的要求很高,而对数据完全正确性的要求又有所降低。(比如,聊天的时候,如果有个别数据包丢失或者有误,充其量你就得到一些声音不清楚,不会影响聊天的体验。) UDP协议就诞生在这种需求下。
所以,总结起来,UDP协议被广泛的使用在对网络数据传输实时性很高而对数据准确性要求不是非常高的场合。而当今网络传输物理介质的高速提升(光纤)也降低了数据包丢失的几率。当网络状态很好的时候,UDP协议的这两个缺点又可以很大程度上被克服。因此,UDP协议现在被广泛运用在很多应用中。
UDP适用于不需要TCP可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。 UDP是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)、动态主机配置协议(DHCP)、路由信息协议(RIP)和某些影音串流服务等等。 |