UDP(User Datagram Protocol,用户数据报协议)
目录 |
UDP是User Datagram Protocol的简称,是TCP/IP体系结构中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议是IP协议与上层协议的接口,用端口号分别为运行在同一设备上的多个应用程序提供服务。它定义在IETFRFC768中。
UDP是分发信息的理想协议,适用于追求效率且不需要额外可靠机制的情形,如音、视频流媒体分发、高层协议或应用程序提供错误和流控制功能时的快速数据分发。UDP服务于很多知名应用,如网络文件系统(NFS)、简单网络管理协}义(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)、动态主机配置协议(DHCP)、路由信息协议(RIP)等。
每一个UDP报文称为一个用户数据报,分UDP报头和UDP数据区两部分。报头由四个16位长的字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验和。
源端口字段和目的字段包含了16位的UDP协议端口号。长度字段记录该数据报的长度。以8位为组计算,包括报头和用户数据区。校验和字段是可选择的,如该字段值为0表明不进行校验。一般来说,使用校验和字段是必要的。
1、TCP基于连接,而UDP基于无连接;
2、TCP基于可靠的传输,而UDP基于不可靠的传输;
TCP的可靠保证,是它的三次握手机制,这一机制保证校验了数据,保证了他的可靠性。而UDP就没有了,UDP可能丢包、不能保证数据顺序,所以不可靠。
3、对系统资源的要求(TCP较多,UDP少);
4、TCP报文是流模式,而UDP报文是数据报模式;
5、TCP适用于传输大量的数据,而UDP适用于少量数据的传输;
6、速度上的区别;由于不对数据进行校验,且无需进行三次握手,因此UDP的速度是TCP比不了的。在我们日常的应用程序中老版QQ就是用UDP协议传输的,HTTP是用TCP协议传输的,它们在传输速度上的比较,读者自己体验一下就能发现区别了。
如果比较UDP包和TCP包的结构,很明显UDP包不具备TCP包复杂的可靠性与控制机制。与TCP协议相同,UDP的源端口数和目的端口数也都支持一台主机上的多个应用。一个16位的UDP包包含了一个字节长的头部和数据的长度,校验码域使其可以进行整体校验。许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。很明显,当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时问很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下,但是TCP可靠的点对点连接越来越被绝大多数的网络应用系统所采用。