# UDP(用户数据报协议)
> 用户数据报协议(User Datagram Protocol,UDP)UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成 ,提供面向事务的简单不可靠信息传送服务。
## 一、UDP协议
1、面向事物,不是面向链接
2、UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地
简单的可以理解UDP就是类似一个邮寄员的角色。你只要告诉它,对方的地址和电话。邮递员就把你的快递送到对应的地方,但是中间可能会丢失。对方收到没有,就不管了。
## UDP头部信息
> 指定通信的源端端口号、目的端端口号、UDP长度、校验和、数据
![udp-1](https://box.kancloud.cn/94ed5b52a61c934feb8d670452b905ee_435x152.png)
![udp-2](https://box.kancloud.cn/d50743e4ad34788a387f717c8a90b3b4_267x96.png)
UDP报文各个位置详解:
- 1、源端口号,16bit
- 2、目的端口号:数据接收者的端口号,16bit
- 3、UDP长度:UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节
- 4、UPD校验和:UDP检验和覆盖UDP首部和UDP数据
- 5、首部长度:首部中32bit字的数目,可表示15*32bit=60字节的首部。一般首部长度为20字节。
- 6、数据
使用**wireshark**抓包查看对应的字段信息。
![](https://box.kancloud.cn/d9f2b88a3ecc5f5c308d06b56f5e96e0_976x327.png)
UDP 是一个简单的传输层协议。和 TCP 相比,UDP 有下面几个显著特性:
- UDP 缺乏可靠性。UDP 本身不提供确认,序列号,超时重传等机制。UDP 数据报可能在网络中被复制,被重新排序。即 UDP 不保证数据报会到达其最终目的地,也不保证各个数据报的先后顺序,也不保证每个数据报只到达一次
- UDP 数据报是有长度的。每个 UDP 数据报都有长度,如果一个数据报正确地到达目的地,那么该数据报的长度将随数据一起传递给接收方。而 TCP 是一个字节流协议,没有任何(协议上的)记录边界。
- UDP 是无连接的。UDP 客户和服务器之前不必存在长期的关系。UDP 发送数据报之前也不需要经过握手创建连接的过程。
- UDP 支持多播和广播。
- PC
- IO模型
- Inode介绍
- Linux
- Linux基本操作命令
- Linux网络相关命令
- Crontab计划任务
- Shell
- Sed命令
- Awk命令
- LAMP/LNMP
- PHP
- 基本语法
- 面向对象
- 错误和异常处理
- 命名空间
- PHP7
- 正则表达式
- Hashtable
- 变量的内部实现
- PHP-FPM
- PHP运行原理
- swoole
- mysql
- SQL标准
- mysql三范式
- 存储引擎
- Mysql事务
- Mysql索引
- Mysql优化
- Explain
- MySQL索引原理及慢查询优化
- MongoDb
- 计算机网络
- IP协议
- TCP(传输控制协议)
- UDP(用户数据报协议)
- HTTP 协议
- HTTPS
- HTTP的基本优化
- Websocket协议
- 版本控制器
- Git
- Svn
- 数据结构
- 数组
- 链表
- 算法