UDP優化

分組與數據報

分組是TCP/IP模型中第三層傳輸層的傳輸單位。分組與數據報的意義近似,但有微小差別。
* 分組(packet),分成兩部分,包括控制信息(數據表頭)和數據,可以用來指代任何格式的數據塊。
* 數據報(datagram),通常用來描述那些通過不可靠服務傳輸的分組,既不保證送達,也不發送失敗通知。

TCP與UDP的區別

  • TCP因其面向連接且具有順序控制重發控制等機制,適用於需要可靠傳輸的應用;
  • TCP是面向字節流的協議,能夠以多個分組形式發送應用程序的消息,對分組中的消息範圍沒有任何明確的限制。所有的分組都有序號,丟失重發,且按序交付。
  • UDP主要用於針對高速傳輸實時性有較高要求的通信或廣播通信(RIP、DHCP等基於廣播的協議依賴於UDP)。
  • UDP數據報必須封裝在IP分組中,不能分片

UDP

UDP(User Datagram Protocol,用戶數據報協議),面向無連接,隨時發送數據。

UDP的無服務在以下4個方面表現:

  1. 不保證消息交付
    不確認,不重傳,無超時
  2. 不保證交付順序
    不設置包序號,不重排,不會發生隊首阻塞
  3. 不跟蹤連接狀態
    不必建立連接或重啓狀態機
  4. 不需要擁塞控制
    不內置客戶端或網絡反饋機制

在UDP數據報中的源端口和校驗和字段都是可選的。
UDP數據報

UDP處理簡單高效,被用於:

  • 包總量較少的通信(DNS、SNMP等)
  • 視頻、音頻等多媒體通信(即時通信)
  • 限定於LAN等特定網絡中的應用通信
  • 廣播通信(廣播、多播)

NAT與NAT穿透

TODO

UDP的優化

  • 應用程序必須容忍各種因特網路徑條件
  • 應用程序應該控制傳輸速度
  • 應用程序應該對所有流量進行擁塞控制
  • 應用程序應該適用於TCP相近的帶寬
  • 應用程序應該準備基於丟包的重發計數器
  • 應用程序應該不發送大於路徑MTU的數據報
  • 應用程序應該處理數據報丟失、重複和重排
  • 應用程序應該足夠穩定支持2分鐘以上的交付延遲
  • 應用程序應該支持IPV4 UDP校驗和,必須支持IPV6校驗和
  • 應用程序可以在需要時使用keep-alive(最小間隔15s)

來源

  1. 《Web性能權威指南》
  2. 《圖解TCP/IP》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章