UDP首部

UDP是一個簡單的面向數據報的運輸層協議:進程的每個輸出操作都正好產生一個UDP數據報,並組裝成一份待發送的IP數據報。這與面向流字符的協議不同,如TCP,應用程序產生的全體數據與真正發送的單個IP數據報可能沒有什麼聯繫。

    UDP數據報封裝成一份IP數據報的格式如圖11 - 1所示。

UDP首部 - MING - MING 的博客

    RFC 768 [Postel 1980] 是UDP的正式規範。

    UDP不提供可靠性:它把應用程序傳給IP層的數據發送出去,但是並不保證它們能到達目的地。由於缺乏可靠性,我們似乎覺得要避免使用UDP而使用一種可靠協議如TCP。我們在第1 7章討論完TCP後將再回到這個話題,看看什麼樣的應用程序可以使用UDP。

    應用程序必須關心IP數據報的長度。如果它超過網絡的M T U(2 . 8節),那麼就要對IP數據報進行分片。如果需要,源端到目的端之間的每個網絡都要進行分片,並不只是發送端主機連接第一個網絡才這樣做(我們在2 . 9節中已定義了路徑M T U的概念)。在11 . 5節中,我們將討論IP分片機制。

    UDP首部的各字段如圖11 - 2所示。

UDP首部 - MING - MING 的博客

    端口號表示發送進程和接收進程。在圖1 - 8中,我們畫出了TCP和UDP用目的端口號來分用來自IP層的數據的過程。由於IP層已經把IP數據報分配給TCP或UDP(根據IP首部中協議字段值),因此TCP端口號由TCP來查看,而UDP端口號由UDP來查看。TCP端口號與UDP端口號是相互獨立的。

    儘管相互獨立,如果TCP和UDP同時提供某種知名服務,兩個協議通常選擇相同的端口號。這純粹是爲了使用方便,而不是協議本身的要求。

    UDP長度字段指的是UDP首部和UDP數據的字節長度。該字段的最小值爲8字節(發送一份0字節的UDP數據報是O K)。這個UDP長度是有冗餘的。IP數據報長度指的是數據報全長(圖3 - 1),因此UDP數據報長度是全長減去IP首部的長度(該值在首部長度字段中指定,如圖3 - 1所示)。

發佈了19 篇原創文章 · 獲贊 2 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章