UDP:因性善而简单,难免碰到城会玩
2019-04-11 本文已影响0人
枯树恋
TCP 和 UDP 的区别
- TCP面向连接,UDP无连接。在互通之前,面向连接的协议会先建立连接,比如TCP的三次握手。所谓建立连接,指的是为了在客户端和服务端维护连接而建立数据结构来维护双方交互的状态并用这样的数据结构保证所谓面向连接的特性。
- TCP提供可靠交付。通过TCP连接出传输的数据,无差错、不重复、不丢失并且按顺序到达。UDP则在数据发出之后就完成工作,不会监控数据后续的状态保证其到达和不丢失。
- TCP面向字节流,发送的时候是一个流,无头无尾;UDP基于数据报的,一个一个的发,一个一个的接收。
- TCP有流量控制和拥塞控制。TCP会监控网络状态和丢包情况来调整发送行为,UDP则不然,应用让发送就发送,完全不在意网络相关情况。
- TCP是有状态服务,会记录数据发送情况(是否发送,是否接收,发送到那个了,接收到那个了);UDP则是无状态服务,不关注数据的发送和接收情况。
UDP包头
UDP包头.jpgUDP特点
- 沟通简单:默认容易送达,不会丢包。
- 轻信他人:不建立连接,可以给任何人发数据,别人也可以发送数据给他。
- 做事死板:不会根据网络情况和丢包情况进行发送调整。
UDP使用场景
- 需要资源少,在网络情况比较好的内网,或对于丢包不敏感的应用。
- 不需要一对一沟通建立连接,而是可以广播的应用。
- 需要处理速度快,延时低可以容忍少数丢包但是要求及时网络拥塞也要发送数据的应用。
基于UDP的城会玩例子
-
网页或者APP访问
QUIC(Quick UDP Internet Connections)是谷歌提出的基于UDP改进的通信协议,目的是降低网络延迟提供更好的用户体验。 -
流媒体协议
主要例子直播,在网络状态不好的情况下,TCP的重发和顺序机制会导致用户体验的进一步下降,此时我们是宁肯丢包也不要卡顿的。视频播放还允许选择性丢包。因此很多直播应用都是基于UDP实现了自己的视频传输协议。 -
实时游戏
-
IoT
终端资源短缺,维护TCP协议代价大;实时性要求高。代表例子是Google旗下NEST 提出的物联网通信协议Thread. -
移动通信领域