TCP IP詳解(六) UDP 使用者資料報協議

2021-07-12 00:02:30 字數 1586 閱讀 1399

udp(user datagram protocol),即使用者資料報協議。工作在osi七層模型的傳輸層,不同於tcp提供可靠的端到端連線,udp不可靠,無需在客戶和伺服器之間建立乙個連線,且沒有超時重發等機制,qq訊息就是一種顯著的udp報文。

udp首部8個位元組

tcp首部20個位元組

ip首部20個位元組

由於資料鏈路層限制了每次傳送資料幀的最大長度(mtu)。任何時候ip層接收到乙份要傳送的ip資料報時,它要判斷向本地哪個介面傳送資料(選路),並查詢該介面獲得其mtu。ip把mtu與資料報長度進行比較,如果需要則進行分片。分片可以發 生在原始傳送端主機上,也可以發生在中間路由器上。

ip分片資料報的重組則發生在目的端的網路層。

使用udp很容易導致ip分片。我們可以用sock程式來增加資料報的長度,直到分片發生。在乙個乙太網上,資料幀的最大長度是1500位元組, 其中1472位元組留給資料,假定ip首部為20位元組,udp首部為8位元組。我們分別以資料長度為 1471, 1472, 1473和1474位元組執行sock程式。最後兩次應該發生分片。

前兩份udp資料報(第1行和第2行)能裝入乙太網資料幀,沒有被分片。但是對應於寫1473位元組的ip資料報長度為1501,就必須進行分片(第3行和第4行)。同理,寫1474位元組產生的資料報長度為1502,它也需要進行分片(第5行和第6行)。

當ip資料報被分片後,tcpdump列印出其他的資訊。首先,frag 26304(第3行和第4 行)和frag 26313(第5行和第6行)指的是ip首部中標識字段的值。

分片資訊中的下乙個數字,即第3行中位於冒號和@號之間的1480,是除ip首部外的片長。 兩份資料報第一片的長度均為1480:udp首部佔8位元組,使用者資料佔1472位元組(加上ip首部的20位元組分組長度正好為1500位元組)。第1份資料報的第2片(第4行)只包含1位元組資料—剩下的使用者資料。第2份資料報的第2片(第6行)包含剩下的2位元組使用者資料。

發生icmp不可達差錯的另一種情況是,當路由器收到乙份需要分片的資料報,而在ip首部又設定了不分片(df)的標誌位元。

理論上,ip資料報的最大長度是65535位元組,這是由ip首部16位元總長度欄位所限制的。去除20位元組的ip首部和8個位元組的udp首部,udp資料報中使用者資料的最長長度為65507位元組。但是,大多數實現所提供的長度比這個最大值小。

兩個限制因素。第一,應用程式可能會受到其程式介面的限制。 socket api提供了乙個可**用程式呼叫的函式,以設定接收和傳送快取的長度。對於 udp socket,這個緩衝區長度與應用程式可以讀寫的最大udp資料報的長度直接相關。現在的大部分系統都預設提供了可讀寫大於8192位元組的udp資料報(使用這個預設值是因為 8192是nfs讀寫使用者資料數的預設值)。

第二個限制來自於tcp / ip的核心實現。可能存在一些實現特性(或差錯),使ip資料報長度小於65535位元組。

UDP使用者資料報頭格式

介紹 使用者資料報協議是定義用來在互連網路環境中提供包交換的計算機通訊的協議。此協議預設認為網路協議 ip 是其下層協議。此協議提供了向另一使用者程式傳送資訊的最簡便的協議機制。此協議是面向操作的,未提供提交和複製保護。如果應用程式要求可靠的資料傳送應該使用傳輸控制協議 tcp 資料報格式如下 使用...

UDP使用者資料報頭格式

使用者資料報協議是定義用來在互連網路環境中提供包交換的計算機通訊的協議。此協議預設認為網路協議 ip 是其下層協議。此協議提供了向另一使用者程式傳送資訊的最簡便的協議機制。此協議是面向操作的,未提供提交和複製保護。如果應用程式要求可靠的資料傳送應該使用傳輸控制協議 tcp 資料報格式如下 使用者資料...

使用者資料報協議 UDP

udp 簡述 udp只在ip 的資料報服務之上增加了很少一點的功能,即埠的功能和差錯檢測的功能。udp 的主要特點 udp是無連線的 即傳送資料之前不需要建立連線。udp使用盡最大努力交付 即不保證可靠交付,同時也不使用擁塞控制。udp沒有擁塞控制,很適合多 通訊的要求。udp是面向報文的 udp ...