<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          UDP是什么東西???

          共 2780字,需瀏覽 6分鐘

           ·

          2021-05-02 18:18

          前言

          上一篇說(shuō)了路由協(xié)議相關(guān)知識(shí)點(diǎn),包括如何通過(guò)路由規(guī)則選擇數(shù)據(jù)報(bào)出口,動(dòng)態(tài)路由協(xié)議等信息。

          今天是五一,那么就來(lái)聊一下UDP相關(guān)的知識(shí)點(diǎn),依然是八股文。

          ?

          如果MAC層定義了本地局域網(wǎng)的傳輸行為, IP層定義了整個(gè)網(wǎng)絡(luò)端到端的傳輸行為, 這兩層基本定義了這樣的現(xiàn)象:網(wǎng)絡(luò)傳輸是以包為單位的,二層叫幀,網(wǎng)絡(luò)層叫包,傳輸層叫段。包單獨(dú)傳輸,自行選路,在不同的設(shè)備封裝解封裝,不保證到達(dá)。

          ?

          UDP

          UDP是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)包的運(yùn)輸層協(xié)議

          進(jìn)程的每個(gè)輸出操作都正好產(chǎn)生一個(gè)UDP數(shù)據(jù)報(bào),并組裝成一份待發(fā)送的IP數(shù)據(jù)報(bào)。

          UDP不提供可靠性,只負(fù)責(zé)把應(yīng)用程序傳給IP層的數(shù)據(jù)發(fā)送出去,但并不保證它們能到達(dá)目的地。

          「UDP特點(diǎn)」

          • 溝通簡(jiǎn)單
          • 隨意傳輸,誰(shuí)都可以傳輸數(shù)據(jù)到相應(yīng)端口上
          • 不會(huì)根據(jù)網(wǎng)絡(luò)情況進(jìn)行改變

          1、UDP首部

          端口號(hào)表示發(fā)送進(jìn)程和接收進(jìn)程。

          由于IP層已經(jīng)把IP數(shù)據(jù)報(bào)分配給TCP或UDP(根據(jù)IP首部中協(xié)議字段值)

          因此TCP端口號(hào)由TCP來(lái)查看,而UDP端口號(hào)由UDP來(lái)查看。

          TCP端口號(hào)與UDP端口號(hào)是相互獨(dú)立的。

          UDP長(zhǎng)度字段值是UDP首部和UDP數(shù)據(jù)的字節(jié)長(zhǎng)度。

          最小值為8字節(jié),也就是沒(méi)有數(shù)據(jù)

          IP數(shù)據(jù)報(bào)長(zhǎng)度值是數(shù)據(jù)報(bào)全長(zhǎng),因此UDP數(shù)據(jù)報(bào)長(zhǎng)度是全長(zhǎng)減去IP首部的長(zhǎng)度。

          2、UDP校驗(yàn)和

          UDP檢驗(yàn)和覆蓋UDP首部和UDP數(shù)據(jù),而IP檢驗(yàn)和只覆蓋IP的首部,不涉及到數(shù)據(jù)。

          UDP的檢驗(yàn)和是可選的,而TCP的檢驗(yàn)和是必需的。

          UDP檢驗(yàn)和的基本計(jì)算方法與IP首部檢驗(yàn)和計(jì)算方法類(lèi)似,但存在不同點(diǎn)。

          UDP數(shù)據(jù)報(bào)的長(zhǎng)度可以為奇數(shù)字節(jié),但檢驗(yàn)和算法是把若干個(gè)16bit字相加。解決方法是在必要時(shí)在最后增加填充字節(jié)0,這只是為了檢驗(yàn)和的計(jì)算。

          UDP數(shù)據(jù)報(bào)和TCP端都包含一個(gè)12字節(jié)長(zhǎng)的偽首部,為了計(jì)算檢驗(yàn)和而設(shè)置的。

          偽首部包含IP首部的一些字段,目的是讓UDP兩次檢查數(shù)據(jù)是否已經(jīng)正確到達(dá)目的地。

          如果檢驗(yàn)和的計(jì)算結(jié)果是0,則存入的值為全1(65535),這在二進(jìn)制反碼計(jì)算中是等效的。

          如果傳送的檢驗(yàn)和為0,說(shuō)明發(fā)送端沒(méi)有計(jì)算檢驗(yàn)和。

          如果發(fā)送端沒(méi)有計(jì)算檢驗(yàn)和而接收端檢測(cè)到檢驗(yàn)和有差錯(cuò),那么UDP數(shù)據(jù)報(bào)就要被悄悄地丟棄。

          3、IP分片

          「當(dāng)需發(fā)送的數(shù)據(jù)包大小大于路徑MTU時(shí),就需要進(jìn)行IP數(shù)據(jù)報(bào)分片」

          把一份IP數(shù)據(jù)報(bào)分片以后,只有到達(dá)目的地才進(jìn)行重新組裝。

          重新組裝由目的端的IP層來(lái)完成,目的是使分片和重新組裝過(guò)程對(duì)運(yùn)輸層(TCP和UDP)是透明的。

          已經(jīng)分片過(guò)的數(shù)據(jù)報(bào)有可能會(huì)再次進(jìn)行分片,IP首部中包含的數(shù)據(jù)為分片和重新組裝提供了足夠的信息。

          對(duì)于發(fā)送端發(fā)送的每份IP數(shù)據(jù)報(bào)來(lái)說(shuō),其標(biāo)識(shí)字段都包含一個(gè)唯一值,在數(shù)據(jù)報(bào)分片時(shí)非復(fù)制到每個(gè)片中。

          標(biāo)志字段用其中一個(gè)比特來(lái)表示“更多的片”。

          除了最后一片外,其他每個(gè)組成數(shù)據(jù)報(bào)的片都要把該比特置 1。

          片偏移字段指的是該片偏移原始數(shù)據(jù)報(bào)開(kāi)始處的位置。

          當(dāng)數(shù)據(jù)報(bào)被分片后,每個(gè)片的總長(zhǎng)度值要改為該片的長(zhǎng)度值。

          標(biāo)志字段中有一個(gè)比特稱(chēng)作“不分片”位,如果這一比特為1,IP將不對(duì)數(shù)據(jù)報(bào)進(jìn)行分片。相反把數(shù)據(jù)報(bào)丟棄并發(fā)送一個(gè)ICMP差錯(cuò)報(bào)文。

          當(dāng)IP數(shù)據(jù)報(bào)分片后,每一片都成為一個(gè)分組,有自己的IP首部,并在選擇路由器時(shí)與其他分組獨(dú)立。固有可能在到達(dá)目的端時(shí)失序。

          一片數(shù)據(jù)的丟失也要重傳整個(gè)數(shù)據(jù)報(bào)。因?yàn)閷?duì)數(shù)據(jù)報(bào)分片的是中間路由器,而不是起始端系統(tǒng),后者根本不知道數(shù)據(jù)報(bào)是如何分片的。

          4、ICMP不可達(dá)報(bào)錯(cuò)(需分片)

          發(fā)生ICMP不可達(dá)差錯(cuò)的另一種情況是,當(dāng)路由器收到一份需要分片的數(shù)據(jù)報(bào),而在IP首部又設(shè)置了不分片(DF)的標(biāo)志比特。

          如果路由器沒(méi)有提供過(guò)這種新的ICMP差錯(cuò)報(bào)文格式,那么下一站的MTU就設(shè)為0.

          5、Traceroute

          能深入探索TCP/IP協(xié)議的方便可用的工具。

          不能保證從源端發(fā)往目的端的兩份連續(xù)的IP數(shù)據(jù)報(bào)具有相同的路由。

          開(kāi)始時(shí)發(fā)送一個(gè)TTL字段為1的UDP數(shù)據(jù)報(bào),然后將TTL字段每次加1,以確定路徑中的每個(gè)路由器。每個(gè)路由器在丟棄UDP數(shù)據(jù)報(bào)時(shí)都返回一個(gè)ICMP超時(shí)報(bào)文2,而最終目的主機(jī)則產(chǎn)生一個(gè)ICMP端口不可達(dá)的報(bào)文。

          Traceroute除了能發(fā)現(xiàn)路由之外,還能用它來(lái)確定路徑MTU。

          「確定路徑MTU:」 發(fā)送分組,設(shè)置“不分片”標(biāo)志比特。發(fā)送的第一個(gè)分組長(zhǎng)度正好與出口MTU相等,每次收到ICMP“不能分片”差錯(cuò)是就減少分組的長(zhǎng)度。

          6、最大UDP數(shù)據(jù)報(bào)長(zhǎng)度

          理論上,IP數(shù)據(jù)報(bào)的最大長(zhǎng)速度是65535字節(jié),這是IP首部16比特總長(zhǎng)度字段所限制的。

          去除20字節(jié)的IP首部和8字節(jié)的UDP首部,UDP數(shù)據(jù)報(bào)中用戶(hù)數(shù)據(jù)的最長(zhǎng)長(zhǎng)度為65507字節(jié)。

          但一般實(shí)現(xiàn)所提供的長(zhǎng)度比這個(gè)最大值小。

          兩個(gè)限制因素:

          (1)應(yīng)用程序可能會(huì)受到其程序接口的限制。例如socket API可以設(shè)置接收和發(fā)送緩存的長(zhǎng)度。

          (2)TCP/IP的內(nèi)核實(shí)現(xiàn)。可能存在一些實(shí)現(xiàn)特性(或差錯(cuò)),使IP數(shù)據(jù)報(bào)長(zhǎng)度小于65535字節(jié)。

          7、ICMP源站抑制報(bào)錯(cuò)

          當(dāng)一個(gè)系統(tǒng)接收數(shù)據(jù)報(bào)的速度比其處理速度快時(shí),可能會(huì)產(chǎn)生此報(bào)錯(cuò)。

          「可能」一詞是因?yàn)榧词挂粋€(gè)系統(tǒng)已經(jīng)沒(méi)有緩存并丟棄數(shù)據(jù)報(bào),也不要求它一定要發(fā)送源站抑制報(bào)文。

          UDP與TCP的區(qū)別

          (1) TCP是面向連接的,UDP是面向無(wú)連接的。

          「什么是面向連接?」

          面向連接的協(xié)議會(huì)先建立連接,例如,TCP會(huì)進(jìn)行三次握手,UDP不會(huì)。

          所謂的建立連接,是為了在客戶(hù)端和服務(wù)端維護(hù)連接,而建立一定的數(shù)據(jù)結(jié)構(gòu)來(lái)維護(hù)雙方交互的狀態(tài),用這樣的數(shù)據(jù)結(jié)構(gòu)來(lái)保證所謂的面向連接的特性。

          (2)TCP提供可靠交互,通過(guò)TCP連接傳輸?shù)臄?shù)據(jù),無(wú)差錯(cuò)、不丟失、不重復(fù)、按序到達(dá)。

          而UDP繼承了IP包的特性,不保證不丟失,不保證按順序到達(dá)。

          (3)TCP是面向字節(jié)流的,而UDP繼承了IP的特性,基于數(shù)據(jù)包的,一個(gè)一個(gè)發(fā),一個(gè)一個(gè)收。

          (4)TCP有擁塞控制,根據(jù)接收方的吞吐量控制發(fā)送速度,但UDP沒(méi)有。

          (5)TCP是有狀態(tài)的服務(wù),UDP是無(wú)狀態(tài)服務(wù)。

          使用場(chǎng)景

          • 需要資源少,在網(wǎng)絡(luò)情況較好的內(nèi)網(wǎng),或者對(duì)于丟包不敏感的應(yīng)用。

          • 不需要建立連接,而是可以廣播的應(yīng)用

            DHCP就是一種廣播的形式,基于UDP協(xié)議。

            多播,D類(lèi)地址,也即組播地址。使用此地址可將包組播給一批機(jī)器。

          • 需要處理速度快,時(shí)延低,可以容忍少數(shù)丟包,但是要求即便網(wǎng)絡(luò)擁塞,也不改變發(fā)送速度。


          往期推薦:

          路由協(xié)議

          網(wǎng)關(guān)和路由

          CV工程師用不到的鏈路層知識(shí)點(diǎn)

          星巴克氣氛組電腦是如何獲取IP的

          瀏覽器發(fā)起HTTP請(qǐng)求后經(jīng)歷了什么?

          推薦一個(gè)生產(chǎn)環(huán)境問(wèn)題排查利器

          MySQL系列文章

          k8s全系列文章匯總

          瀏覽 64
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香五月成人网 | 人人草人人摸人人干 | 青青草,十月丁香在线 | 天堂一区二区三区18在线观看 | 99久久精品国产精品有折扣吗 |