国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于UDP協(xié)議的可靠數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)

2019-11-13 08:40許坤趙亮
科技創(chuàng)新導(dǎo)報(bào) 2019年17期

許坤 趙亮

摘 ? 要:UDP協(xié)議提供面向操作的簡(jiǎn)單而非可靠的數(shù)據(jù)傳輸服務(wù)。為了同時(shí)獲得數(shù)據(jù)傳輸?shù)母咝院涂煽啃?,本文仿照TCP協(xié)議,在應(yīng)用層建立報(bào)文確認(rèn)與超時(shí)重發(fā)機(jī)制,基于UDP協(xié)議設(shè)計(jì)了一種可靠的數(shù)據(jù)傳輸方法并在工程項(xiàng)目中得到了應(yīng)用。本文對(duì)兩種協(xié)議的特點(diǎn)進(jìn)行了探討,基于UDP協(xié)議設(shè)計(jì)了一種可靠的數(shù)據(jù)傳輸方法并在工程項(xiàng)目中得到了應(yīng)用。

關(guān)鍵詞:UDP ?可靠傳輸 ?報(bào)文確認(rèn)與超時(shí)重發(fā)機(jī)制

中圖分類號(hào):TP3017 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A ? ? ? ? ? ? ? ? ? ? ? ?文章編號(hào):1674-098X(2019)06(b)-0007-02

1 ?概述

隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展,網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性、可靠性越來(lái)越得到重視。而數(shù)據(jù)傳輸?shù)男阅芘c選擇使用的網(wǎng)絡(luò)協(xié)議密切相關(guān)。目前應(yīng)用最廣泛的計(jì)算機(jī)協(xié)議是TCP/IP協(xié)議。TCP/IP協(xié)議棧中與數(shù)據(jù)傳輸相關(guān)的協(xié)議主要包括TCP和UDP兩種。這兩種協(xié)議各有優(yōu)勢(shì),TCP協(xié)議面向連接,更加可靠;UDP協(xié)議面向操作,簡(jiǎn)單高效。在一些實(shí)際工程應(yīng)用中,期望同時(shí)獲得數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性、高效性和可靠性。

2 ?UDP協(xié)議與TCP協(xié)議的比較

2.1 TCP協(xié)議的特點(diǎn)

TCP(傳輸控制協(xié)議)提供了一種面向連接的實(shí)現(xiàn)可靠傳輸?shù)耐ㄐ欧绞?。通信雙方經(jīng)“三次握手”機(jī)制進(jìn)入連接狀態(tài)。通過(guò)設(shè)置滑動(dòng)窗口,接收方只允許發(fā)送方發(fā)送其緩沖區(qū)能夠容納的數(shù)據(jù),實(shí)現(xiàn)流量控制。發(fā)送方對(duì)用戶數(shù)據(jù)進(jìn)行分片,由接收方對(duì)分片進(jìn)行重組排序。接收方對(duì)收到的數(shù)據(jù)進(jìn)行校驗(yàn),如果數(shù)據(jù)校驗(yàn)和有差錯(cuò),則丟棄該數(shù)據(jù)。若數(shù)據(jù)校驗(yàn)無(wú)誤,則接收方向發(fā)送方發(fā)出確認(rèn)信息;而發(fā)送方在發(fā)出數(shù)據(jù)后啟動(dòng)定時(shí)器,若超時(shí)未收到確認(rèn)信息則向接收方重新發(fā)出數(shù)據(jù)。

2.2 UDP協(xié)議的特點(diǎn)

UDP(用戶數(shù)據(jù)報(bào)協(xié)議)提供了一種面向操作的簡(jiǎn)單而非可靠的數(shù)據(jù)傳輸服務(wù)。數(shù)據(jù)發(fā)送時(shí)沒(méi)有建立明確的連接,不提供可靠性,也不提供報(bào)文確認(rèn)、分片與重組排序以及流量控制等功能。UDP只負(fù)責(zé)把應(yīng)用層傳來(lái)的數(shù)據(jù)包發(fā)送出去,但不保證數(shù)據(jù)能達(dá)到目的地。因此存在數(shù)據(jù)包丟失、重復(fù)和亂序的可能性。接收端進(jìn)行數(shù)據(jù)校驗(yàn),并丟棄校驗(yàn)和有差錯(cuò)的數(shù)據(jù),這與TCP是相同的。

2.3 UDP與TCP協(xié)議的比較

簡(jiǎn)而言之,UDP與TCP協(xié)議的差異,見表1。

表1可見,在數(shù)據(jù)傳輸?shù)目煽啃陨?,TCP具有顯而易見的優(yōu)勢(shì)。由于建立了明確的連接,加上有確認(rèn)與超時(shí)重發(fā)、流量控制等功能,端與端之間進(jìn)行數(shù)據(jù)傳輸穩(wěn)定可靠。這樣的通信方式比較適合于網(wǎng)絡(luò)環(huán)境復(fù)雜的廣域網(wǎng),數(shù)據(jù)傳輸可能跨越多個(gè)不可預(yù)知的網(wǎng)段的場(chǎng)合。然而,如果我們的應(yīng)用是在網(wǎng)絡(luò)環(huán)境簡(jiǎn)單明確、各網(wǎng)段因素可預(yù)知的局域網(wǎng),或者當(dāng)我們更加強(qiáng)調(diào)數(shù)據(jù)的快速傳輸而不是數(shù)據(jù)的完整性時(shí),UDP是更合適的通信協(xié)議。它的優(yōu)勢(shì)體現(xiàn)在以下幾點(diǎn)。

(1)充分利用局域網(wǎng)本身的可靠性,無(wú)需連接,節(jié)省系統(tǒng)開銷;

(2)不存在分片與重組管理,節(jié)省系統(tǒng)開銷;

(3)無(wú)需對(duì)數(shù)據(jù)分片進(jìn)行確認(rèn),提高了網(wǎng)絡(luò)使用效率;

(4)支持組播和廣播,提高了數(shù)據(jù)傳輸效率。

對(duì)局域網(wǎng)而言,在實(shí)際工程應(yīng)用中,我們可以借鑒TCP的一些特點(diǎn),在UDP的應(yīng)用層進(jìn)行改進(jìn),從而在實(shí)現(xiàn)數(shù)據(jù)高效傳輸?shù)耐瑫r(shí),提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>

3 ?UDP協(xié)議下數(shù)據(jù)可靠傳輸?shù)乃悸?/p>

對(duì)于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)比較簡(jiǎn)單的局域網(wǎng)來(lái)說(shuō),各段網(wǎng)路的性能參數(shù)是可知的,通信質(zhì)量可預(yù)測(cè),可靠性比較好,因此在進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí)建立連接的步驟可以省略。當(dāng)網(wǎng)絡(luò)環(huán)境處于較差狀態(tài)下,可能會(huì)存在小概率的丟包問(wèn)題。解決這一問(wèn)題的方法,是仿照TCP協(xié)議,在應(yīng)用層建立報(bào)文確認(rèn)與超時(shí)重發(fā)機(jī)制。

所謂報(bào)文確認(rèn)與超時(shí)重發(fā)機(jī)制,就是當(dāng)接收方收到來(lái)自發(fā)送方的數(shù)據(jù)報(bào)文后,立即反饋一條確認(rèn)報(bào)文給發(fā)送方;發(fā)送方發(fā)出數(shù)據(jù)報(bào)文后,開啟計(jì)時(shí)器;當(dāng)計(jì)時(shí)達(dá)到某一時(shí)長(zhǎng)仍未收到對(duì)應(yīng)的確認(rèn)報(bào)文,則重新發(fā)出數(shù)據(jù)報(bào)文。采取多次重發(fā)的方法,可以解決偶發(fā)性的丟包問(wèn)題。

4 ?UDP協(xié)議下數(shù)據(jù)可靠傳輸?shù)膶?shí)現(xiàn)

4.1 報(bào)文結(jié)構(gòu)設(shè)置

把UDP數(shù)據(jù)報(bào)分為兩種:數(shù)據(jù)報(bào)文與確認(rèn)報(bào)文。數(shù)據(jù)報(bào)文負(fù)責(zé)傳遞業(yè)務(wù)信息,確認(rèn)報(bào)文負(fù)責(zé)對(duì)收到的數(shù)據(jù)報(bào)文進(jìn)行應(yīng)答。數(shù)據(jù)報(bào)文結(jié)構(gòu)定義見表2。(字段1-3為報(bào)文頭)

確認(rèn)報(bào)文只包含上表中所示的報(bào)文頭,不包含數(shù)據(jù)字段。

對(duì)于發(fā)出的報(bào)文,序列號(hào)從1開始,依次遞增(對(duì)于超時(shí)重發(fā)的報(bào)文則保持原序列號(hào)),到255再循環(huán)回到1。當(dāng)發(fā)出數(shù)據(jù)報(bào)文時(shí),報(bào)文中的確認(rèn)號(hào)設(shè)置為0;當(dāng)發(fā)出確認(rèn)報(bào)文時(shí),確認(rèn)號(hào)設(shè)置為接收到的數(shù)據(jù)報(bào)文的序列號(hào)。

4.2 報(bào)文確認(rèn)與超時(shí)重發(fā)機(jī)制的實(shí)現(xiàn)

首先建立兩個(gè)環(huán)形數(shù)據(jù)緩沖區(qū):報(bào)文緩沖區(qū)、超時(shí)緩沖區(qū),同時(shí)啟動(dòng)一個(gè)定時(shí)器。報(bào)文緩沖區(qū)存放待確認(rèn)報(bào)文,超時(shí)緩沖區(qū)存放超時(shí)表。定時(shí)器周期性發(fā)出消息用于報(bào)文超時(shí)重發(fā)的倒計(jì)時(shí)。超時(shí)表是記錄數(shù)據(jù)報(bào)文的重發(fā)次數(shù)和超時(shí)值的數(shù)據(jù)結(jié)構(gòu),其結(jié)構(gòu)定義見表3。應(yīng)用程序?qū)Πl(fā)出的每條數(shù)據(jù)報(bào)文維護(hù)一個(gè)超時(shí)表,當(dāng)發(fā)出的數(shù)據(jù)報(bào)文得到接收方的確認(rèn)反饋,則把超時(shí)表從超時(shí)緩沖區(qū)中移除。

報(bào)文確認(rèn)與超時(shí)重發(fā)機(jī)制的相關(guān)流程如下。

(1)發(fā)出數(shù)據(jù)報(bào)文,同時(shí)把該數(shù)據(jù)報(bào)文投入報(bào)文緩沖區(qū),把該報(bào)文對(duì)應(yīng)的超時(shí)表投入超時(shí)緩沖區(qū)。超時(shí)表中重發(fā)次數(shù)設(shè)置為初始值0,超時(shí)值根據(jù)需要而定,比如100ms。

(2)收到一條報(bào)文時(shí),先判斷確認(rèn)號(hào)(假設(shè)為ACK)。若ACK為0,表示收到的是數(shù)據(jù)報(bào)文,根據(jù)數(shù)據(jù)報(bào)文的序列號(hào)sn,立即反饋一條確認(rèn)報(bào)文,其確認(rèn)號(hào)設(shè)置為等于sn。若ACK非0,表示收到的是確認(rèn)報(bào)文,下一步操作是在報(bào)文緩沖區(qū)中搜索序列號(hào)等于ACK的待確認(rèn)報(bào)文,并從緩沖區(qū)中移除該報(bào)文,同時(shí)在超時(shí)緩沖區(qū)中搜索序列號(hào)等于ACK的超時(shí)表,并從緩沖區(qū)中移除該超時(shí)表。

(3)周期性發(fā)出消息,而應(yīng)用程序響應(yīng)這個(gè)消息,對(duì)超時(shí)緩沖區(qū)中每個(gè)超時(shí)表的超時(shí)值進(jìn)行倒計(jì)時(shí)更新,一旦某個(gè)超時(shí)表的超時(shí)值歸0,則應(yīng)用程序?qū)⑴袛嗥渲匕l(fā)次數(shù)N:若N=0或1,則N自加1,而超時(shí)值更新為100ms(根據(jù)需要而定),并從報(bào)文緩沖區(qū)中提取與超時(shí)表序列號(hào)對(duì)應(yīng)的數(shù)據(jù)報(bào)文重新發(fā)出;若N=2,則把報(bào)文緩沖區(qū)中與該超時(shí)表序列號(hào)對(duì)應(yīng)的數(shù)據(jù)報(bào)文移除,把該超時(shí)表從超時(shí)緩沖區(qū)中移除。

按照上述方法設(shè)計(jì)的程序,應(yīng)用于某工程項(xiàng)目中,在局域網(wǎng)環(huán)境比較惡劣、報(bào)文擁塞的情況下,測(cè)試了數(shù)據(jù)報(bào)文的丟包率,結(jié)果丟包率為0,達(dá)到了預(yù)期目的。

5 ?結(jié)語(yǔ)

引進(jìn)報(bào)文確認(rèn)與超時(shí)重發(fā)機(jī)制,有效改善了UDP協(xié)議下數(shù)據(jù)傳輸?shù)目煽啃裕谔囟ň钟蚓W(wǎng)環(huán)境中,同時(shí)獲得了實(shí)時(shí)高效與可靠傳輸?shù)奶匦?。在?shí)際工程應(yīng)用中,報(bào)文重發(fā)次數(shù)、重發(fā)超時(shí)時(shí)間、定時(shí)器消息周期等參數(shù),可根據(jù)需要進(jìn)行設(shè)定。

參考文獻(xiàn)

[1] 趙飛,葉震.UDP協(xié)議與TCP協(xié)議的對(duì)比分析與可靠性改進(jìn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,16(9):219-221.

[2] 朱華剛,周祥龍,吳永剛.簡(jiǎn)單可靠實(shí)時(shí)傳送UDP協(xié)議的研究和應(yīng)用[J].水雷戰(zhàn)與艦船防護(hù),2010,18(3):50-53.

[3] 陳佳.基于UDP的數(shù)據(jù)傳輸可靠性保障機(jī)制研究及應(yīng)用[D].西安理工大學(xué),2017.

[4] W.Richard Stevens. TCP/IP詳解 卷1:協(xié)議[M].范建華,胥光輝,張濤,等譯.北京:機(jī)械工業(yè)出版社, 2008.

[5] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2008.

建始县| 沁源县| 青州市| 墨竹工卡县| 罗江县| 蕉岭县| 三江| 淅川县| 平乡县| 赫章县| 永平县| 宁强县| 军事| 镇赉县| 公主岭市| 定陶县| 潜山县| 依安县| 宝清县| 安达市| 阿合奇县| 大新县| 靖安县| 平安县| 南川市| 南和县| 淳化县| 左权县| 隆子县| 瑞安市| 长宁县| 万荣县| 宿州市| 华容县| 永昌县| 台南县| 东辽县| 文登市| 肇源县| 邯郸县| 永善县|