UDP和TCP
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
错误检测功能必须加到应用程序中,通常错误检测内容至少涉及确认、超时和重传。app
海量数据传输不该使用UDP
例如文件传输,这要求不光有错误检测,还要有窗口流量控制、拥塞避免和慢启动这些特性,这无异于在应用中再造TCP。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还将较长时间保持较多的应用。 spa