UDP
===
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是[OSI](https://baike.baidu.com/item/OSI)(Open System Interconnection,[开放式系统互联](https://baike.baidu.com/item/%E5%BC%80%E6%94%BE%E5%BC%8F%E7%B3%BB%E7%BB%9F%E4%BA%92%E8%81%94/562749)) 参考模型中一种无连接的[传输层](https://baike.baidu.com/item/%E4%BC%A0%E8%BE%93%E5%B1%82)协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
UDP协议全称是用户数据报协议,在[网络](https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C/143243)中它与[TCP](https://baike.baidu.com/item/TCP)协议一样用于处理数据包,是一种无连接的协议。在[OSI](https://baike.baidu.com/item/OSI)模型中,在第四层——[传输层](https://baike.baidu.com/item/%E4%BC%A0%E8%BE%93%E5%B1%82/4329536),处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在[计算机](https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA/140338)之间传输数据的网络应用。包括[网络视频会议](https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E8%A7%86%E9%A2%91%E4%BC%9A%E8%AE%AE)系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。
与所熟知的TCP([传输控制协议](https://baike.baidu.com/item/%E4%BC%A0%E8%BE%93%E6%8E%A7%E5%88%B6%E5%8D%8F%E8%AE%AE/9727741))协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI([开放系统互联](https://baike.baidu.com/item/%E5%BC%80%E6%94%BE%E7%B3%BB%E7%BB%9F%E4%BA%92%E8%81%94/10672606))参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将[网络数据](https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E6%95%B0%E6%8D%AE/509706)流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
- Hello World
- UDP
- UDP服务端
- UDP客户端
- UDP广播
- 错误处理
- 编写好的异常处理
- panic和recover
- 并发编程
- Hello Goruntine
- 共享内存并发机制
- RWMutex
- CSP并发机制
- 多路复用和超时控制
- 通道关闭与广播
- Context与任务的取消
- 只运行一次
- 按需任意任务完成
- 所有任务完成
- 补充:range channel注意实现
- 对象池
- sync.Pool临时对象池
- 单元测试
- 表格测试法
- Banchmark
- BDD
- 反射
- 利用反射编写灵活的代码
- Struct Tag
- 万能程序
- 常用架构模式
- Pipe-filter pattern
- Micro Kernel
- 性能分析
- 高性能代码
- sync.MAP分析
- Concurrent Map
- GC友好的代码
- Uber开发风格规范