UDP是一个简单的面向数据报的传输层协议,进程的每个输出操作都正好产生一个UDP数据报,并组装一份待发送的IP数据报。
与TCP不同,app产生的全体数据与真正发送的单个IP数据报没什么关系。
UDP不提供可靠性:只发送数据,并没有保证措施确保他们能到达目的地。
UDP封装结构如下:
UDP首部共八个字节,分为4个16bit的字段,分别表示源端口号,目的端口号,UDP长度(最小8byte),UDP检验和。
其结构如下:
UDP检验和:
UDP检验和覆盖UDP首部和UDP数据,TCP同样,UDP检验和可选,TCP必须。
其检验和算法是把若干个bit相加,但是UDP长度可为奇数,解决办法是在最后增加填充字节,填充字节并不传送。
为了计算检验和,UDP和TCP都包含一个12字节长得伪首部,其目的是让UDP/TCP两次检查数据是否已经正确到达。
UDP对于校验错误的数据报做丢弃处理,TCP有重传机制。
其格式如下: