UDP 是 User Datagram Protocol 的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务
它是IETF RFC 768 是 UDP 的正式规范
UDP 报头 UDP 报头由4 个域组成,其中每个域各占用2 个字节,具体如下: 源 端口号 目标端口号 数据报长度 校验值 UDP 协议使用端口号为不同的应用保留其各自的数据传输通道
UDP 和 TCP 协议正 是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持
数据发送一方(可以是客户端或服务器端)将UDP 数据报通过源端口发送出去,而数据接 收一方则通过目标端口接收数据
有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口
因为UDP 报头使 用两个字节存放端口号,所以端口号的有效范围是从0 到 65535
一般来说,大于49151 的端口号都代表动态端口
数据报的长度是指包括报头和数据部分在内的总字节数
因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)
数据报的最大长度根据操作环境的不同而各异
从理论上说,包含报头在内的数据报的最大长度为65535字节
不过,一些实际应用往往会限制数据报的大小, 有时会降低到8192 字节
UDP 协议使用报头中的校验值来保证数据的安全
校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算
如果 某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP 协议可以检测是否出错
这与TCP 协议是不同的,后者要求必须具有校验值
许多链路层协议都提供错误检查,包括流行的以太网协议,也许想知道为什么UDP也要提供检查和
其原因是链路