UDP協議簡單理解

UDP協議格式

在這裏插入圖片描述從左到右,唐僧問路,16位源端口,16位目的端口,16位UDP長度,16位UDP檢驗和。
16位UDP長度,表示整個數據報(UDP首部+UDP的數據)最大長度
如果校驗和出錯,就會直接丟棄。

UDP的特點

UDP的傳輸過程類似於寄信

  • 無連接:知道對端的IP和端口號就直接進行傳輸,不需要建立連接。
  • 不可靠:沒有確認機制,沒有重傳機制;如果因爲網絡故障該段無法發送到對方,UDP協議也不會給應用層返回任何錯誤信息
  • 面向數據報:不能夠靈活的控制讀寫數據的次數和數量

面向數據報

應用層交給UDP多長的報文,UDP原樣發送,既不會拆分,也不會合並
用UDP傳輸100個字節的數據:

  • 如果發送端調用一次sendto,發送100個字節,那麼接受端也必須調用對應的一次recvfrom,接收100個字節,而不能循環調用10次recvfrom,每次接收10個字節;

UDP的緩衝區

  • UDP沒有真正意思上的發送緩衝區。調用sendto會直接交給內核,由內核將數據傳給網路層協議進行後續的傳輸動作。
  • UDP具有接收緩衝區,但是這個接收緩衝區不能保證收到的UDP報的順序和發送UDP報的順序一致;如果緩衝區滿了,再到達的UDP數據就會被丟棄;
    UDP的socket即能讀,也能寫,這個概念叫做全雙工。

UDP使用注意事項

我們注意到,UDP協議首部有一個16位的最大長度。也就是說一個UDP能傳輸的數據最大長度是64K(包含UDP首部 ),然而64k在當今的互聯網環境下,是一個非常小的數字。如果我們需要傳輸的數據超過64k,就需要在應用層手動的分包,多次發送,並在接收端手動拼裝。

基於UDP的應用層協議

  • NFS:網絡文件系統
  • TFTP:簡單文件傳輸協議
  • DHCP:動態主機配置協議
  • BOOTP:啓動協議(用於無盤設備啓動)
  • DNS:域名解析協議
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章