当客户端需要请求数据库服务器上的某些数据时,它至少需要三个数据报来建立TCP连接,三个数据报礼发送和确认少量数据,三个用来关闭连接。然而,如果使用UDP的话,仅仅需要发出两个数据报就能达到相同的效果。UDP不需要客户端建立和关闭与服务器的连接。客户端只是将数据放到数据报中并发给服务器。服务器构造出应答,并将应答数据放到去往客户端的数据报中,然后再发送给客户端。尽管对于简单实事务来说,这种数据传输方式与TCP相比,既快又有效,但UDP不能处理数据报丢失。UDP允许应用于远程计算机特定端口上的服务联系,但它不与远程计算机建立连接。
UDP是TCP的一个替代品,有时候将它和IP一起称为UDP/IP。和TCP一样,UDP也使用IP来在计算机间进行真正的数据报传输。然而,UDP不提供将信息分割成分组,并在接收终端将其重组的功能。
UDP和TCP间最根本的差别在于它们实现数据传输的方法不同。TCP支持有保证的传输,因为收到一个报文后,接收端会自动地做出确认。另外,如果接收端没有在规定的时间内做出回应,那么发送端将一直等待并重传数据。TCP所具备的这种可靠性在执行过程中可能开销太大。而UDP却并不实现有保证的报文传输,在传输过程中UDP数据报可能丢失,并且协议不能检测或报告这个错误。然而UDP并不妨碍可靠的报文传输,只不过是把这个任务交给TCP/IP参考模型中的更高层来完成而已。
在分组开销这个关键的方面,UDP比TCP有优势。由于TCP是一个可靠的协议,它必须确保数据完好无损地到达目的地,这样就在网络上交换了相对很多的分组。而UDP没有这个开销,所以速度比TCP快很多。UDP在传输之前不需要建立连接的这一特性,进一步减少了与报文传输有关的开销。
TCP在开始数据传输之前,需要完成三方握手过程。而UDP在开始传输数据前不需要任何正式的准备。TCP将与连接有关的计算机保持为连接状态。这个连接状态包括了滑动窗口和接收端计算机的缓冲区大小、拥塞控制参数、序号和确认号等参数。而UDP不需要维持这样的连接状态,也不需要跟踪任何参数。某个特定应用专用的服务器所支持的许多客户端,使用UDP时要比使用TCP时活跃得多。例如,使用UDP的SNMP管理系统可以支持多个SNMP代理。
TCP段中报头的大小为20字节,而UDP则只有8字节。TCP有一个拥塞控制机制,用来在发送和接收端之间的一个或者多个链路出现过度拥塞时,减少来自发送端的数据传输量。这个过程对实时应用来说可能有着不利的影响,因为它们可以容忍分组丢失,但却需要一个下限发送速率。另一方面,UDP发送数据的速度受应用生成数据的速率、处理能力、源计算机时钟速率和连接带宽等因素的限制,而且接收主机不一定能接收到所有的数据。当网络发生拥塞时,使用UDP传输的数据可能由于路由器的缓冲区塞满大量数据报而出现部分丢失的情况。对于UDP来说,即使发送速率没受限制,接收速率也会受网络拥塞的限制。
TCP支持的应用协议主要有:HTTP(超文本传输协议)、Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)、NTP(网络时间协议)等。
原文:http://blog.csdn.net/fayery/article/details/38520693