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開發風格規范