您的位置:首页 > 理论基础 > 计算机网络

UDP与TCP的比较

2014-10-18 10:46 134 查看
趁周末有时间,看了会儿书,看到网络传输协议这块,对UDP与TCP这两种数据传输协议有了一定的认识,因此记录下来,下次有些遗忘的时候可以翻出来看看。

当客户端需要请求数据库服务器上的某些数据的时候,它至少需要三个数据包来建立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不同,UDP不能确保数据报以正确的顺序到达目的地。例如,如果客户端以D1、D23、D3和D4的顺序向服务器发送四个数据报,UDP可能按照D3、D1、D4和D2的顺序向服务器发送这些数据。

使用UDP的应用必须确保整个报文以正确的顺序到达,因为UDP不会对到达的数据分组进行排序,不过,UDP数据抵达目的地时不总是乱七八糟的,仅仅在网络通信拥挤或者出现抖动(Jitter)时才会发生乱序的情况。所谓抖动是指在源和目标计算机之间存在多条路径且每条路径都有不同的延迟值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: