UDP和TCP都有其自身的特点,不同的应用场景和要求需要使用不同的协议来传输,那么何时我们可以用UDP代替TCP呢。
UDP 的优点
- UDP支持广播和多播,事实上如果应用程序使用广播或多播,那就必须使用UDP
- UDP没有连接建立和拆除,UDP只需要两个分组就能交换一个请求和一个应答(这里假设两者的长度都小于两端系统之间的最小MTU)。TCP却需要大约20个分组,这里假设为每次请求—应答交换建立一个新的TCP连接
TCP 的优点
- 正确确认
- 丢失分包重传
- 重复分组检测
- 乱序排序
- 窗口流量控制
- 慢启动和拥塞控制
TCP与UDP基本区别
- 基于连接与无连接
- TCP要求系统资源较多,UDP较少
- UDP程序结构较简单
- 流模式(TCP)与数据报模式(UDP)
- TCP保证数据正确性,UDP可能丢包
- TCP保证数据顺序,UDP不保证
协议使用建议
广播或多播必须使用UDP
任何形式的错我控制必须加到客户和服务器程序之中,一般应用系统往往是在可以接受一定量的错误前提下使用广播和多播
简单的请求—应答可以使用UDP
错误检测功能必须加到应用程序中,一般错误检测内容至少涉及确认、超时和重传。
海量数据传输不应使用UDP
例如文件传输,这要求不光有错误检测,还要有窗口流量控制、拥塞避免和慢启动这些特性,这无异于在应用中再造TCP。
这些规则存在一些列外
- 如TFTP使用UDP来传输文件,TFTP选择使用UDP的原因在于,在系统自举引导代码中使用UDP比使用TCP易于实现,而且TFTP只用于局域网上,而不是跨广域网传输海量数据。
- NFS也是使用UDP来传输海量数据,这样的选择部分是出于历史原因的,在20世纪80年代中期设计NFS时,UDP的实现要比TCP的快,而且NFS仅仅用于局域网,然而NFS从20世纪90年代早期开始被设计成支持TCP,大多数厂商现今已改为同时支持UDP和TCP上的NFS服务。同样的原因导致DCE远程过程调用(
remote procedure call, RPC
)的前身软件包(Apollo NCS
软件包)也选择UDP而不是TCP,不过如今的实现是同时支持UDP和TCP的了。
总结
现如今良好的TCP实现能够充分发挥网络的带宽容量,而且越来越少的应用系统设计人员愿意在自己的UDP应用中再造TCP,所以相比TCP而言,UDP的用途在递减,但在多媒体应用中UDP还将较长时间保持较多的应用。
网友评论