UDP 通訊協定 - 翻轉工作室

文章推薦指數: 80 %
投票人數:10人

Internet 網路除了提供可靠性服務的 TCP 連接外,也提供非連接方式傳輸稱之為『使用者電報傳輸協定』(User Datagram Protocol, UDP)。

UDP 傳輸協定比 TCP簡單,沒有連線 ... TCP/IP協定與Internet網路:第七章傳輸層協定 上一頁         下一頁   翻轉工作室:粘添壽   7-5UDP通訊協定        Internet網路除了提供可靠性服務的TCP連接外,也提供非連接方式傳輸稱之為『使用者電報傳輸協定』(UserDatagramProtocol,UDP)。

UDP傳輸協定比TCP簡單,沒有連線要求、連線終止、以及流量控制的管理程序。

它的優點是傳輸速率較快,主要應用於較少量、即時性傳輸,而對資料正確性的要求較不高(如語音或視訊)的環境下使用。

而其缺點則是無法提供正確性較高的資料傳輸。

採用UDP傳輸可能會有資料重覆、資料未依序到達、資料遺失等等問題,必須由使用者自行解決。

但從一方面來思考,Internet網路上有許多應用系統,它們之間的傳輸量很低,而且需要即時反映訊息,如果採用TCP連線反而會浪費許多連結時間,而影響傳輸效率,在這種情況之下使用UDP的效率相對應較高,譬如DNS伺服系統或SNMP協定。

因此,可以做一個簡單的結論,再傳輸量比較少或需要及時反映的環境下,使用UDP協定傳輸會優於TCP協定。

但在許多情況下,使用者很難去決定到底應該使用何種協定來傳輸目前的資料,因此,在許多系統在同一傳輸埠口上,提供有TCP和UDP兩種協定讓使用使者連接,如果使用者的資料不需要分割,也就是說,一個UDP封包可以承載的話,那就使用UDP協定傳輸,如果需要多筆封包傳輸,則使用TCP協定傳輸。

至於一個傳輸層封包可以承載多少訊息,如果以圖7-2IP封包格式計算,一個IP封包最大的長度為65536Bytes,扣除IP封包標頭長度(20Bytes),再扣除UDP封包標頭長度(20Bytes),則UDP所能承載的資料長度為65496Bytes,但這是很難達成的網路傳輸環境。

一般我們為了IP封包在傳輸中避免有再被分段的情形,網路通訊之前都會協議出『最大傳輸單位』(MaximumTransmissionUnit,MTU),如果以連結的子網路都是Ethernet網路為例MTU=1518Bytes,而IP封包最大為1500Bytes,則UDP封包最大為1480Bytes,也表示所傳輸的資料少於1460Bytes,則可使用UDP協定傳輸,否則必需用TCP協定傳輸。

也可說是,到底傳輸量少於多少位元組可以用UDP協定傳輸,這必需看使用者連結網路的環境,並沒有一個固定的標準。

UDP封包與IP封包之包裝方式如圖7-2所示,圖7-20為UDP封包格式,因其為非連接方式,所以沒有順序號碼、確認號碼和其它控制欄位,而各欄位功能如下: ●來源埠口(SourcePort):發送端之傳輸埠口。

●目的埠口(DestinationPort):接收端之傳輸埠口。

●長度(Length):該封包所承載資料(Data)的長度。

●檢查集(Checksum):該封包之錯誤檢查的檢查集。

圖7-20UDP之封包格式        至於『檢查集』欄位的產生就較為複雜,因此,有些應用環境為了提高效率,而將此欄位填入0,而不使用錯誤檢查的功能。

檢查集所檢查的範圍除了UDP標頭和所承載的資料外,還包含一些IP標頭的欄位,我們將所檢查的欄位組成一個稱之為『虛擬標頭』(PseudoHeader),其內容如下: ●IPSourceAddress:(4Bytes)IP標頭之來源IP位址。

●IPDestinationAddress:(4Bytes)IP標頭之目的IP位址。

●Protocol:(1Byte)IP標頭之協定號碼欄位。

●Length:(2Bytes)UDP標頭之長度欄位。

●Padding:(1Bytes)補滿虛擬標頭成為偶數位元組長度,以方便計算Checksum。

       虛擬標頭的檢查方法是傳送端欲發送資料之前,首先建構虛擬標頭,再計算出檢查集的檢查碼,將其填入UDP的檢查集欄位,並捨棄虛擬標頭而不將其傳送過去。

接收端收到UDP封包後,也再建立虛擬標頭來計算檢查碼,如果所計算出來的檢查碼和檢查集欄位的值相同,便判斷該UDP封包沒有發生錯誤。

使用虛擬標頭檢查可視為UDP封包的雙重保全機制,如果封包在傳遞中發生錯誤,而下層通訊沒有檢查出來,虛擬標頭可以做第二道防線的檢查。

     



請為這篇文章評分?