


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、UDP協(xié)議及分析一、UDP協(xié)議UDP是UserDatagramProtocol的簡稱,中文名是用戶數(shù)據(jù)報協(xié)議,是OSI(OpenSystemInterconnection,開放式系統(tǒng)互聯(lián))參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù),IETFRFC768是UDP勺正式規(guī)范。UD咔IP報文的協(xié)議UDF議的全稱是用戶數(shù)據(jù)報協(xié)議,在網(wǎng)絡(luò)中它與TCPB議一樣用于處理數(shù)據(jù)包,是一種無連接的協(xié)議。在OSI模型中,在第四層一一傳輸層,處于IP協(xié)議的上一層。UDPt不提供數(shù)據(jù)包分組、組裝和不能對數(shù)據(jù)包進行排序的缺點,也就是說,當報文發(fā)送之后,是無法得知其是否安全完整到達的。UDPi來
2、支持那些需要在計算機之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDF議。UDPB議從問世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天UDP05然不失為一項非常實用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。與所熟知的TCP(傳輸控制協(xié)議)協(xié)議一樣,UDPB議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù)OSI(開放系統(tǒng)互連)參考模型,UDPffiTCPt8屬于傳輸層協(xié)議。UD呦議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)包的形式。一個典型的數(shù)據(jù)包就是一個二進制數(shù)據(jù)的傳輸單位。每一個數(shù)據(jù)包的前8個字節(jié)用來包含報頭信息,剩余字節(jié)則用來包含具體
3、的傳輸數(shù)據(jù)。二、UDP協(xié)議的主要特點(1) UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接。(2) UDP使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。(3) UDP是面向報文的。UDP沒有擁塞控制,很適合多媒體通信的要求。(4) UDP支持一對一、一對多、多對一和多對多的交互通信。(5) UDP的首部開銷小,只有8個字節(jié)。三、UDP協(xié)議的使用在選擇使用協(xié)議的時候,選擇UDP®須要謹慎。在網(wǎng)絡(luò)質(zhì)量令人十分不滿意的環(huán)境下,UD呦議數(shù)據(jù)包丟失會比較嚴重。但是由于UDP勺特性:它不屬于連接型協(xié)議,因而具有資源消耗小,處理速度快的優(yōu)點,所以通常音頻、視頻和普通數(shù)據(jù)在傳送時使用U
4、DPR多,因為它們即使偶爾丟失一兩個數(shù)據(jù)包,也不會對接收結(jié)果產(chǎn)生太大影響。比如我們聊天用的ICQ和QCm是使用的UDPfe議四、UDP協(xié)議的報頭面向報文的UDP發(fā)送方UDP對應(yīng)用程序交下來的報文,在添加首部后就向下交付IP層。UDP對應(yīng)用層交下來的報文,既不合并,也不拆分,而是保留這些報文的邊界。應(yīng)用層交給UDP多長的報文,UDP就照樣發(fā)送,即一次發(fā)送一個報文。接收方UDP對IP層交上來的UDP用戶數(shù)據(jù)報,在去除首部后就原封不動地交付上層的應(yīng)用進程,一次交付一個完整的報文。應(yīng)用程序必須選擇合適大小的報文。(1) UDP報文的組成UDP報頭由4個域組成,其中每個域各占用2個字節(jié),具體如下:UDP
5、®端口號、目標端口號、數(shù)據(jù)報長度、校驗值16fcUDP16瓦UDP栓短制Mlgt加有)UDF議使用端口號為不同的應(yīng)用保留其各白的數(shù)據(jù)傳輸通道。UDPTCPW議正是采用這一機制實現(xiàn)對同一時刻內(nèi)多項應(yīng)用同時發(fā)送和接收數(shù)據(jù)的支持。數(shù)據(jù)發(fā)送一方(可以是客戶端或服務(wù)器端)將UD啜據(jù)包通過源端口發(fā)送出去,而數(shù)據(jù)接收一方則通過目標端口接收數(shù)據(jù)。有的網(wǎng)絡(luò)應(yīng)用只能使用預(yù)先為其預(yù)留或注冊的靜態(tài)端口;而另外一些網(wǎng)絡(luò)應(yīng)用則可以使用未被注冊的動態(tài)端口。因為UDP艮頭使用兩個字節(jié)存放端口號,所以端口號的有效范圍是從0到65535。一般來說,大于49151的端口號都代表動態(tài)端口。數(shù)據(jù)報的長度是指包括報頭和數(shù)據(jù)部分
6、在內(nèi)的總字節(jié)數(shù)。因為報頭的長度是固定的,所以該域主要被用來計算可變長度的數(shù)據(jù)部分(又稱為數(shù)據(jù)負載)。數(shù)據(jù)報的最大長度根據(jù)操作環(huán)境的不同而各異。從理論上說,包含報頭在內(nèi)的數(shù)據(jù)報的最大長度為65535字節(jié)。不過,一些實際應(yīng)用往往會限制數(shù)據(jù)報的大小,有時會降低到8192字節(jié)。UDF議使用報頭中的校驗值來保證數(shù)據(jù)的安全。校驗值首先在數(shù)據(jù)發(fā)送方通過特殊的算法計算得出,在傳遞到接收方之后,還需要再重新計算。如果某個數(shù)據(jù)報在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發(fā)送和接收方的校驗計算值將不會相符,由此UDPW議可以檢測是否出錯。這與TC呦議是不同的,后者要求必須具有校驗值。許多鏈路層協(xié)議都提
7、供錯誤檢查,包括流行的以太網(wǎng)協(xié)議,也許你想知道為什么UDPfe要提供檢查和校驗。其原因是鏈路層以下的協(xié)議在源端和終端之間的某些通道可能不提供錯誤檢測。雖然UDPI供有錯誤檢測,但檢測到錯誤時,UDE做錯誤校正,只是簡單地把損壞的消息段扔掉,或者給應(yīng)用程序提供警告信息。UDPHelper是實現(xiàn)對指定UD制口廣播報文的中繼轉(zhuǎn)發(fā),即將指定UD制口的廣播報文轉(zhuǎn)換為單播報文發(fā)送給指定的服務(wù)器,起到中繼的作用.據(jù)UDP的首部格式字節(jié)44112源IP地址目的IP地址017UDP長度源端口目的端口長度檢驗和UDP用戶數(shù)據(jù)報首部數(shù)據(jù)發(fā)送在前IP數(shù)據(jù)報用戶數(shù)據(jù)報UDP有兩個字段:數(shù)據(jù)字段和首部字段。首部字段有8個
8、字節(jié),由4個字段組成,每個字段都是兩個字節(jié)。44112源IP地址目的IP地址017UDP長度字節(jié)122222口為言曲I源端口目的端口長度檢驗和首部數(shù)據(jù)發(fā)送在前了首部數(shù)u據(jù)ip數(shù)據(jù)報五、UDP報文段的校驗UD磴部校驗和的計算ip/icmp/igmp/tcp/udP?協(xié)議的校驗和算法都是相同的,算法如下:在發(fā)送數(shù)據(jù)時,為了計算IP數(shù)據(jù)包的校驗和。應(yīng)該按如下步驟:(1) 把IP數(shù)據(jù)包的校驗和字段置為0;把首部看成以16位為單位的數(shù)字組成,依次進行二進制反碼求和;(2) 把得到的結(jié)果存入校驗和字段中。在接收數(shù)據(jù)時,計算數(shù)據(jù)包的校驗和相對簡單,按如下步驟:把首部看成以16位為單位的數(shù)字組成,依次進行二進
9、制反碼求和,包括校驗和字段;(1) 檢查計算出的校驗和的結(jié)果是否等于零(反碼應(yīng)為16個1);(2) 如果等于零,說明被整除,校驗是和正確。否則,校驗和就是錯誤的,協(xié)議棧要拋棄這個數(shù)據(jù)包。所謂的二進制反碼求和,即為先進行二進制求和,然后對和取反。計算對IP首部檢驗和的算法如下:(1) 把IP數(shù)據(jù)包的校驗和字段置為0;(2) 把首部看成以16位為單位的數(shù)字組成,依次進行二進制求和(注意:求和時應(yīng)將最高位的進位保存,所以加法應(yīng)采用32位加法);(3) 將上述加法過程中產(chǎn)生的進位(最高位的進位)加到低16位(采用32位加法時,即為將高16位與低16位相加,之后還要把該次加法最高位產(chǎn)生的進位加到低16位
10、)12字節(jié)偽首部153.1Q.810417L3.14.11001100100010011153.1900001000011010008.10410101011G000001117130000111000001011f14J18字節(jié)UDP首部1087OOOOOOOQ00010001f。和C70000000000001111i157字節(jié)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)OOOOOlOOQOUUll-1080000000000001101-130000000000001111f150000000000000000i0餐驗和)(4) 將上述的和取反,即得到校驗和。0101010001000101f數(shù)據(jù)0101001
11、101010100f數(shù)據(jù)0100100101001110f數(shù)蠢010001110000000。f數(shù)據(jù)和。(填充)按二進制反碼運算求和W0101101U01101i求和得出的結(jié)吳將得出的結(jié)果求反瑪0110100100010010i檢驗和計算UDP檢驗和的例子六、附:計算UDP檢驗和的代碼/下面代碼片段展現(xiàn)的是在GNU/Linux中具體的計算方式#include<stdint.h>#include<unistd.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netdb.h>#i
12、nclude<netinet/in.h>#include<netinet/ip.h>#include<netinet/ether.h>#include<netinet/udp.h>#include<netinet/tcp.h>structpseudo_headuint32_tsaddr;uint32_tdaddr;charzero;charproto;unsignedshortlen;intcal_cksum(char*p)structiphdr*ip=(structiphdr*)(p+sizeof(structether_heade
13、r);cal_ip_cksum(ip);structtcphdr*tcp;structudphdr*udp;char*f=(char*)ip+20;switch(ip->protocol)caseIPPROTO_TCP:tcp=(structtcphdr*)f;tcp->check=0;tcp->check=cal_udptcp_cksum(unsignedshort*)f,ip);break;caseIPPROTO_UDP:udp=(structudphdr*)f;udp->check=0;udp->check=cal_udptcp_cksum(unsigned
14、short*)f,ip);break;caseIPPROTO_IP:break;default:return1;return0;inlinestaticvoidcal_ip_cksum(structiphdr*ip)ip->check=0;ip->check=in_cksum(unsignedshort*)ip,20,0);<inlinestaticunsignedshortcal_udptcp_cksum(unsignedshort*p,structiphdr*ip)intlen=ntohs(ip->tot_len)-20;structpseudo_headph;ph.len=htons(len);ph.saddr=ip->saddr;ph.daddr=ip->daddr;to=ip->protocol;ph.zero=0;intsum=cal_sum(unsignedshort*)&ph,sizeof(ph);returnin_cksum(p,len,sum);unsignedshortin_cksum(unsignedshort*p,intlen,intsum)intn=len;while(n>1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國透明絲印文件袋市場調(diào)查研究報告
- 2025年中國輪轂表面拋丸清理機市場調(diào)查研究報告
- 2025年中國覆膜塑料編織袋市場調(diào)查研究報告
- 大車駕駛試題及答案
- 高級電工試題及答案
- 運維電工考試試題及答案
- 班委競聘考試題及答案
- 2025年數(shù)字化戰(zhàn)略與風(fēng)險挑戰(zhàn)試題及答案
- 計量作業(yè)考試題及答案
- 西藏郵政考試試題及答案
- GB/T 34016-2017防鼠和防蟻電線電纜通則
- GB/T 22026-2008氣霧劑級丙烷(A-108)
- GB/T 14140-2009硅片直徑測量方法
- 尾礦庫重大風(fēng)險及管控措施
- 國家義務(wù)教育質(zhì)量監(jiān)測科學(xué)模擬測試題附答案
- 康復(fù)訓(xùn)練類輔助器具課件
- PUMA560機器人運動學(xué)分析
- UI界面設(shè)計交互設(shè)計教學(xué)
- 2021版檢定和校準實驗室程序文件
- 鋼箱梁計算分析與案例詳解
- 人工挖孔安全檢查記錄表
評論
0/150
提交評論