用户数据报协议


User Datagram Protocol 简称 UDP

是OSI(Open System Interconnection / 开放式系统互联) 参考模型中一种无连接的 传输层 协议
提供 面向事务的 简单不可靠信息传送服务 IETF RFC 768是UDP的正式规范
UDP在IP报文的协议号是17

UDP协议全称是 用户数据报协议
在网络中 它与TCP协议一样用于 处理数据包 是一种 无连接的协议
在OSI模型中 在第四层 传输层

处于IP协议的上一层 UDP有 不提供数据包分组 组装和不能对数据包进行排序的缺点
也就是说 当报文发送之后 是无法得知其是否安全完整到达的 UDP用来支持那些需
在计算机之间传输数据的 网络应用 包括 网络视频会议 系统在内的众多的客户/服务器模式的网络应用 都需要使用UDP协议 UDP协议从问世至今已经被使用了很多年 虽然其最初的光彩已经被一些类似协议所掩盖 但是即使是在今天 UDP仍然不失为一项非常实用和可行的网络传输层协议

与所熟知的TCP 传输控制协议 协议一样
UDP协议直接位于IP(网际协议)协议的顶层
根据OSI(开放系统互连)参考模型 UDP和TCP都属于传输层协议 UDP协议的主要作用是将网络数据流量压缩成数据包的形式
一个典型的数据包就是一个二进制数据的传输单位
每一个数据包的前8个字节用来包含报头信息 剩余字节则用来包含具体的传输数据
 
udp与tcp
udp和tcp都属于传输层的协议,都位于ip协议的顶层,他们不同之处有
udp是 无连接协议 不需要进行tcp的握手
udp 每次发送最大长度是 65535 而tcp在握手后可以源源不断的发送
udp 协议 使用报头中的校验值来保证数据的安全 校验值首先在数据发送方通过特殊的算法计算得出 在传递到接收方之后 还需要再重新计算

如果 某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏
发送和接收方的校验计算值将不会相符 由此UDP协议可以检测是否出错 这与TCP协议是不同的 后者要求必须具有校验值

udp报文没有可靠性保证 顺序保证 和 流量控制字段 等 可靠性较差
但是正因为udp协议的控制选项较少 在数据传输过程中延迟小 数据传输效率高
适合对可靠性要求不高的应用程序 或者可以保障可靠性的应用程序 如DNS TFTP SNMP等
在网络质量令人十分不满意的环境下 UDP协议数据包丢失会比较严重 而tcp会进行确认验证 确保对方接收成功
udp可实现对网关内的所有主机进行广播

php 的udp
在php 开发 很少接触到udp协议 常见的有DNS协议,
输入一个域名时 会先请求到一个dns服务器 由dns服务器匹配出一个ip地址
然后通过ip地址去传输数据
在这个步骤中 请求dns服务器使用的就是udp协议