日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java udp 协议_网络协议 - UDP 协议详解

發(fā)布時(shí)間:2025/3/12 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java udp 协议_网络协议 - UDP 协议详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? 網(wǎng)絡(luò)協(xié)議 - UDP 協(xié)議詳解 基于TCP和UDP的協(xié)議非常廣泛,所以也有必要對(duì)UDP協(xié)議進(jìn)行詳解。@pdai

? UDP概述

UDP(User Datagram Protocol)即用戶(hù)數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無(wú)連接的協(xié)議。在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層。UDP用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶(hù)/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類(lèi)似協(xié)議所掩蓋,但是即使是在今天UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。UDP報(bào)文沒(méi)有可靠性保證、順序保證和流量控制字段等,可靠性較差。但是正因?yàn)閁DP協(xié)議的控制選項(xiàng)較少,在數(shù)據(jù)傳輸過(guò)程中延遲小、數(shù)據(jù)傳輸效率高,適合對(duì)可靠性要求不高的應(yīng)用程序,或者可以保障可靠性的應(yīng)用程序,如DNS、TFTP、SNMP等。

? UDP特點(diǎn)

UDP提供不可靠服務(wù),具有TCP所沒(méi)有的優(yōu)勢(shì): UDP無(wú)連接,時(shí)間上不存在建立連接需要的時(shí)延。空間上,TCP需要在端系統(tǒng)中維護(hù)連接狀態(tài),需要一定的開(kāi)銷(xiāo)。此連接裝入包括接收和發(fā)送緩存,擁塞控制參數(shù)和序號(hào)與確認(rèn)號(hào)的參數(shù)。UCP不維護(hù)連接狀態(tài),也不跟蹤這些參數(shù),開(kāi)銷(xiāo)小。空間和時(shí)間上都具有優(yōu)勢(shì)。

舉個(gè)例子: DNS如果運(yùn)行在TCP之上而不是UDP,那么DNS的速度將會(huì)慢很多。

HTTP使用TCP而不是UDP,是因?yàn)閷?duì)于基于文本數(shù)據(jù)的Web網(wǎng)頁(yè)來(lái)說(shuō),可靠性很重要。

同一種專(zhuān)用應(yīng)用服務(wù)器在支持UDP時(shí),一定能支持更多的活動(dòng)客戶(hù)機(jī)。

分組首部開(kāi)銷(xiāo)小,TCP首部20字節(jié),UDP首部8字節(jié)。

UDP沒(méi)有擁塞控制,應(yīng)用層能夠更好的控制要發(fā)送的數(shù)據(jù)和發(fā)送時(shí)間,網(wǎng)絡(luò)中的擁塞控制也不會(huì)影響主機(jī)的發(fā)送速率。某些實(shí)時(shí)應(yīng)用要求以穩(wěn)定的速度發(fā)送,能容 忍一些數(shù)據(jù)的丟失,但是不能允許有較大的時(shí)延(比如實(shí)時(shí)視頻,直播等)

UDP提供盡最大努力的交付,不保證可靠交付。所有維護(hù)傳輸可靠性的工作需要用戶(hù)在應(yīng)用層來(lái)完成。沒(méi)有TCP的確認(rèn)機(jī)制、重傳機(jī)制。如果因?yàn)榫W(wǎng)絡(luò)原因沒(méi)有傳送到對(duì)端,UDP也不會(huì)給應(yīng)用層返回錯(cuò)誤信息

UDP是面向報(bào)文的,對(duì)應(yīng)用層交下來(lái)的報(bào)文,添加首部后直接鄉(xiāng)下交付為IP層,既不合并,也不拆分,保留這些報(bào)文的邊界。對(duì)IP層交上來(lái)UDP用戶(hù)數(shù)據(jù)報(bào),在去除首部后就原封不動(dòng)地交付給上層應(yīng)用進(jìn)程,報(bào)文不可分割,是UDP數(shù)據(jù)報(bào)處理的最小單位。

正是因?yàn)檫@樣,UDP顯得不夠靈活,不能控制讀寫(xiě)數(shù)據(jù)的次數(shù)和數(shù)量。比如我們要發(fā)送100個(gè)字節(jié)的報(bào)文,我們調(diào)用一次sendto函數(shù)就會(huì)發(fā)送100字節(jié),對(duì)端也需要用recvfrom函數(shù)一次性接收100字節(jié),不能使用循環(huán)每次獲取10個(gè)字節(jié),獲取十次這樣的做法。

UDP常用一次性傳輸比較少量數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用,如DNS,SNMP等,因?yàn)閷?duì)于這些應(yīng)用,若是采用TCP,為連接的創(chuàng)建,維護(hù)和拆除帶來(lái)不小的開(kāi)銷(xiāo)。UDP也常用于多媒體應(yīng)用(如IP電話(huà),實(shí)時(shí)視頻會(huì)議,流媒體等)數(shù)據(jù)的可靠傳輸對(duì)他們而言并不重要,TCP的擁塞控制會(huì)使他們有較大的延遲,也是不可容忍的

UDP 支持一對(duì)一、一對(duì)多、多對(duì)一和多對(duì)多的交互通信。

還要注意的是: IP 數(shù)據(jù)報(bào)要經(jīng)過(guò)互連網(wǎng)中許多路由器的存儲(chǔ)轉(zhuǎn)發(fā);UDP 用戶(hù)數(shù)據(jù)報(bào)是在運(yùn)輸層的端到端抽象的邏輯信道中傳送的。

UDP 對(duì)應(yīng)用層交下來(lái)的報(bào)文,既不合并,也不拆分,而是保留這些報(bào)文的邊界。應(yīng)用層交給 UDP 多長(zhǎng)的報(bào)文,UDP 就照樣發(fā)送,即一次發(fā)送一個(gè)報(bào)文。

? UDP的首部格式

在計(jì)算檢驗(yàn)和時(shí),臨時(shí)把“偽首部”和 UDP 用戶(hù)數(shù)據(jù)報(bào)連接在一起。偽首部?jī)H僅是為了計(jì)算檢驗(yàn)和。

源端口: 占16位、源端口號(hào)。在需要對(duì)方回信時(shí)選用。不需要時(shí)可用全0。

目的端口: 占16位、目的端口號(hào)。這在終點(diǎn)交付報(bào)文時(shí)必須使用。

長(zhǎng)度: 占16位、UDP用戶(hù)數(shù)據(jù)報(bào)的長(zhǎng)度,其最小值是8(僅有首部)。

檢驗(yàn)和: 占16位、檢測(cè)UDP用戶(hù)數(shù)據(jù)報(bào)在傳輸中是否有錯(cuò)。有錯(cuò)就丟棄。

請(qǐng)注意,雖然在 UDP 之間的通信要用到其端口號(hào),但由于 UDP 的通信是無(wú)連接的,因此不需要使用套接字。

? UDP校驗(yàn) UDP校驗(yàn)和的計(jì)算方法和IP數(shù)據(jù)報(bào)首部校驗(yàn)和的計(jì)算方法相似,都使用二進(jìn)制反碼運(yùn)算求和再取反,但不同的是:IP數(shù)據(jù)報(bào)的校驗(yàn)和之檢驗(yàn)IP數(shù)據(jù)報(bào)和首部,但UDP的校驗(yàn)和是把首部和數(shù)據(jù)部分一起校驗(yàn)。

發(fā)送方,首先是把全零放入校驗(yàn)和字段并且添加偽首部,然后把UDP數(shù)據(jù)報(bào)看成是由許多16位的子串連接起來(lái),若UDP數(shù)據(jù)報(bào)的數(shù)據(jù)部分不是偶數(shù)個(gè)字節(jié),則要在數(shù)據(jù)部分末尾增加一個(gè)全零字節(jié)(此字節(jié)不發(fā)送),接下來(lái)就按照二進(jìn)制反碼計(jì)算出這些16位字的和。將此和的二進(jìn)制反碼寫(xiě)入校驗(yàn)和字段。在接收方,把收到得UDP數(shù)據(jù)報(bào)加上偽首部(如果不為偶數(shù)個(gè)字節(jié),還需要補(bǔ)上全零字節(jié))后,按二進(jìn)制反碼計(jì)算出這些16位字的和。當(dāng)無(wú)差錯(cuò)時(shí)其結(jié)果全為1,。否則就表明有差錯(cuò)出現(xiàn),接收方應(yīng)該丟棄這個(gè)UDP數(shù)據(jù)報(bào)。

下圖是計(jì)算UDP校驗(yàn)和的例子:

注意: 校驗(yàn)時(shí),若UDP數(shù)據(jù)報(bào)部分的長(zhǎng)度不是偶數(shù)個(gè)字節(jié),則需要填入一個(gè)全0字節(jié),但是次字節(jié)和偽首部一樣,是不發(fā)送的。

如果UDP校驗(yàn)和校驗(yàn)出UDP數(shù)據(jù)報(bào)是錯(cuò)誤的,可以丟棄,也可以交付上層,但是要附上錯(cuò)誤報(bào)告,告訴上層這是錯(cuò)誤的數(shù)據(jù)報(bào)。

通過(guò)偽首部,不僅可以檢查源端口號(hào),目的端口號(hào)和UDP用戶(hù)數(shù)據(jù)報(bào)的數(shù)據(jù)部分,還可以檢查IP數(shù)據(jù)報(bào)的源IP地址和目的地址。

這種差錯(cuò)檢驗(yàn)的檢錯(cuò)能力不強(qiáng),但是簡(jiǎn)單,速度快。

? 參考文章 https://blog.csdn.net/dog250/article/details/6896949

https://blog.csdn.net/qq_42196196/article/details/83956689

https://cloud.tencent.com/developer/article/1004554

https://blog.csdn.net/aa1928992772/article/details/85240358

總結(jié)

以上是生活随笔為你收集整理的java udp 协议_网络协议 - UDP 协议详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。