最簡單好記的UDP協議

下面是學習UDP的思維導圖

 

 

1.首先是UDP的特點:

  • UDP無需建立連接。因此減少開銷和建立連接的時延。
  • 無連接狀態。TCP需要在端系統中維護連接狀態,連接狀態包括接收和發送的緩存、擁塞控制參數和序號與確認號的參數,而UDP不需要,故某些專用應用服務器使用UDP時,可以支持更多的客戶機。
  • 分組開銷小。TCP有20B的首部,而UDP僅有8B。
  • 面向報文。應用程序交給UDP一個報文,UDP添加首部後就交付給IP層;而UDP收到一個UDP數據報,去除首部後就交給應用程序。因此報文是UDP數據報處理的最小單位。應用程序必須選擇合適大小的報文,若報文太長,IP層需要進行分片;報文太短,IP數據報的首部相對較大。
  • 盡最大努力交付。即不保證可靠交付,故應用實體可以根據應用需要設計可靠性機制。
  • 無擁塞控制。因此應用層能更好地控制要發送的數據和時間。

2.UDP首部格式

UDP報文有兩個字段:數據字段和首部字段。整個UDP數據報作爲IP數據報的數據部分封裝在IP數據報中。
UDP首部佔8個字節,每個字段都是兩字節。

  • 源端口
  • 目的端口
  • 長度 UDP用戶數據報的長度(包括首部和數據)
  • 校驗和 可選。當源主機不想計算校驗和時,則可令該字段爲全0。

3.UDP校驗

在計算校驗和之前,需要在UDP數據報之前增加12個字節的僞首部。僞首部的信息是從所在IP分組頭中提取的。僞首部既不向下傳送也不向上遞交。加上僞首部的校驗和方式既檢查了UDP數據報,又檢查了IP數據報的源IP地址和目的IP地址。而IP數據報的檢驗和只檢驗IP數據報的首部。

在發送方把全零放入校驗和,再把僞首部和UDP用戶數據報視爲許多位16位字串,若UDP數據報的數據部分不是偶數個字節,則要填入一個全零字節(但此字節不發送)。以二進制反碼計算出這些16位字的和,再以此和的二進制反碼寫入校驗和。接收方把收到的UDP數據報加上僞首部(及可能填充的全零字節)一起按二進制反碼求和,並與校驗和相加。當無差錯時其結果應該爲1。

4.套接字

UDP通過套接字來定位一個應用進程。

5.UDP的多路分用模型

一個UDP端口與一個報文隊列(緩存相關聯),UDP根據目的端口號將到達的報文加入對應的隊列。應用進程根據需要從端口對應的隊列讀取整個報文。若報文到達的速度長期大於應用進程從隊列讀取報文的速度,則會導致隊列移除和報文丟失。 端口隊列中所有的報文的目的IP地址和目的端口號相同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章