引言:
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:國際域名空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、海鹽網(wǎng)站維護、網(wǎng)站推廣。前一個專題簡單介紹了TCP編程的一些知識,UDP與TCP地位相當?shù)牧硪粋€傳輸層協(xié)議,它也是當下流行的很多主流網(wǎng)絡(luò)應(yīng)用(例如QQ、MSN和Skype等一些即時通信軟件傳輸層都是應(yīng)用UDP協(xié)議的)底層的傳輸基礎(chǔ),所以在本專題中就簡單介紹下UDP的工作原理和UDP編程的只是,希望可以對剛接觸網(wǎng)絡(luò)編程的朋友起到入門的作用。
一、UDP介紹
UDP和TCP都是構(gòu)建在IP層之上傳輸層的協(xié)議,但UDP是一種簡單、面向數(shù)據(jù)報(Sock_Dgram)的無連接協(xié)議,提供的是不一定可靠的傳輸服務(wù)。
然而TCP是一種面向連接、可靠的,面向字節(jié)流(Sock_Stream)的傳輸協(xié)議,對于“無連接”是指在正式通信前不必與對方先建立連接,不管對方狀態(tài)如何都可以直接發(fā)送過去(就如QQ中通過QQ號查看好友后發(fā)送添加好友請求,此間不需要考慮對方的狀態(tài)如何,都照樣發(fā)送請求)。從UDP和TCP的定義中就可以看出它們兩者的區(qū)別了,(1)UDP的可靠性不如TCP,因為TCP傳輸前要首先建立連接,這樣就增加了TCP傳輸?shù)目煽啃?,所以UDP也被稱為不可靠的傳輸協(xié)議,關(guān)于TCP的介紹可以看我上一篇博客的介紹。
TCP和UDP還有另外一個區(qū)別。(2)UDP不能保證有序傳輸。即UDP不能確保數(shù)據(jù)的發(fā)送和接收順序。
下面就來看看UDP協(xié)議的工作原理,對UDP的工作原理有一個好的理解,對后面介紹的UDP編程也是一個好的基礎(chǔ)。
1.1 UDP的工作原理
UDP將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)報的形式,每一個數(shù)據(jù)報用8個字節(jié)(8 X 8位=64位)描述報頭信息,剩余字節(jié)包含具體的傳輸數(shù)據(jù)。UDP報頭(只有8個字節(jié))相當于TCP的報頭(至少20個字節(jié))很短,UDP報頭由4個域組成,每個域各占2個字節(jié),具體為源端口、目的端口、用戶數(shù)據(jù)報長度和校驗和,
具體結(jié)構(gòu)見下圖(下面也貼出了TCP報文的結(jié)構(gòu)圖,與UDP數(shù)據(jù)報做一個對比的作用):
UDP協(xié)議和TCP協(xié)議都使用端口號為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道這一機制,數(shù)據(jù)發(fā)送方將UDP數(shù)據(jù)報通過源端口發(fā)送出去,而數(shù)據(jù)接收方則通過目標端口接收數(shù)據(jù)。
1.2 UDP的優(yōu)勢
前面介紹中說UDP相對于TCP是不可靠的,不能保證有序傳輸的傳輸協(xié)議,然而UDP協(xié)議相對于TCP協(xié)議的優(yōu)勢在哪里呢?,
UDP相對于TCP的優(yōu)勢主要有三個方面的:
(1)UDP速度比TCP快。
由于UDP不需要先與對方建立連接,也不需要傳輸確認,因此其數(shù)據(jù)的傳輸速度比TCP快很多。對于一些著重傳輸性能而不是傳輸完整性的應(yīng)用(網(wǎng)絡(luò)音頻播放、視頻點播和網(wǎng)絡(luò)會議等),使用UDP協(xié)議更加適合,因為它傳輸速度快,使通過網(wǎng)絡(luò)播放的視頻音質(zhì)好、畫面清晰。
(2)UDP有消息邊界。
通過UDP協(xié)議進行傳輸?shù)陌l(fā)送方對應(yīng)用程序交下來的報文,在添加首部后就向下直接交付給IP層。既不拆分也不合并,而是保留這些報文的邊界,所以使用UDP協(xié)議不需要像TCP那樣考慮消息邊界的問題,這樣就使得UDP編程相對于TCP在接收到的數(shù)據(jù)處理方面要簡單的多。(對于TCP消息邊界的問題可以查看相關(guān)的文檔,在這里我就不列出來了)
(3)UDP可以一對多傳輸
由于傳輸數(shù)據(jù)部建立連接,也就不需要維護連接狀態(tài),因此一臺服務(wù)器可以同時向多個客戶端發(fā)送相同的信息。利用UDP可以使用廣播或者組播的方式同時向子網(wǎng)的所有客戶端進程發(fā)送信息,廣播和組播的介紹放到后面TCP編程中介紹。
上面介紹了UDP協(xié)議相對于TCP協(xié)議的優(yōu)勢,其中速度快是UDP的最重要的優(yōu)勢,也是像一些網(wǎng)絡(luò)會議、即時通信軟件傳輸層選擇UDP協(xié)議進行傳輸?shù)脑蛩凇?/p>
二、.net平臺對UDP編程的支持
介紹完UDP相對于TCP的優(yōu)勢后,當然很希望在.net平臺下開發(fā)一個基于UDP協(xié)議的一個應(yīng)用了,然后.net平臺下對UDP編程也做了很好的支持,為我們開發(fā)基于UDP協(xié)議的網(wǎng)絡(luò)應(yīng)用提供很多方便之處,下面就簡單介紹.net平臺下對UDP編程的支持(主要介紹提供的類來對UDP協(xié)議進行編程)。
.net類庫中的UdpClient類對基礎(chǔ)的Socket進行了封裝,這樣就在發(fā)送和接受數(shù)據(jù)時不需要考慮底層套接字的收發(fā)時處理的一些細節(jié)問題,這樣為UDP編程提供了方便,也可以提高開發(fā)效率(感覺net就是做這樣的事情的,對一些底層的實現(xiàn)進行封裝,方便我們的調(diào)用,這也體現(xiàn)了面向?qū)ο笳Z言的封裝特性)對于這個的具體的使用我就不做過多的介紹的,在后面的UDP編程的實現(xiàn)部分將會對該類中主要方法的使用,大家可以查看MSDN來查看該類中其他成員的使用: http://msdn.microsoft.com/zh-cn/library/System.Net.Sockets.UdpClient.aspx
三、UDP編程的具體實現(xiàn)
由于UDP進程在通信之前是不需要建立連接,消息接收方可能并不知道是誰給它發(fā)的消息,因此UDP編程分為兩種模式:一種“實名發(fā)送”,即接收方可以由收到的消息得知發(fā)送方進程端口,另外一種則為“匿名發(fā)送”,即接收方并不知道發(fā)給它信息的遠程進程究竟來自哪個端口。下面通過一個winform 程序來演示下UDP的編程:
實現(xiàn)代碼:
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。
網(wǎng)頁標題:[C#網(wǎng)絡(luò)編程系列]專題六:UDP編程-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://www.rwnh.cn/article22/csiccc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站營銷、網(wǎng)站導(dǎo)航、網(wǎng)站策劃、靜態(tài)網(wǎng)站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)