UDP協(xié)議

1 UDP特點(diǎn)

??用戶數(shù)據(jù)報(bào)協(xié)議UDP(User Datagram Protocol)只在IP的數(shù)據(jù)報(bào)服務(wù)至上增加了一點(diǎn)的功能铅搓。這就是復(fù)用和分用功能和差錯檢測的功能舞竿。

?UDP的主要特點(diǎn):
??(1) UDP 是無連接的。即發(fā)送數(shù)據(jù)之間不需要建立連接奉芦,因此減少了開銷和發(fā)送數(shù)據(jù)之間的時(shí)延赵抢。

??(2) UDP使用盡最大努力交付,即不保證可靠交付声功,因此主機(jī)不需要維持復(fù)雜的連接狀態(tài)表烦却。

??(3) UDP是面向報(bào)文的。

??發(fā)送方UDP對應(yīng)用程序交下來的報(bào)文先巴,在添加首部后就向下交付IP層其爵。UDP對應(yīng)用層交下來的報(bào)文,既不合并伸蚯,也不拆分摩渺,而是保留這些報(bào)文的邊界。這就是說剂邮,應(yīng)用層交給UDP多長的報(bào)文摇幻,UDP就照樣發(fā)送,即UDP一次交付一個完整的報(bào)文挥萌。

??因此绰姻,應(yīng)用程序必須選擇合適大小的報(bào)文。若報(bào)文太長引瀑,UDP把它交給IP層后狂芋,IP層在傳送時(shí)可能要進(jìn)行分片,這會降低IP層的效率憨栽。反之帜矾,如果報(bào)文太短,UDP把它交給IP層后徒像,會使IP數(shù)據(jù)報(bào)的首部相對長度太大黍特,也降低了IP層的效率。

??(4) UDP沒有擁塞控制锯蛀。

UDP沒有擁塞控制灭衷,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會使源主機(jī)降低發(fā)送速率,這對實(shí)時(shí)應(yīng)用很重要旁涤。對于一些實(shí)時(shí)應(yīng)用(如IP電話翔曲,實(shí)時(shí)視頻會議等)要求源主機(jī)以恒定的速率發(fā)送數(shù)據(jù)迫像,并且允許網(wǎng)絡(luò)發(fā)生擁塞時(shí)丟失一些數(shù)據(jù),但卻不允許數(shù)據(jù)有太大的時(shí)延瞳遍。

??(5) UDP首部開銷很小闻妓,只有8個字節(jié)。

??當(dāng)然掠械,一些實(shí)時(shí)應(yīng)用需要對UDP的不可靠傳輸會進(jìn)行適當(dāng)?shù)母倪M(jìn)(如前向糾錯或重傳已丟失的報(bào)文)由缆,以減少數(shù)據(jù)的丟失。

2 UDP的首部格式

??用戶數(shù)據(jù)報(bào)UDP有兩個字段:數(shù)據(jù)字段和首部字段猾蒂。首部字段只有8個字節(jié)均唉,由四個字段組成,每個字段長度都是兩個字節(jié)肚菠。


??(1) 源端口:源端口號舔箭。不是必須的,只有在需要對方回信時(shí)選用蚊逢,不需要時(shí)可用全0层扶。

??(2) 目的端口:目的端口號。這在終點(diǎn)交付報(bào)文時(shí)必須使用烙荷。

??(3) 長度:UDP數(shù)據(jù)報(bào)的長度镜会,首部和數(shù)據(jù)部分長度之和,其最小值是8(即UDP用戶數(shù)據(jù)報(bào)沒有數(shù)據(jù)部分)奢讨。

??(4) 校驗(yàn)和:檢測UDP在傳輸中是否出錯稚叹,如果有錯就丟棄。

??當(dāng)運(yùn)輸層IP層收到UDP數(shù)據(jù)報(bào)時(shí)拿诸,就根據(jù)首部中的目的端口扒袖,把UDP數(shù)據(jù)報(bào)通過相應(yīng)的端口交付給上層應(yīng)用進(jìn)程。如果接收方UDP發(fā)現(xiàn)收到的報(bào)文的目的端口號不正確(即不存在對應(yīng)于該端口號的應(yīng)用進(jìn)程)亩码,即丟棄該報(bào)文季率,并由網(wǎng)際控制報(bào)文協(xié)議ICMP發(fā)送“端口不可達(dá)”差錯報(bào)文給發(fā)送方。

在ICMP協(xié)議一文中描沟,在討論Traceroute時(shí)飒泻,就是讓發(fā)送的UDP用戶數(shù)據(jù)報(bào)故意使用一個非法的UDP端口,結(jié)果ICMP就返回一個端口不可達(dá)的差錯報(bào)文吏廉,從而達(dá)到測試的目的泞遗。

3 UDP偽首部和校驗(yàn)和計(jì)算

??UDP檢驗(yàn)和提供差錯檢測功能。在計(jì)算校驗(yàn)和時(shí)席覆,要在UDP用戶數(shù)據(jù)報(bào)之前增加12字節(jié)的偽首部史辙。

所謂“偽首部”是因?yàn)閭问撞坎⒉皇荱DP用戶數(shù)據(jù)報(bào)真正的首部,只是在計(jì)算校驗(yàn)和時(shí),臨時(shí)添加在UDP用戶數(shù)據(jù)報(bào)前面聊倔,得到一個臨時(shí)的UDP用戶數(shù)據(jù)報(bào)晦毙。

??校驗(yàn)和就是按照這個臨時(shí)的UDP用戶數(shù)據(jù)報(bào)計(jì)算來的,偽首部既不向下傳送也不向上遞交耙蔑,僅僅是為了計(jì)算校驗(yàn)和见妒。

??(1) 源IP地址和目的IP地址:和IP數(shù)據(jù)一樣,各占4個字節(jié)甸陌。

??(2) 偽首部第3個字段是全零须揣。

??(3) 協(xié)議字段:以前說過,UDP協(xié)議的協(xié)議字段值是17邀层。

??(4) UDP長度:UDP用戶數(shù)據(jù)報(bào)長度返敬,首部長度和數(shù)據(jù)部分長度之和遂庄。

??UDP計(jì)算校驗(yàn)和的步驟:

(1) 將校驗(yàn)和字段置位0寥院。
(2) 將偽首部和UDP用戶數(shù)據(jù)報(bào)(首部和數(shù)據(jù)部分)看成是以16位為單位的二進(jìn)制組成(如果用戶數(shù)據(jù)報(bào)數(shù)據(jù)部分不是偶數(shù)字節(jié),用0填充)涛目,依次進(jìn)行二進(jìn)制反碼求和秸谢。
(3) 將求和的結(jié)果的反碼寫入校驗(yàn)和字段。

??這里先介紹以下二進(jìn)制反碼求和霹肝,1+1 = 0估蹄,高位進(jìn)1、1 + 0 = 0 + 1 = 1沫换、0 + 0 = 1臭蚁,如果最后一次加法有溢出,結(jié)果需要加1讯赏。如下圖垮兑,一個簡單的二進(jìn)制反碼求和


??下面用一個例子說明下,校驗(yàn)和的計(jì)算漱挎,假設(shè)源IP地址為153.19.0.104系枪,目的IP地址為171.3.14.11,UDP用戶數(shù)據(jù)報(bào)長度為15磕谅,源端口1087私爷,目的端口13。根據(jù)UDP用戶數(shù)據(jù)報(bào)的長度可知膊夹,數(shù)據(jù)部分是7(15 - 8) 字節(jié)衬浑,所以需要用0填充一個字節(jié)使之成為16位(偶數(shù)字節(jié))的整數(shù)倍。



??下圖給出了校驗(yàn)和計(jì)算的過程放刨,每16個二進(jìn)制作為1行工秩,逐行按二進(jìn)制反碼求和,圖中給出了前3行的求和結(jié)果,下面的計(jì)算過程相似拓诸,就略去了侵佃。



??從上可以看出,UDP校驗(yàn)和是把首部和數(shù)據(jù)部分一起校驗(yàn)奠支,而IP校驗(yàn)和僅僅校驗(yàn)IP首部馋辈。

??在接收方,把收到的UDP用戶數(shù)據(jù)報(bào)連同偽首部(以及可能的填充零字節(jié))一起倍谜,按二進(jìn)制反碼求這些16位字的和迈螟,當(dāng)無差錯時(shí)期其結(jié)果應(yīng)為全為1。否則就表明出現(xiàn)了差錯尔崔,接收方就應(yīng)丟棄這個UDP用戶數(shù)據(jù)報(bào)(也可以上交給應(yīng)用層答毫,但附上差錯的警告)。

這種簡單的差錯檢驗(yàn)方法的檢錯能力并不強(qiáng)季春,但是好處是簡單洗搂,處理起來較快。

4 小結(jié)

??
??
??
??
??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末载弄,一起剝皮案震驚了整個濱河市耘拇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宇攻,老刑警劉巖惫叛,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逞刷,居然都是意外死亡嘉涌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門夸浅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仑最,“玉大人,你說我怎么就攤上這事题篷〈噬恚” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵番枚,是天一觀的道長法严。 經(jīng)常有香客問我,道長葫笼,這世上最難降的妖魔是什么深啤? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮路星,結(jié)果婚禮上溯街,老公的妹妹穿的比我還像新娘诱桂。我一直安慰自己,他們只是感情好呈昔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布挥等。 她就那樣靜靜地躺著,像睡著了一般堤尾。 火紅的嫁衣襯著肌膚如雪肝劲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天郭宝,我揣著相機(jī)與錄音辞槐,去河邊找鬼。 笑死粘室,一個胖子當(dāng)著我的面吹牛榄檬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衔统,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼鹿榜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缰冤?” 一聲冷哼從身側(cè)響起犬缨,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棉浸,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刺彩,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迷郑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了创倔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗡害。...
    茶點(diǎn)故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖畦攘,靈堂內(nèi)的尸體忽然破棺而出霸妹,到底是詐尸還是另有隱情,我是刑警寧澤知押,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布叹螟,位于F島的核電站,受9級特大地震影響台盯,放射性物質(zhì)發(fā)生泄漏罢绽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一静盅、第九天 我趴在偏房一處隱蔽的房頂上張望良价。 院中可真熱鬧,春花似錦、人聲如沸明垢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痊银。三九已至史隆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間曼验,已是汗流浹背泌射。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鬓照,地道東北人熔酷。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像豺裆,于是被迫代替她去往敵國和親拒秘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容