Presentation is loading. Please wait.

Presentation is loading. Please wait.

User Datagram Protocol (UDP)

Similar presentations


Presentation on theme: "User Datagram Protocol (UDP)"— Presentation transcript:

1 User Datagram Protocol (UDP)
靜宜大學資工系 蔡奇偉 副教授 2006

2 大綱 簡介 程序對程序通訊 埠號 插座位址 使用者資料包格式 檢查合 UDP 運作 UDP 之用途

3 簡介 UDP 是程序 (process) 與 IP 間資料交流的一個簡單封包格式。 提供程序對程序的資料傳輸
非預接性 (connectionless) 不具可靠性 (unreliable) 不分封資料 適合少量資料與不在乎可靠性的傳輸,如 DNS。

4 UDP 在 TCP/IP 協定組的位置

5 程序對程序通訊 IP 協定負責主機對主機的通訊。不過這樣的傳輸並不完全,該筆訊息尚須交到正確的程序手上,這就需要像 UDP 這種傳輸層協定來執行。UDP 負責將訊息交給適當的程序。下圖展示 IP 及 UDP 運作的區域:

6 Figure 11-3 埠號 (Port numbers) 程序用一個 0 到 的整數來代表,稱為埠號。以下圖的 Daytime 服務為例, 客戶端程序的埠號為 52000,伺服端程序的埠號為 13。(伺服端程序的埠號通常是公開且固定)

7 Figure 11-5 IANA (Internet Assigned Numbers Authority) 負責埠號的分配與管理。IANA 把埠號分隔成下圖所示的三個區間: 由 IANA 指定與管理。 須向 IANA 註冊以避免被重複使用。 不受 IANA 控制也不用註冊,任何程序都可使用,這些號碼為短暫埠號

8 IP 位址與埠號 如右圖所示,傳送 UDP 資料包時, IP 標頭中的 IP 位址欄用來指定目標主機; UDP 標頭中的埠號用來選擇程序。
Figure 11-4 IP 位址與埠號 如右圖所示,傳送 UDP 資料包時, IP 標頭中的 IP 位址欄用來指定目標主機; UDP 標頭中的埠號用來選擇程序。

9 插座位址 (Socket addresses)
Figure 11-6 插座位址 (Socket addresses) UDP 用 IP 位址與埠號在兩端形成一個連線,一個IP位址與一個埠號的組合稱為插座位址 (如下圖所示) 。在用戶端的插座位址唯一的定義用戶端的程序,同樣地,伺服端的插座位址定義伺服端的程序 。

10 使用者資料包格式 (User Datagram Format)
Figure 11-7 使用者資料包格式 (User Datagram Format) UDP 的封包被稱為使用者資料包,它的標頭固定為 8 個位元組。下圖展示其格式:

11 ■來源端埠號 (Source port number)
這個埠號為來源端主機上的程序所使用。長為 16 位元,其範圍從 0 到 65,535。如果來源主機為用戶端,則大多情況下,其埠號為 UDP 軟體所選出的短暫埠號。如果來源主機為伺服端,則大多數埠號碼為公認埠號。 ■目的端埠號 (Destination port number) 這個埠號為目的主機上的程序所使用。長為 16 位元。如果目的主機為伺服端,其埠號大多為公認埠號。如果目的主機為用戶端,則其號碼大多為一短暫埠號。在這種情況下,伺服端程式會從收到的要求封包中,複製其短暫埠號過來。

12 ■長度 (Length) 本欄為 16 位元長,用來代表使用者資料包 (標頭與資料) 的總長度。16 位元可定義長度為 0 到 65,535 位元組。不過 UDP 最小長度為 8 個位元組,代表該資料包只有標頭沒有資料。因此資料的長度最多為 65,507 位元組 ( 65,535 – 20 – 8 = 65,507,20 位元組為 IP 標頭,8 位元組為 UDP 標頭)。 ■檢查和 (Checksum) 檢查和用來偵測整個使用者資料包 (包括標頭與資料) 的錯誤。

13 UDP 資料包中的長度欄事實上是多餘的,因為資料包將被封裝在 IP 資料包內,由 IP 中的長度欄即可推出以下公式:
不過 UDP 協定的設計者認為,直接用目的 UDP 資料包內的長度資訊來獲得 UDP 資料的長度較為有效率,這樣就不用要求 IP 軟體來提供這項資訊。我們知道,當 IP 軟體把 UDP 使用者資料包送到 UDP 層時,IP 已經把 IP 標頭部分丟掉了。

14 檢查合 (Checksum) UDP 檢查合計算與 IP 或 ICMP 不同,UDP 的檢查合計算包括一個虛擬標頭 (pseudoheader)、UDP 標頭及來自應用層的資料。 虛擬標頭為 IP 標頭的一部分。如果檢查合不包含虛擬標頭,使用者資料包或許能安全無誤的到達,但是如果 IP 標頭遭毀壞,就有可能會被送到別台電腦。

15 Figure 11-8 UDP 資料包的虛擬標頭

16 Figure 11-9 一個簡單 UDP 使用者資料包的檢查和計算

17 UDP 運作 非預接式服務 (Connectionless Services)
前面提及 UDP 提供非預接式服務,表示每個 UDP 所送出的使用者資料包都是獨立的,不同的使用者資料包即使是來自相同的程序到相同的目的程式,彼此間也沒有任何關係。使用者資料包並不編號,也沒有如同 TCP 協定一樣,有所謂的連線建立與連線結束。以 UDP 方式,表示每個使用者資料包可能以不同的路徑旅行。 非預接式的另一個現象是,使用 UDP 的程序不能以資料流 (data stream) 的方式將資料送給 UDP,且期望 UDP 將之分成數個相關聯的使用者資料包。相反的,每個程序要求要送的資料,必須比一個使用者資料包小,也就是說,送短訊息的程序應該使用 UDP。

18 流量與錯誤控制 UDP 是一種非常簡單、非可靠性的傳輸協定。沒有流量控制,也就是說沒有流量窗口的機制,接收者可能被湧入的訊息淹沒。
在 UDP 除了檢查合外,沒有其他錯誤控制的機制,送出者不知道是否一筆訊息掉了或是重複傳送。當接收者以檢查合偵測到錯誤時,該資料包即被丟棄。由於 UDP 沒有流量控制及錯誤控制,必須由使用 UDP 的程序來提供這些機制。

19 封裝及解封裝 要把訊息從一個程序送到另一個程序,UDP 協定必須將訊息封裝起來再送出,並且在接收後,解封裝取出 (如下圖)。
Figure 封裝及解封裝 要把訊息從一個程序送到另一個程序,UDP 協定必須將訊息封裝起來再送出,並且在接收後,解封裝取出 (如下圖)。

20 Figure UDP 的佇列 UDP 對每一個埠號建立輸出/入佇列,來處理與對應程序間的資料交流,如下圖所示:

21 多工與解多工 (Multiplexing and Demultiplexing)
Figure 多工與解多工 (Multiplexing and Demultiplexing) 執行 TCP/IP 協定的主機只跑一個 UDP,但是可能有好幾個程序想使用 UDP 的服務,處理這種情況,要以 UDP 多工及解多工的方式進行 (如下圖)。

22 UDP 之用途 適合小量資料傳送而且也不在乎流量與錯誤控制的程序。 適合內部自定流量與錯誤控制機制的程序,如 TFTP。
適合廣播與群播的傳輸層協定,因為效率較高,而且錯誤的影響不大。 使用於如 SNMP 之類的網管的程序。 使用於 RIP 之類的路徑協定。


Download ppt "User Datagram Protocol (UDP)"

Similar presentations


Ads by Google