TCP IP協議學習(5) UDP協議

2021-07-24 13:46:05 字數 1469 閱讀 6044

1.udp協議

udp是傳輸層協議,和tcp協議處於乙個分層中,但是與tcp協議不同,udp協議並不提供超時重傳,出錯重傳等功能,也就是說其是不可靠的協議。
2.udp協議頭

2.1.udp埠號

由於很多軟體需要用到udp協議,因此udp協議必須通過某個標誌用以區分不同的程式所需要的資料報。埠號的功能就在於此,例如某乙個udp程式a在系 統中註冊了3000埠,那麼,以後從外面傳進來的目的埠號為3000的udp包都會交給該程式。埠號理論上可以有2^16這麼多。因為它的長度是16個bit
2.2.udp檢驗和

這是乙個可選的選項,並不是所有的系統都對udp資料報加以檢驗和資料(相對tcp協議的必須來說),但是rfc中標準要求,傳送端應該計算檢驗和。

udp檢驗和覆蓋udp協議頭和資料,這與ip的檢驗和是不同的,ip協議的檢驗和只是覆蓋ip資料頭,並不覆蓋所有的資料。udp和tcp都包含乙個偽首部,這是為了計算檢驗和而設計的。偽首部甚至還包含ip位址這樣的ip協議裡面都有的資訊,目的是讓udp兩次檢查資料是否已經正確到達目的地。如果傳送端沒有開啟檢驗和選項,而接收端計算檢驗和有差錯,那麼udp資料將會被悄悄的丟掉(不保證送達),而不產生任何差錯報文。

2.3.udp長度

udp可以很長很長,可以有65535位元組那麼長。但是一般網路在傳送的時候,一次一般傳送不了那麼長的協議(涉及到mtu的問題),就只好對資料分片,當然,這些是對udp等上級協議透明的,udp不需要關心ip協議層對資料如何分片,下乙個章節將會稍微討論一些分片的策略
3.ip分片

ip在從上層接到資料以後,要根據ip位址來判斷從那個介面傳送資料(通過選路),並進行mtu的查詢,如果資料大小超過mtu就進行資料分片。資料的分片是對上層和下層透明,而資料也只是到達目的地還會被重新組裝,不過不用擔心,ip層提供了足夠的資訊進行資料的再組裝。

在ip頭裡面,16bit識別號唯一記錄了乙個ip包的id,具有同乙個id的ip片將會被重新組裝;而13位片偏移則記錄了某ip片相對整個包的位置;而這兩個表示中間的3bit標誌則標示著該分片後面是否還有新的分片。這三個標示就組成了ip分片的所有資訊,接受方就可以利用這些資訊對ip資料進行重新組織(就算是後面的分片比前面的分片先到,這些資訊也是足夠了)。

因為分片技術在網路上被經常的使用,所以偽造ip分片包進行流氓攻擊的軟體和人也就層出不窮。可以用trancdroute程式來進行簡單的mtu偵測。

4.udp伺服器設計

udp協議的某些特性將會影響我們的伺服器程式設計,大致總結如下:

關於資料輸入:通常伺服器系統的每乙個埠號都會和一塊輸入緩衝區對應,進來的輸入根據先來後到的原則等待伺服器的處理,所以難免會出現緩衝區溢位的問題,這種情況下,udp資料報可能會被丟棄,而應用伺服器程式本身並不知道這個問題。

伺服器應該限制本地ip位址,就是說它應該可以把自己繫結到某乙個網路介面的某乙個埠上。

TCP IP 協議之 UDP協議

1 udp 是面向使用者資料報的運輸層協議哈。不可靠,無連線。2 首部 共8b 源埠號 2b 目的埠號 2b udp長度 2b udp校驗和 2b 說明 1 對於udp的埠號,埠號是用來標記應用程序的,tcp和udp可以共用乙個埠號,這可以在ip首部中的協議欄位來區分開來。2 udp長度是首部長度與...

TCP IP 協議 (傳輸層)UDP協議

從之前介紹的網路層協議來看,通訊的兩端是兩台主機,ip 資料報首部就標明了這兩台主機的 ip 位址。但是從傳輸層來看,是傳送方主機中的乙個程序與接收方主機中的乙個程序在交換資料,因此,嚴格地講,通訊雙方不是主機,而是主機中的程序。主機中常常有多個應用程序同時在與外部通訊 比如你的瀏覽器和 qq 在同...

TCP IP協議棧 之 UDP協議

udp是一種基於ip協議的不可靠傳輸協議,在ip資料的位置如下 ip頭部 20位元組 udp頭 8位元組 udp資料 udp協議是tcp ip的傳輸協議的一部分,與tcp的傳輸不一樣,它提供無連線的 不可靠的傳輸服務。udp協議把應用程式需要傳遞的資料傳送出去,不提供傳送資料報的順序 接收方不向傳送...