UDP协议
UDP协议
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
图1:UDP数据报文格式
如图1所示为UDP数据报文格式,UDP协议报文相对简单,主要由源端口、目的端口、包长和校验和组成。
- 源端口号
表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置源端口号,没有源端口号的时候该字段的值设置为0.可用于不需要返回的通信中。
- 目的端口号
表示接收端端口,字段长度16位
- 包长度
该字段保存了UDP首部的长度跟数据的长度之和。单位为字节(一个字节8位)
- 校验和
校验和是为了提供可靠的UDP首部和数据而设计。在计算校验和时,如图2所示,附加在UDP伪首部与UDP数据报文之前。通过在最后一位增加一个“0”将全长增加16位。此时将UDP首部的校验和字段设置为“0”。然后以16比特为单位进行1的补码和,并将所得到的1的补码和写入校验和字段。
接收主机在收到UDP数据报文后,从IP首部获知IP资质信息构造UDP伪首部,再进行校验和计算。校验和字段的值是校验和字段以外剩下部分的1的补码和。因此包括校验和字段在内的所有数据之和结果为“16位全部为1”时,才会被认为所收到的数据是正确的。
图2:校验和计算中使用的UDP伪首部