UDP优点
UDP
支持多播和组播,若应用程序使用多播或组播,则必然使用UDP
UDP
没有连接的建立和拆除(三次握手和四次挥手)。
TCP优点
不是所有的应用程序都需要这些特点。对于音视频应用程序而言,丢失的分组完全不必要重传。对简单的请求-应答事务处理,若两端事先定义好最大的请求和应答大小,就不需要窗口式的流量控制。
- 正面确认,丢失分组重传,重复分组检测,排序乱序分组。
- 窗口式流控,接收端
TCP
告知发送端自己为接收数据分配了多大的缓冲区空间,而发送端不能超过这个大小的数据。发送端的未确认数据量不能超过接收端告知的窗口。 - 慢启动和拥塞避免,发送端实施的一种流控方式。通过检测当前的网络容量来应对阵发的拥塞。
总结
- 广播和多播必须使用
UDP
- 对于简单的请求-应答程序可以使用
UDP
,错误检测可以在应用层实现,包括确认,超时和重传等。流量控制对于合理大小的请求和应答往往不成问题。若需要多个分组,则TCP
的开销就无关紧要了。 - 海量的数据传输(如文件传输)不应该使用
UDP
,这种情况下还需要流控,拥塞避免和慢启动等特性。
给UDP增加可靠性
- 超时和重传,用于处理丢失的数据报
- 序列号,供客户端验证一个应答是否匹配相应的需求