UDP傳輸概述

2021-08-25 05:59:51 字數 1453 閱讀 6809

因此我們需要一種不可靠但實時性較高(也就是傳輸花銷較低)的傳輸協議,udp就是為此而生的。

使用者資料報協議(udp, user datagram protocol)是一種無連線的傳輸層協議,它不必等待連線建立後才能進行通訊。該服務對資料的傳輸提供不可靠、盡力的傳輸。這意味著資料報是可能被丟失的,也可能出現順序錯誤等現象。

它具有如下明顯的特徵:

無連線性

使用udp時無需建立連線,使用後自然也無需釋放連線。

不可靠性

因為是無連線傳輸,因此它的傳輸是不可靠的,很有可能會出現報文直接丟失的現象。

這種特性適合一些短資料的傳輸,因為對於短資料而言,建立連線的花銷太大了,如dns、dhcp就是採用udp傳輸的。

以報文做邊界

udp對應用層報文封裝、傳輸,但不會拆分,也不合併。因此,udp屬於報文流傳輸。

注意,網路層仍然可以根據mtu對整個報文進行拆分,但這並不是udp的範疇。

無流量控制及擁塞控制

需要使用udp傳輸的資料對連續性的要求更高,因此不能進行流量控制和擁塞控制。

支援各種互動方式

tcp是一對一的連線,而udp由於無連線,所以可以是一對

一、一對多甚至是多對一的。

udp報文格式比較簡單,如下表所示:

大小(位元)

1616

1616

字段源埠

目的埠

長度校驗和資料

它只是將來自應用層的報文在頭部加上8個位元組的udp報頭即可。

源埠

表示源主機上使用的udp埠,這個欄位是可選的,如果不需要目的主機應答則可以設定為0。

目的埠

表示目的主機上使用的udp埠,如果目的主機沒有對應埠的程序,則報文直接丟棄。

長度

標識udp資料報整體長度(包含資料部分),由於它佔2個位元組,因此乙個udp資料報的資料部分理論最大長度為65535位元組,因為udp也是ip資料報,所以要減去ip資料報頭和udp報頭。因此理論最大值為:65507位元組

校驗和

校驗比較特殊,計算時要構造出另一部分的頭部放到udp資料報最前面組合進行計算(但該組合出來的頭部不參與傳輸,僅用於計算校驗和)。校驗也包括資料部分,校驗演算法通常使用crc法。

其另外構造的頭部如下表:

大小(位元)

323288

16欄位

源ip位址

目的ip位址

保留協議

udp長度

UDP傳輸演示

演示1 class senddemo class recedemo 需求 使用udp做乙個鍵盤錄入資料,迴圈傳送資料,當且僅當輸入,886之後,才停止程式 class sendchat bs.close ds.close 接收端 class recechat udp和多執行緒的技術的結合 模仿qq ...

UDP傳輸資料

我們先建立乙個server.js var dgram require dgram var serversocket dgram.createsocket udp4 伺服器異常 serversocket.on error function err 獲取訊息並 出去 serversocket.on me...

UDP傳輸程式設計

在執行的時候需要先執行接收端才可以實現資料傳輸 傳送端 書寫格式 1 給出要傳輸資料的位元組陣列 2 建立資料報 收集和傳送 datagrampacket dp new datagrampacket 資料 ip 埠 datagrampacket的構造方法 1 有位址引數 通常是ip位址 的就是傳送 ...