sponsored links

面試問到UDP,這樣回答offer拿到手軟

UDP協議,作為一個面試網際網路公司幾乎必問的題目,你真的有回答好嗎?

請你講一下什麼是UDP

請你說一下TCPUDP區別

請你說下UDP在哪些場景用到。

請你說下UDP特性

請你......

(求求你不要再問了,嗚嗚嗚)

面試的時候,UDP回答好了,並且能答到一些讓面試官覺得眼前一亮的點,會給你面試加不少分,並且作為一個基礎問題,更能看出候選人的基礎到底牢不牢固,這個問題沒有回答好,基本就與offer失之交臂。所以讓我們一起來快樂的學習下UDP吧~

推薦影片:

騰訊一面題: UDP如何實現可靠性傳輸?

網路原理tcp/udp,網路程式設計epoll/reactor,面試中正經“八股文”

直播學習地址:C/C++Linux伺服器開發/後臺架構師【零聲教育】-學習影片教程-騰訊課堂

UDP它是一種使用者資料報協議,即User Datagram Protocol。UDP和TCP都屬於運輸層協議中的一種

面試問到UDP,這樣回答offer拿到手軟

UDP的主要特點有:

1.UDP是無連線的,所以在傳送資料前和傳送資料後,都不需要建立連線和斷開連線,減少了開銷

2.UDP使用盡最大努力交付,即UDP它不保證可靠交付,這個我稍後會舉一個例子,說明什麼是盡最大努力交付。

3.UDP是面向報文的,傳送方的UDP只在應用程式交下來的報文添加了首部後就交付給IP層。UDP對應用層交下來的報文,既不合並,也不拆分,也就是說應用層交給UDP多長的報文,UDP就照樣的傳送,UDP一次交付一個完整的報文。為了提高效率,應用程式必須選擇合適大小的報文,如果報文過長,那麼UDP把它交給IP層,IP層可能需要進行分片;如果報文太短,會使得IP資料報的首部相對長度較大,兩種情況都會使得IP層的效率降低。

4.UDP沒有擁塞控制,所以當網路出現擁塞的時候不會使得源主機的傳送速率降低,這非常適用於對實時性要求高的應用,比如實時視訊會議等等,它要求源主機以恆定的速率傳送資料,並且允許在網路發生擁塞的時候丟失部分資料,對時延要求較高(當很多源主機都同時向網路傳送高速率的實時影片流時,網路就有可能傳送擁塞,所以不適用擁塞控制功能的UDP是有可能會引起網路產生嚴重擁塞的問題)。

5.UDP支援一對一,一對多,多對一和多對多的互動通訊

6.UDP的首部開銷小,只有8個位元組,相對於TCP的20位元組,要短很多。

面試問到UDP,這樣回答offer拿到手軟

使用者資料報UDP包含有兩個欄位,一個是首部欄位,另外一個是資料欄位。首部欄位有8個位元組,分別由四種資訊組成,每個資訊長度都是為2個位元組的。

1.源埠:源主機的傳送該資訊的埠號,如果不需要對方回信,則可以置為0。

2.目的埠:目的地的埠號,在終點交付報文的時候需要用到。

3.長度:UDP使用者資料報的長度。

4.檢驗和:檢測UDP使用者資料報在傳輸中是否有錯。

面試問到UDP,這樣回答offer拿到手軟

接下來我們來討論下它是如何盡最大努力交付

【文章福利】需要C/C++ Linux伺服器架構師學習資料加群812855908(資料包括C/C++,Linux,golang技術,核心,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,ffmpeg,大廠面試題 等)

面試問到UDP,這樣回答offer拿到手軟

首先在傳送方,在傳送前,會先生成一個偽首部,這個偽首部既不向下傳遞也不向上遞交,只是為了做檢驗和臨時生成的,在傳送方填完檢驗和欄位到UDP首部後,就會去除偽首部。

偽首部是12位元組大小,包括有分別都是4位元組的源IP地址,目的IP地址,1個位元組的全0,和儲存1個位元組大小的17(UDP在IP報文的協議號是17),最後2位元組儲存UDP使用者資料報的長度

也許有人就會問了,要這個1位元組的全0有什麼用呢?因為為了做檢驗和,UDP把偽首部和UDP使用者資料報看做由許多16位的字(即兩個位元組)組成起來的。那麼偽首部有12位元組,可以分為6個字,UDP首部有8個位元組,共4個字,UDP資料部分如果是奇數個位元組,那麼就需要填入一個全零的位元組(這個位元組不會發送),籌齊16位的字。然後把這些資料透過二進位制的方式加起來,然後取它們的反碼,寫入檢驗和欄位中。需要注意的是,因為校驗和是16位大小的,即兩個位元組。我們在計算的過程中可能會發生進位的情況,這個時候需要把高位溢位的數移到最低位相加

例子:

  1111 1111 1111 1111
+0000 0000 0000 0001
——————————————————————
  0000 0000 0000 0001
取反:1111 1111 1111 1110

這個時候1111 1111 1111 1110就會填入檢驗和。接收方在接收的時候,會透過獲得的UDP使用者協議報生成偽首部,然後把資料分成16位的字再次加起來,這次不取反碼了,直接和UDP首部中的檢驗和做加法,如果得到的是全1,那麼代表使用者資料報在傳輸的過程沒有丟失,如果出現的不是全1,則代表有差錯,接收方就應該丟棄這個UDP使用者資料報

但是這也僅僅只能解決資料缺失的問題,如果這裡面16bit資料做了位置交換,那麼UDP是檢測不出來的。但是也有許多技術是使用到的UDP協議,包括有:TFTP,SNMP,NFS,DNS,BOOTP等。

這裡和大家在科普一個知識點,QQ傳送訊息使用的就是UDP協議,大家也許會驚訝說,這怎麼可能?UDP有亂序和丟包問題,使用QQ傳送訊息從來沒見過亂序的情況呀,洪爵你是不是在吹牛。

這是真的,UDP是運輸層協議,它本身不能保資料的順序性,但是QQ是在其之上的應用層去保證了它的順序性,如果大家感興趣,洪爵可以出一期影片給大家演示一下它是如何做到的。什麼?我怎麼知道大家感不感興趣?大家可以透過讚賞本篇文章...咳咳,公眾號給我發信息呀,告訴洪爵想要看(讚賞的話就更好了)。

好的,咱們繼續聊UDP,大家知道UDP資料報能傳送的最大長度嗎?

之前有說到,UDP首部中有2個位元組儲存了UDP的使用者資料報的長度,那麼2個位元組即16位,所以UDP使用者資料報最大長度不能超過2^16-1 = 65535位元組UDP首部佔用了8個位元組,IP層首部佔用了20個位元組,那麼就只剩下65535-8-20=65507個位元組;除此之外,能限制UDP使用者資料報長度的還有UDP的緩衝區大小,所以UDP能傳送的最大長度 = min(緩衝區大小,65507),然而這就是最終結果嗎?當然不是,得出來的只是理想的最長長度,因為還有最後一層能控制UDP傳輸長度的情況,就是MTU的大小(最大傳輸單元,Maximum Transmission Unit)。乙太網資料幀的長度必須在46-1500位元組之間,這是由乙太網的物理特性決定的,這個1500位元組被稱為鏈路層的MTU。

面試問到UDP,這樣回答offer拿到手軟

不過鑑於Internet上的標準MTU值為576位元組,所以建議在進行Internet的UDP程式設計時,最好將UDP的資料長度控制在 (576-8-20)548位元組以內。並且Internet上許多路由器也是為576,所以為了適配,設定為500+為最理想,騰訊遊戲使用的MTU就是500+。

難道說要傳送UDP資料報只能傳送小於等於MTU大小的嗎?其實UDP並不會受到MTU的影響,MTU只會影響下層IP分片,如果你傳送數倍於MTU的資料,導致IP層大量分片,這種情況下,如果某個分片丟失了,就會導致整個UDP資料報無效。所以一般不會去傳送過大的UDP使用者資料報。

面試問到UDP,這樣回答offer拿到手軟

UDP,應該說UDP所在的運輸層還有一個很重要的功能:複用分用

同一時間可能有多個應用程式與外界程序進行互動,這個時候大家都可以透過運輸層傳送到IP層(網路層)。

接收端在接收UDP後,如果發現收到的報文中的目的埠號不正確,就會丟棄這個報文,並且透過網際控制報文協議ICMP傳送“埠不可達”差錯報文給傳送方。如果正確,則會把UDP使用者資料報透過相應的埠,上交到對應埠號的應用程序。

好啦,UDP就講到這裡了,相信大家啃完這篇文章,面試再回答UDP就能完虐面試官。

分類: 歷史
時間: 2021-11-11

相關文章

山西,為什麼如此重要?

山西,為什麼如此重要?
山西,為什麼如此重要? 有人說,山西不就有煤老闆和暴發戶嗎 這種看法真的是傷透了山西人的心 事實上,很多人並不瞭解山西 更不瞭解山西為何如此重要 有人說, 如果你還沒來過山西旅行 那你一定在準備的路上 ...

1969年,克格勃派漢奸潛入中國,炸蘇軍被繳坦克,因10元鈔票敗露

1969年,克格勃派漢奸潛入中國,炸蘇軍被繳坦克,因10元鈔票敗露
1969年3月15日,蘇共第一書記勃列日涅夫.國防部長格列奇科等人正在匈牙利布達佩斯與華沙條約國首腦開會.當天晚上,格列奇科拿著一份報告,急匆匆地敲開了勃列日涅夫的房門. 勃列日涅夫看完報告,鄒了鄒眉 ...

辛亥革命110週年,盤點獨立的十五個省份各位都督的迥異人生

辛亥革命110週年,盤點獨立的十五個省份各位都督的迥異人生
#紀念辛亥革命110週年# 1911年10月10日,武昌起義爆發,第二天宣佈湖北獨立,成立湖北軍政府. 隨後幾個月內,革命席捲全國.關內的十八個省或起義.或宣佈獨立,最終湖北.湖南.陝西.江西.山西. ...

播出3集就拿下收視第一!毛衛寧一出手,就給央視帶來了“王炸”

播出3集就拿下收視第一!毛衛寧一出手,就給央視帶來了“王炸”
2015年一部名為<平凡的世界>的電視劇播出後,猶如平地驚雷迅速走紅於千家萬戶. 這部承載了普通人奮鬥史的電視劇播出後,一方面表達了影視劇的藝術性,另一方面也向觀眾傳遞了正確的觀念. 這就 ...

賀老總說我是師長你是軍長你來指揮,軍長推脫,結果由旅長指揮

賀老總說我是師長你是軍長你來指揮,軍長推脫,結果由旅長指揮
上世紀三.四十年代,日本侵略者在中國的廣大土地上犯下了深厚的罪孽. 從1937年開始,日軍蓄意發動了盧溝橋事變,開始針對整個中國進行攻擊,兩黨政府意識到現在正到了民族生死存亡之際,必須要攜手共同抗日. ...

“如果我的跟腱沒撕裂,我會成為全明星”

“如果我的跟腱沒撕裂,我會成為全明星”
今年總決賽雄鹿的場邊出現了一位老熟人,布蘭登-詹寧斯.他作為雄鹿名宿被邀請見證雄鹿奪冠.第六場時,雄鹿主場高喊"Bucks In 6",詹寧斯不會對這句話感到陌生. 詹寧斯在201 ...

山西王閻錫山的妹妹,沒來得及跟哥哥逃到臺灣,她的結局如何呢?

山西王閻錫山的妹妹,沒來得及跟哥哥逃到臺灣,她的結局如何呢?
1949年,雙手沾滿中國人民鮮血的國民黨軍閥閻錫山,隨著潰敗的國民黨軍隊,經南京倉皇逃往臺灣,甚至連照顧自己許久的堂妹閻慧卿都沒來得及帶上. 閻慧卿因此未能逃往臺灣,就這樣被留在了將要宣告解放的大陸. ...

山西:3000餘名農業幹部專家為災區農民紓危解困
來源:人民網 人民網太原10月12日電(雷昊)10月2日至7日連續強降水過程,疊加入秋以來幾次強降水,造成山西省76個縣在田作物受災.畜禽圈舍倒塌.農田及設施毀損,秋收秋種秋耕推遲,對"三秋 ...

土匪齊達榜1968年刑滿回鄉,舉報7旬老農:5名黨高階幹部被他害死

土匪齊達榜1968年刑滿回鄉,舉報7旬老農:5名黨高階幹部被他害死
在解放戰爭中,共產主義戰士們除了和國民黨反動派作戰,其實還有一個十分重要的敵人--土匪,當時的中國非常混亂,很多窮人百姓活不下去只能落草為寇,其中有些人本性不壞,所以也不亂來,只做些劫富濟貧的事,一部 ...

徐向前深秋回山西老家,姑姑見了心疼:這大官穿得不如老百姓暖和

徐向前深秋回山西老家,姑姑見了心疼:這大官穿得不如老百姓暖和
1937年8月,抗日民族統一戰線形成,紅軍改編成八路軍,名義上隸屬在第二戰區司令長官閻錫山麾下.為此,中央決定派周恩來.彭德懷到山西跟閻錫山談判,毛澤東主席特別指示時任129師副師長徐向前同行.臨行前 ...

山西怎麼辦?

山西怎麼辦?
每個省,有每個省的宿命. 壹 2020年中國各省GDP排名出來之後,廣東與江蘇眼見和其他各省拉開了距離,兩位土豪相視一笑,點了點頭:江西知道自己努把力還能再上一個身位,不由望著陝西搓了搓手,但他也知道 ...

山西90歲老兵,證件丟了無法證明身份,指著博物館牆上:這就是我

山西90歲老兵,證件丟了無法證明身份,指著博物館牆上:這就是我
常說"不能讓英雄流血又流淚",對於那些生活在我們周圍默默守護著我們的人來說,他們或許並沒有那麼的引人注目,但是,卻不可或缺. 曾經有這樣一個人,他叫做郝志全,是一位參加過抗日戰爭的 ...

大決戰:劉鄧大軍帶走全部主力,徐帥靠什麼解放山西?

大決戰:劉鄧大軍帶走全部主力,徐帥靠什麼解放山西?
1947年,解放戰爭進入第二年,戰況越發膠著危急.毛主席目光如炬.知人善用,力派徐向前回到山西老家,出任晉冀魯豫軍區副司令,接替劉鄧主持軍事. 徐帥到任沒多久,就一鳴驚人. 他連續發動運城.臨汾.晉中 ...

林彪的重點主義:自己只抓打仗,幹部提升也不管,由羅榮桓定奪

林彪的重點主義:自己只抓打仗,幹部提升也不管,由羅榮桓定奪
作者:桅杆 林彪在戰爭年代被稱為戰神.後來由於眾所周知的原因,對其評價是黑白兩極,成為最具爭議的人物之一.其實,戰爭年代的林彪,在為人處事及性格等方面上也是黑白分明.這究竟是巧合還是宿命,真的難以說清 ...

唯一一位沒被授銜的兵團司令,44歲任山西省委書記,後官至副國級

唯一一位沒被授銜的兵團司令,44歲任山西省委書記,後官至副國級
說起程子華,大家可能有點陌生.沒聽過程子華,你一定聽說過"三大改造".程子華就是"三大改造"的提出者. 程子華不光在經濟上有一番作為,在軍事上,更是戰功赫赫,被 ...

山西末代巡撫陸鍾琦父子死之謎:到任僅23天就慘遭滅門

山西末代巡撫陸鍾琦父子死之謎:到任僅23天就慘遭滅門
圖 陸鍾琦 關於清朝最後一任山西巡撫陸鍾琦的死一直眾說紛紜,有人說他是革命刀下新舊社會交替的替死鬼,有人說他是革命者自證革命嚴肅性的劫數,還有人說他完全可以不用死.說法眾多,似乎內情豐富. 圖 清朝末 ...

山西財經大學2021年錄取分數線

山西財經大學2021年錄取分數線
山西財經大學 山西財經大學始建於1951年,是一所歷史悠久.特色鮮明的高等院校,坐落於素有"龍城"之稱的國家歷史文化名城.山西省省會太原市.前身是山西省銀行幹部學校.商業幹部學校. ...

1969年山西女子監獄轉來一位老婦,說是毛澤東鄰居,人們以為吹牛

1969年山西女子監獄轉來一位老婦,說是毛澤東鄰居,人們以為吹牛
1969年,山西榆次女子監獄轉來一位身份有點神秘的老太太,她個子不高,衣著樸素,兩鬃斑白,已經六十多歲,怎麼看都是位普普通通的老人.但是跟別的犯人比起來,她有點不普通,她情緒穩定,對工作認真負責.打飯 ...

閻錫山初見彭德懷,久久盯著他,半天才緩過神來,心裡五味雜陳

閻錫山初見彭德懷,久久盯著他,半天才緩過神來,心裡五味雜陳
1936年8月26日,朱德.彭德懷簽發了<八路軍總指揮部佈告>: 本軍奉命抗日 為求民族生存 擁護中央領導 驅逐日寇出境 團結全國各界 聯合法蘇美英 保衛中華領土 收復失地完整 實行統一戰 ...

日軍投降時暗中在山西留下一支部隊,徐向前:堅決消滅!結果如何

日軍投降時暗中在山西留下一支部隊,徐向前:堅決消滅!結果如何
(說歷史的女人--第1697期) 畢業於黃埔一期的徐向前將軍一生戰功赫赫,後來位列十大元帥可謂實至名歸.本文來敘說一下徐向前在解放戰爭中濃墨重彩的一筆:1945年,日軍投降時暗中在山西留下一支部隊,以 ...