udp的一些簡單記錄

2021-07-02 19:42:06 字數 824 閱讀 7837

udp首部字段如下圖所示

udp是無連線的傳輸協議,

為什麼有了面向連線的可靠資料傳輸協議tcp,還要有udp呢?

2無需建立連線,很明顯tcp傳送資料,需要先進行三次握手,這得耗費一些時間和資源。這是dns建立在udp之上而不是tcp最重要的原因。

3無連線狀態,tcp需要維護一大堆的連線狀態,包括接收,傳送快取,擁塞控制引數,序號,確認號等。而udp則不維護連線狀態,這可以讓主機給更多的使用者提供服務。

4首部分組小,tcp 首部20個位元組,加上實際情況中選項的12個位元組,32個位元組。 而udp只有短短的8個位元組。大大減少了首部的開銷。

對於首部的幾個字段,簡單解釋下,源埠號,目的埠號,分別是源主機傳送訊息的埠號,和目的主機接收訊息的埠號。

長度是指該udp報文段的整個的長度,即首部+資料的長度,這點跟tcp首部的長度字段不同,tcp首部的長度欄位指的是該tcp報文段的首部的長度。長度欄位佔了2個位元組,因此這也限定了乙個udp報文段的最大的長度,2的16次方-1,6w多位元組,如果你從應用層傳送的資料長度-8(udp首部長度)大於這個長度,將會傳送失敗。

檢驗和,提供差錯檢測,怎麼個檢測法呢,檢驗和字段的值是報文段中所有的16位元字相加得到的值取反(求和過程中有溢位都丟掉不要),最後檢驗和字段和資料字段相加若不是得到16個1,則出錯了。

udp雖然不提供可靠資料傳輸服務,但是我們可以在應用層,做一些處理,使我們的應用實現可靠的資料傳輸,如在應用層上做確認與重傳的機制。

vim一些簡單記錄

mac在 usr share vim vimrc linux在 etc vimrc 1 問 後退鍵不能刪除資料,不能往後退怎麼辦?答 在vimrc中加入set backspace 2 2 問 如何控制tab鍵的縮排?答 在vimrc中加入set tabstop 4 任何你想要縮排的字元數 3 問 如...

個人記錄一些簡單好用的方法

資料是後台查詢出來的,放到頁面上。查詢出來的結果集,有資料,那麼對應的核取方塊被選中,沒有就不勾選。選中的怎樣判斷核取方塊元素是否有選中呢。當然樣式什麼的不考慮,就說怎麼判斷的。首先查詢方法用map集合來做。會很簡單,又很方便。首先寫乙個介面 mapmemberresources bigdecima...

boost spirit 的一些記錄

最近的工作跟 boost spirit 多一些,本來想整理乙個較為系統的筆記,不過感覺目前思路還比較凌亂,先隨便記錄一些。spirit 是 boost 中的乙個 ll解析器框架,他完成實現乙個 ebnf 語法解析器的功能,但它的輸入為c 語言。ll parser framework represen...