計(jì)算機(jī)網(wǎng)絡(luò)3-運(yùn)輸層-UDP

計(jì)算機(jī)網(wǎng)絡(luò)3-運(yùn)輸層-UDP

本文主要分為以下幾個(gè)部分講解。

  1. 介紹udp
  2. 說明udp分組的格式
  3. udp提供的服務(wù)
  4. 說明如何計(jì)算可選的檢驗(yàn)和

UDP報(bào)文

udp是一種無連接 不可靠的運(yùn)輸協(xié)議。

udp的分組叫做用戶數(shù)據(jù)報(bào),它有8個(gè)字節(jié)的固定首部。

img

  • 源端口號(hào):源主機(jī)上運(yùn)行的進(jìn)程所使用的端口號(hào)
  • 目的端口號(hào):目的主機(jī)上進(jìn)程所使用的端口號(hào)
  • 總長度:這是一個(gè)16位的字段,它定義了用戶數(shù)據(jù)報(bào)的總長度,首部加上數(shù)據(jù)。16位可定義的總長度是從0到65535字節(jié)。實(shí)際上總長度必須比這個(gè)數(shù)小,因?yàn)閡dp用戶數(shù)據(jù)要放在總長度65535字節(jié)的ip數(shù)據(jù)報(bào)中。
  • 檢驗(yàn)和:這個(gè)字段用來檢驗(yàn)整個(gè)數(shù)據(jù)報(bào)出現(xiàn)的差錯(cuò)。

UDP服務(wù)

  1. udp使用套接字提供進(jìn)程到進(jìn)程的服務(wù)。

  2. 無連接服務(wù):udp提供無連接服務(wù),意味著每一個(gè)用戶數(shù)據(jù)報(bào)都是獨(dú)立的數(shù)據(jù)報(bào)。

  3. 不提供流量控制

  4. 差錯(cuò)控制,除了檢驗(yàn)和之外,沒有其他機(jī)制、這就表示發(fā)送方并不知道報(bào)文是丟失了還是重復(fù)交付了,當(dāng)接收方通過檢驗(yàn)和檢測出差錯(cuò)時(shí),就悄悄地講這個(gè)用戶數(shù)據(jù)報(bào)丟掉。偽首部是封裝用書包的那個(gè)ip分組的首部的一部分,其中有些字段要填入0。其中有一個(gè)協(xié)議字段是為了確保這個(gè)分組屬于udp,值為17,如果這個(gè)值在傳輸過程中改變了,接收端計(jì)算檢驗(yàn)和就可能檢測出來,udp就會(huì)放棄這個(gè)分組。

  5. 不提供擁塞控制

  6. 封裝和解封

    當(dāng)進(jìn)程有報(bào)文要通過udp發(fā)送,他就把這個(gè)報(bào)文連同一堆套接字地址以及數(shù)據(jù)的長度傳遞給udp。udp收到數(shù)據(jù)后添加一個(gè)udp首部。然后udp把這個(gè)用戶數(shù)據(jù)報(bào)連同套接字一起傳遞給ip。ip再加上自己的首部。在協(xié)議字段使用值17,支出該數(shù)據(jù)是從udp協(xié)議來的。然后再把這個(gè)ip傳遞給鏈路層,封裝成幀,再傳遞給物理層。物理層把比特編碼成電信號(hào)和光信號(hào),發(fā)送到遠(yuǎn)程的機(jī)器上。

  7. 排隊(duì)

    udp中,隊(duì)列和端口相關(guān)聯(lián)。

    在客戶端,當(dāng)一個(gè)進(jìn)程啟動(dòng)時(shí),他從操作系統(tǒng)哪里請求得到一個(gè)端口號(hào)。有些實(shí)現(xiàn)為每個(gè)進(jìn)程創(chuàng)建一個(gè)如隊(duì)列和一個(gè)出隊(duì)列與之相關(guān)。

    在服務(wù)器端,創(chuàng)建隊(duì)列的機(jī)制是不同的,在最簡單的形勢下,服務(wù)器進(jìn)程在它開始運(yùn)行時(shí)就請求為他的熟知端口創(chuàng)建如隊(duì)列和出隊(duì)列。只要服務(wù)器進(jìn)程一直運(yùn)行,這些對列就一直是打開的、

    所有發(fā)送給某個(gè)特定服務(wù)器程序的入報(bào)文,不管是來自相同的或者是不用的客戶,都會(huì)被放入到一個(gè)隊(duì)列。入隊(duì)列可能會(huì)溢出。若發(fā)生溢出,udp就會(huì)丟棄這個(gè)用戶數(shù)據(jù)報(bào),并請求向客戶發(fā)送端口不可達(dá)。

    當(dāng)服務(wù)器想要回答客戶時(shí),他就要在請求中之名的源端口把報(bào)文送到出隊(duì)列。

  8. 復(fù)用和分用

    主機(jī)上只有一個(gè)udp,但可能多個(gè)進(jìn)程希望使用udp服務(wù)。那么udp進(jìn)行復(fù)用和分用,
    復(fù)用:在發(fā)送端根據(jù)指定不同的端口號(hào)來區(qū)分。分用,根據(jù)目的端口號(hào),吧每一個(gè)報(bào)文交付給適當(dāng)?shù)倪M(jìn)程。

UDP應(yīng)用

  • udp使用與只要求簡單的請求-響應(yīng)通信的進(jìn)程。
  • udp適用于具有內(nèi)部流量控制和差錯(cuò)控制機(jī)智的進(jìn)程,例如簡單文件傳輸協(xié)議(TFTP)
  • 對于多播來說,udp是一個(gè)合適的運(yùn)輸協(xié)議。
  • 適用于管理進(jìn)程,如snmp
  • 適用于某些路由選擇更新協(xié)議。
  • 適用于實(shí)時(shí)應(yīng)用,他們不能容忍在就收報(bào)文的各個(gè)片段之間存在變化的時(shí)延。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容