UDP

来自智得网
跳转至: 导航、​ 搜索
UDP传输示意图

简介

UDP是数据报文协议,是以数据包方式发送和接收报文。

和面向连接的TCP协议不同,UDP不需要保证传输的可靠性,所以UDP可以以更加恒定的速度发送数据,所以对很多需要时效的场景更加适用。

UDP提供尽最大努力的交付,不保证可靠交付。所有维护传输可靠性的工作需要用户在应用层来完成。没有TCP的确认机制、重传机制。如果因为网络原因没有传送到对端,UDP也不会给应用层返回错误信息。

UDP是面向报文的,对应用层交下来的报文,添加首部后直接乡下交付为IP层,既不合并,也不拆分,保留这些报文的边界。对IP层交上来UDP用户数据报,在去除首部后就原封不动地交付给上层应用进程,报文不可分割,是UDP数据报处理的最小单位。

和TCP相比,在传输协议方面,UDP可以设置的属性较少,不能控制读写数据的次数和数量。数据包的发送和接收都必须是一个整体。

UDP TCP
是否连接 无连接 面向连接
是否可靠 不可靠传输,不使用流量控制和拥塞控制 可靠传输,使用流量控制和拥塞控制
连接对象个数 支持一对一,一对多,多对一和多对多交互通信 只能是一对一通信
传输方式 面向报文 面向字节流
首部开销 首部开销小,仅8字节 首部最小20字节,最大60字节
适用场景 适用于实时应用(IP电话、视频会议、直播等),小数据传输(DNS,SNMP) 适用于要求可靠传输的应用,例如文件传输
UDP的数据报文

原理

因为UDP不需要保证可靠的传输,所以UDP在传输的生命周期中不需要处理建立连接,断开连接,重传等,不需要维护连接状态,也不需处理流量控制和拥塞控制,所以性能开销较少,传输效率较TCP较高。其实现非常简单,UDP的报文结构也非常简单。

UDP的报文结构简单,只包括传输端以及对端的地址/端口信息,以及报文,报文长度,报文的校验和。

和IP的检验和只校验数据包头部不同,UDP的校验和包括头部和数据部分。