柚子快報(bào)邀請(qǐng)碼778899分享:tcp/ip UDP協(xié)議
柚子快報(bào)邀請(qǐng)碼778899分享:tcp/ip UDP協(xié)議
一、UDP協(xié)議端格式
?
1、?源端口號(hào)和目的端口號(hào)
????????端口號(hào)我們都熟悉,取值是0~65535,最多占用16個(gè)比特位,因此用16個(gè)比特位,即2個(gè)字節(jié)表示端口號(hào)。
2、 UDP長(zhǎng)度
????????UDP長(zhǎng)度表示整個(gè)數(shù)據(jù)報(bào)的最大長(zhǎng)度(報(bào)頭+載荷部分),最大值為65535,單位是字節(jié),即一個(gè)UDP數(shù)據(jù)報(bào)的最大長(zhǎng)度是64kb;
3、 UDP校驗(yàn)和
? ? ? ? 校驗(yàn)和用來檢測(cè)網(wǎng)絡(luò)數(shù)據(jù)在傳輸?shù)倪^程中,是否發(fā)生差錯(cuò),即發(fā)送的數(shù)據(jù)和接收的數(shù)據(jù)是否相同。????????
? ? ? ? UDP校驗(yàn)和使用CRC算法(循環(huán)冗余校驗(yàn))來檢測(cè):把UDP報(bào)文中的每一個(gè)字節(jié)的值進(jìn)行累加,并把加和放到一個(gè)大小為2個(gè)子節(jié)的數(shù)字中,不關(guān)心加和溢出問題~最終得到的結(jié)果就是校驗(yàn)和。
? ? ? ? 發(fā)送方發(fā)送的時(shí)候,會(huì)先計(jì)算一個(gè)校驗(yàn)和存放在報(bào)頭中,接收方收到數(shù)據(jù)后,按照同樣的規(guī)則再計(jì)算一次校驗(yàn)和,然后比較兩個(gè)校驗(yàn)和是否相同,相同則接收數(shù)據(jù);不同則直接丟棄數(shù)據(jù)。
二、UDP協(xié)議的特點(diǎn)
1、無(wú)連接
? ? ? ? 客戶端只要知道服務(wù)器的IP和地址,就可以直接進(jìn)行數(shù)據(jù)傳輸,不需要建立連接。
2、不可靠
? ? ? ? 發(fā)送端發(fā)送數(shù)據(jù)報(bào)以后,如果因?yàn)榫W(wǎng)絡(luò)故障等問題無(wú)法發(fā)送給接收端,UDP協(xié)議也不會(huì)給應(yīng)用層返回任何錯(cuò)誤信息。
3、面向數(shù)據(jù)報(bào)
? ? ? ? 接收和發(fā)送數(shù)據(jù)的單位是一個(gè)數(shù)據(jù)報(bào)。應(yīng)用層交給UDP多長(zhǎng)的報(bào)文,UDP原樣發(fā)送,既不會(huì)拆分,也不會(huì)合并。
? ? ? ? 例如:發(fā)送端一次發(fā)送500個(gè)字節(jié)的數(shù)據(jù),那么接收端也必須一次接收500個(gè)字節(jié);不能分成多次接收:100*5,250*2,20*25......
4、全雙工
????????UDP的Socket既能寫數(shù)據(jù),也能讀數(shù)據(jù)。
5、緩沖區(qū)
UDP只有接收緩沖區(qū):
? ? ? ? 注意:網(wǎng)絡(luò)傳輸環(huán)境錯(cuò)綜復(fù)雜,可能會(huì)出現(xiàn)先發(fā)后至,后發(fā)先至的情況,UDP的接收緩沖區(qū)不能保證收到的UDP數(shù)據(jù)報(bào)的順序和發(fā)送方發(fā)送數(shù)據(jù)報(bào)時(shí)的順序一樣;
????????如果接收緩沖區(qū)滿了,后序到達(dá)緩沖區(qū)的UDP數(shù)據(jù)將會(huì)被丟棄。
UDP沒有發(fā)送緩沖區(qū):
????????UDP發(fā)送的數(shù)據(jù)會(huì)直接交給操作系統(tǒng)內(nèi)核,再由內(nèi)核將數(shù)據(jù)傳給網(wǎng)絡(luò)層協(xié)議進(jìn)行后續(xù)的操作;
柚子快報(bào)邀請(qǐng)碼778899分享:tcp/ip UDP協(xié)議
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。