亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種多端口自適應UDP通信協(xié)議的制作方法

文檔序號:11517832閱讀:495來源:國知局
一種多端口自適應UDP通信協(xié)議的制造方法與工藝

本發(fā)明屬于通信領域,涉及一種udp通信協(xié)議



背景技術:

udp協(xié)議具有數(shù)據(jù)傳輸時延低、資源開銷小、支持對等的通信方式等特點;但udp協(xié)議本身不可靠,為了保證數(shù)據(jù)的實時可靠傳輸,就需要在應用層進行適當?shù)膫鬏攨f(xié)議設計。查閱文獻,現(xiàn)有的udx協(xié)議,是一種優(yōu)化通用數(shù)據(jù)交換協(xié)議,通過流量控制、中轉模式解析等方式實現(xiàn)可靠傳輸;pudp協(xié)議將數(shù)據(jù)包傳輸控制機制糅合到流量控制當中,實現(xiàn)udp報文的可靠傳輸;udp/nlt協(xié)議是基于網(wǎng)絡編碼技術,使用lt和網(wǎng)絡編碼技術對發(fā)送的數(shù)據(jù)包進行編碼和解碼,減少網(wǎng)絡丟包。上述協(xié)議主要針對端口鏈路不需重建的情況設計實現(xiàn)的,無法保證當嵌入式機載設備重建通信鏈路時實時數(shù)據(jù)不丟失。



技術實現(xiàn)要素:

針對現(xiàn)有技術的不足,本發(fā)明的發(fā)明目的在于提供一種多端口自適應udp通信協(xié)議mp-udp,該協(xié)議通過建鏈、數(shù)據(jù)確認、重傳等機制進行正常通信,在當前通信鏈路重傳三次失敗需要重建時,利用rmp(rank_move_program)算法以自適應的方式遷移到新的端口鏈路上進行通信。并且在simulink中建立客戶端和服務端模型,以圖形化的方法實現(xiàn)了mp-udp協(xié)議。

本發(fā)明的發(fā)明目的通過以下技術方案實現(xiàn):

一種多端口自適應udp通信協(xié)議,應用在客戶端,包含以下步驟:

客戶端的端口與服務器的端口建立通信鏈路的過程;

數(shù)據(jù)傳輸過程;

當當前的通信鏈路的數(shù)據(jù)傳輸出現(xiàn)重建時,主動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程;

以及,被動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程。

依據(jù)上述特征,客戶端的端口與服務器的端口建立通信鏈路的過程為:向服務器的端口發(fā)送塊號為0的通信包,待接收到服務器回復的塊號為0的通信包后,表明通信鏈路建立成功,將該通信鏈路的狀態(tài)標記為正常。

依據(jù)上述特征,數(shù)據(jù)傳輸過程為:

通過通信鏈路向服務器發(fā)送塊號為非0的通信包,若有數(shù)據(jù)需要發(fā)送則在通信包中增加數(shù)據(jù)內(nèi)容;

當收到服務器回復的通信包中的塊號與發(fā)送的通信包中的塊號相等,則向服務器發(fā)送塊號加1的通信包;

依據(jù)上述特征,在客戶端設置環(huán)形緩沖區(qū),環(huán)形緩沖區(qū)附帶讀指針和寫指針,當客戶端有數(shù)據(jù)發(fā)送時,移動寫指針將數(shù)據(jù)寫入環(huán)形緩沖區(qū)中;當讀指針與寫指針不等,則移動讀指針將數(shù)據(jù)從環(huán)形緩沖區(qū)讀走加入通信包中。

依據(jù)上述特征,當當前的通信鏈路的數(shù)據(jù)傳輸出現(xiàn)異常時,主動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程為:

如果收到服務器回復的通信包中的塊號與發(fā)送的通信包中的塊號不相等或者超時未收到服務器回復的通信包,則重發(fā)該通信包,重發(fā)超過3次時,從其余狀態(tài)為正常的通信鏈路中選擇一條通信鏈路重發(fā)該通信包;同時,將當前的通信鏈路的狀態(tài)標記為重建,執(zhí)行所述客戶端的端口與服務器的端口建立通信鏈路的過程;

其中,選擇通信鏈路的方法為:利用rmp算法對除當前正在通信的通信鏈路以外的狀態(tài)為正常的通信鏈路進行一次排序,并將排序結果存儲到隊列queue中,當通信鏈路需要遷移時,隊列queue的第一個元素即為選中的通信鏈路。

依據(jù)上述特征,被動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程為:對除當前正在通信的通信鏈路以外的狀態(tài)為正常的通信鏈路進行監(jiān)聽,到監(jiān)聽到某一通信鏈路有通信包發(fā)送過來時,則遷移到有通信包發(fā)送過來的通信鏈路上執(zhí)行所述數(shù)據(jù)傳輸過程,同時對原通信鏈路執(zhí)行所述客戶端的端口與服務器的端口建立通信鏈路的過程。

一種多端口自適應udp通信協(xié)議,應用在服務器,包含以下步驟:

服務器的端口與客戶端的端口建立通信鏈路的過程;

數(shù)據(jù)傳輸過程;

當當前的通信鏈路的數(shù)據(jù)傳輸出現(xiàn)異常時,主動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程;

以及,被動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程。

依據(jù)上述特征,服務器的端口與客戶端的端口建立通信鏈路的過程為:當服務器的端口接收到客戶端的端口發(fā)送的塊號為0的通信包后,向客戶端的端口回復塊號為0的通信包,表明通信鏈路建立成功,將該通信鏈路的狀態(tài)標記為正常。

依據(jù)上述特征,數(shù)據(jù)傳輸過程為:如果當前接收到的客戶端發(fā)送的通信包的塊號是上次接收到的通信包的塊號加1,則向客戶端回復塊號與接收到的通信包中的塊號相同的通信包,若有數(shù)據(jù)發(fā)送則在通信包中加入數(shù)據(jù)內(nèi)容。

依據(jù)上述特征,在服務器設置環(huán)形緩沖區(qū),環(huán)形緩沖區(qū)附帶讀指針rptr和寫指針wptr,當服務器有數(shù)據(jù)發(fā)送時,移動寫指針將數(shù)據(jù)寫入環(huán)形緩沖區(qū)中;當讀指針與寫指針不等,則移動讀指針將數(shù)據(jù)從環(huán)形緩沖區(qū)讀走加入通信包中。

依據(jù)上述特征,當當前的通信鏈路的數(shù)據(jù)傳輸出現(xiàn)異常時,主動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程為:

如果當前接收到的客戶端發(fā)送的通信包的塊號不是上次接收到的通信包的塊號加1,或者超時未收到客戶端發(fā)送的的通信包,則重發(fā)上次通信包,重發(fā)超過3次時,從其余狀態(tài)為正常的通信鏈路中選擇一條通信鏈路重發(fā)上次通信包;同時,將當前的通信鏈路的狀態(tài)標記為重建,執(zhí)行所述服務器的端口與客戶端的端口建立通信鏈路的過程;

其中,選擇通信鏈路的方法為:利用rmp算法對除當前正在通信的通信鏈路以外的狀態(tài)為正常的通信鏈路進行一次排序,并將排序結果存儲到隊列queue中,當通信鏈路需要遷移時,隊列queue的第一個元素即為選中的通信鏈路。

依據(jù)上述特征,被動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程為:對除當前正在通信的通信鏈路以外的狀態(tài)為正常的通信鏈路進行監(jiān)聽,到監(jiān)聽到某一通信鏈路有通信包發(fā)送過來時,則遷移到有通信包發(fā)送過來的通信鏈路上執(zhí)行所述數(shù)據(jù)傳輸過程,同時對原通信鏈路執(zhí)行所述服務器的端口與客戶端的端口建立通信鏈路的過程。

本發(fā)明的有益效果在于:多端口自適應的udp通信協(xié)議mp-udp,在當前鏈路需要重建時能夠以主動或被動方式自動遷移到新的端口鏈路上繼續(xù)進行數(shù)據(jù)通信,能夠保證實時數(shù)據(jù)包不丟失,通信的可靠性大大提高;同時,利用simulink對客戶端和服務端進行了建模,以模型的方式實現(xiàn)了mp-udp協(xié)議,并對模型進行了測試驗證,從而可以對協(xié)議的邏輯進行直觀的分析判斷;此外,可以將驗證后的模型自動生成c代碼,比傳統(tǒng)手工編碼更可靠,因而可以在嵌入式領域推廣應用。

附圖說明

圖1為實施例中通信包的格式示意圖;

圖2為實施例中數(shù)據(jù)傳輸?shù)牧鞒淌疽鈭D;

圖3為通信鏈路遷移的流程示意圖;

圖4為環(huán)形緩沖區(qū)的結構示意圖;

圖5在simulink中建立的客戶端的模型示意圖;

圖6為rmp算法模型;

圖7在simulink中建立的主動遷移模型的示意圖;

圖8在simulink中建立的客戶端主被動遷移模型的示意圖;

具體實施方式

下面結合附圖和實施例對本發(fā)明作進一步的詳細說明。

1、多端口自適應udp通信協(xié)議:mp-udp協(xié)議

1.1通信格式

mp-udp協(xié)議的通信包分為5個部分,如圖1所示。

1)包頭,包含3個字節(jié):head1,head2,head3;

2)塊號,用一個字節(jié)表示,范圍從0到255;其中,0用來表示第一次建立連接的塊號,1到255代表有效塊號,1到255之間循環(huán)。

3)長度,包含2個字節(jié),記錄整個消息塊的長度。

4)數(shù)據(jù)內(nèi)容,按字節(jié)進行傳輸,最大500個字節(jié)。

5)校驗和,包含2個字節(jié),采用累加和的方式計算校驗位。

1.2通信流程

mp-udp協(xié)議進行通信時,客戶端服務端首先分配n個端口(驗證中n為5),并通過整型數(shù)組linkstatus[n]來記錄每個通信鏈路的通信狀態(tài)。然后分別對5個端口進行udp通信的初始化,成功后進入通信流程。

客戶端通信流程:;

1)客戶端的端口與服務器的端口建立通信鏈路的過程。

5個端口分別給服務器上的5個端口發(fā)送塊號為0的通信包,請求與服務器建立連接,等待接收服務器回復的塊號為0的通信包。收到服務器回復的塊號為0的通信包后,表示該端口的通信鏈路已經(jīng)建立,將通信鏈路的狀態(tài)標記為正常,5條通信鏈路的編號分別為n1、n2、n3、n4、n5。見圖2所示。

2)數(shù)據(jù)傳輸過程。

客戶端通過n1通信鏈路從塊號為1的通信包開始通信,若有數(shù)據(jù)需要發(fā)送則在通信包增加數(shù)據(jù)內(nèi)容;同時對n2~n5鏈路進行監(jiān)聽。

當n1通信鏈路收到的服務器回復的通信包的塊號與發(fā)送的通信包的塊號相等(或者回復的通信包的塊號為1,發(fā)送的通信包塊號為255)時,則表示數(shù)據(jù)包發(fā)送成功,塊號加1發(fā)送下一通信包。見圖2所示。

3)當當前的通信鏈路的數(shù)據(jù)傳輸出現(xiàn)異常時,主動遷移到其它通信鏈路執(zhí)行數(shù)據(jù)傳輸過程。

如果n1通信鏈路收到服務器回復的通信包的塊號與發(fā)送的通信包的塊號不相等或者超時未收到回復,則重發(fā)該通信包(假設為塊號為1的通信包)。塊號為1的通信包重發(fā)超過3次時,將n1通信鏈路的狀態(tài)標記為重建,重新建立鏈路。利用rmp算法,將n1通信鏈路主動遷移到n2通信鏈路上進行通信,在n2通信鏈路上發(fā)送塊號為1的通信包。見圖3所示。

4)被動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程。

當n2~n5中某一通信鏈路監(jiān)聽到通信包,表明服務器主動將通信鏈路遷移到了n2~n5中某一通信鏈路,客戶端以被動方式將通信鏈路遷移到n2~n5中某一通信鏈路,執(zhí)行數(shù)據(jù)傳輸過程,同時重新建立n1通信鏈路。見圖3所示。

服務器通信流程:

1)服務器的端口與客戶端的端口建立通信鏈路的過程。

服務器的5個端口分別等待接收客戶端發(fā)送的塊號為0的通信包,收到0塊通信包后,向客戶端分別回復塊號為0通信包,表示該端口通信鏈路已經(jīng)建立,將通信鏈路的狀態(tài)標記為正常。見圖2所示。

2)數(shù)據(jù)傳輸過程。

服務器通過n1通信鏈路進行通信,同時對n2~n5通信鏈路進行監(jiān)聽。如果當前接收的客戶端發(fā)送的通信包的塊號是上次接收的通信包的塊號加1(或者當前接收塊號為1上次接收塊號為255)時,則收到正確的通信包。

服務端向客戶端回復塊號與客戶端發(fā)送的通信包的塊號相同的通信包,若有數(shù)據(jù)發(fā)送則在通信包中加入數(shù)據(jù)內(nèi)容。見圖2所示。

3)當當前的通信鏈路的數(shù)據(jù)傳輸出現(xiàn)異常時,主動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程。

如果當前接收的客戶端發(fā)送的通信包的塊號不是上次接收的通信包的塊號加1或者超時未收到數(shù)據(jù),則服務端重發(fā)上次通信包(假設塊號為2)。塊號為2的通信包重發(fā)超過3次時,采取主動方式遷移鏈路,將n1通信鏈路的狀態(tài)標記為重建,重新建立鏈路。利用rmp算法,將n1通信鏈路主動遷移到當n2~n5中某一通信鏈路上進行通信,在n2~n5中某一通信鏈路上發(fā)送塊號為2的通信包。見圖3所示。

4)被動遷移到其它通信鏈路執(zhí)行所述數(shù)據(jù)傳輸過程。

當n2~n5中某一通信鏈路監(jiān)聽到通信包,表明客戶端主動遷移了通信鏈路,服務端采取被動方式遷移到n2~n5中某一通信鏈路。見圖3所示。

1.3rmp算法設計

當n1通信鏈路重建時,需要將通信鏈路遷移到能正常通信的n2~n5中某一通信鏈路上。在n個通信鏈路中,可能有一部分通信鏈路正在重建,如果對n個通信鏈路依次進行遍歷查找nk,當網(wǎng)絡環(huán)境比較差,重建鏈路比較多時,效率會很低,同樣可能會造成實時數(shù)據(jù)的丟失。因而設計了rmp算法以快速找到nk鏈路。

設計中每個通信鏈路都有一個狀態(tài)標志linkstatus[n],標記當前通信鏈路的狀態(tài),正常通信狀態(tài)為1,重建或初始化狀態(tài)為0。在n1正常通信時,rmp算法會對其他通信鏈路根據(jù)各自狀態(tài)進行一次快速排序,并將結果存儲到隊列queue中。

這樣當通信鏈路需要遷移時,隊列queue的第一個元素即為選用的通信鏈路。由于各通信鏈路的狀態(tài)都是隨機分布的,只有0或1兩個值,采用快速排序的方法時間最短,時間復雜度為o(nlog2n)。由于排序是在n1鏈路正常通信時進行的,且只排序一次,效率很高。當n1遷移到nk時,能夠保證實時數(shù)據(jù)不丟失。

1.4緩沖區(qū)設計

為了能夠保證收發(fā)數(shù)據(jù)以及鏈路遷移過程中數(shù)據(jù)不會被覆蓋丟失,設計中在客戶端和服務器分別增加了環(huán)形緩沖區(qū),結構如圖4所示。

環(huán)形緩沖區(qū)附帶讀指針rptr和寫指針wptr,初始狀態(tài)rptr和wptr都指向環(huán)形緩沖區(qū)起始地址min,環(huán)形緩沖區(qū)為空。當有數(shù)據(jù)發(fā)送時,移動wptr將數(shù)據(jù)寫入環(huán)形緩沖區(qū)中;wptr與rptr不等,則說明環(huán)形緩沖區(qū)中有數(shù)據(jù)寫入,移動rptr將數(shù)據(jù)從緩沖區(qū)讀走。當wptr和rtpr指向max時,將指針重置為min,實現(xiàn)環(huán)形緩沖區(qū)的循環(huán)讀寫。

2、simulink建立模型

在simulink中建立了客戶端模型和服務器模型,實現(xiàn)了mp-udp協(xié)議。以客戶端模型為例,詳細介紹主動和被動兩種鏈路遷移方式。

2.1客戶端主動遷移模型

客戶端在某一通信鏈路重發(fā)三次失敗后,就會以主動方式遷移到新的通信鏈路,如圖5所示。首先進入rmp_state狀態(tài),利用rmp算法對5路端口進行處理,根據(jù)隊列中queue[0]的值遷移到n1_link至n5_link鏈路中。其中,rmp算法模型如圖6所示,主要包括快速排序quicksort函數(shù)以及隊列操作queueprocess部分。

以n1通信鏈路為例,通信流程如圖7所示。

2.2客戶端被動遷移模型

客戶端監(jiān)聽到當前通信鏈路之外的其他通信鏈路有回復數(shù)據(jù),則進行被動遷移,如圖8所示。首先進入listen_state狀態(tài),通過listen_link函數(shù),對iport以外的其他通信鏈路進行監(jiān)聽,返回狀態(tài)標志ilstatus。根據(jù)ilstatus的值,更新iport的值,被動地將通信遷移到新通信鏈路上。

可以理解的是,對本領域普通技術人員來說,可以根據(jù)本發(fā)明的技術方案及其發(fā)明構思加以等同替換或改變,而所有這些改變或替換都應屬于本發(fā)明所附的權利要求的保護范圍。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1