亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于滑動窗口的半雙工通信方法及系統(tǒng)的制作方法

文檔序號:7809541閱讀:244來源:國知局
一種基于滑動窗口的半雙工通信方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明適用于通信【技術領域】,提供了一種基于滑動窗口的半雙工通信方法及系統(tǒng),所述方法包括:發(fā)送端向接收端發(fā)送連接請求信息;發(fā)送端接收到接收端根據所述連接請求信息回復的應答信息后,向接收端發(fā)送待發(fā)送數據塊,所述待發(fā)送數據塊包含多個數據幀;接收端接收所述待發(fā)送數據塊,對所述待發(fā)送數據塊中的數據幀進行校驗,將校驗成功的數據幀存儲至緩沖區(qū)中,并記錄下數據幀的接收情況;發(fā)送端在所述待發(fā)送數據塊發(fā)送完后,向接收端發(fā)送塊結束信息;接收端根據所述塊結束信息向發(fā)送端發(fā)送確認信息,以告知發(fā)送端所發(fā)送的待發(fā)送數據塊中數據幀的接收情況。從而實現了在半雙工通信中應用滑動窗口算法,并且提高了半雙工通信的收發(fā)效率以及吞吐率。
【專利說明】一種基于滑動窗口的半雙工通信方法及系統(tǒng)

【技術領域】
[0001] 本發(fā)明屬于通信【技術領域】,尤其涉及一種基于滑動窗口的半雙工通信方法及系 統(tǒng)。

【背景技術】
[0002] 為了保證數據在兩個網絡節(jié)點間數據的正確傳輸,需要在數據鏈路層或者傳輸層 使用自動請求重傳協(xié)議ARQ。ARQ協(xié)議是一種錯誤糾正協(xié)議,通過使用確認和超時這兩個機 制,在不可靠服務的基礎上實現可靠的錯誤傳輸。如果發(fā)送方在發(fā)送數據幀后一段時間之 內沒有收到確認幀,則發(fā)送方重新發(fā)送所述數據幀。常見的ARQ協(xié)議算法有停止等待算法、 連續(xù)ARQ算法、退后N幀算法、選擇重傳算法以及滑動窗口算法。其中,滑動窗口算法是ARQ 協(xié)議算法的集大成者,在接收到數據包時,接收方會立即回復確認幀,以告知發(fā)送發(fā)數據幀 是發(fā)送成功還是發(fā)送失敗。發(fā)送方在根據確認幀對發(fā)送失敗的數據幀進行重傳。
[0003] 然而,現有的滑動窗口算法僅適用于全雙工通信,而不適用于半雙工通信。在半雙 工通信中,發(fā)送方和接收方共用一個信道,因此需要對收發(fā)雙方進行信道的切換。若將滑動 窗口算法應用與半雙工結合,切換時由于安全間隔時間、信號保護窗口期、前導碼等因素的 影響,將導致切換消耗的時間多,進而降低了通信的傳輸效率。因此,半雙工通信不適合對 接收到的幀立即進行確認回復,需要對現有的滑動窗口算法進行改進。


【發(fā)明內容】

[0004] 本發(fā)明的目的在于提供一種基于滑動窗口的半雙工通信方法及系統(tǒng),以實現在半 雙工通信中應用滑動窗口算法,提高半雙工通信的收發(fā)效率以及吞吐率。
[0005] 本發(fā)明是這樣實現的,一種基于滑動窗口的半雙工通信方法,應用于通過半雙工 進行通信的接收端和發(fā)送端,所述方法包括:
[0006] 發(fā)送端向接收端發(fā)送連接請求信息,所述連接請求信息中包含待發(fā)送數據塊的大 小以及所述待發(fā)送數據塊對應的塊序號;
[0007] 發(fā)送端接收到接收端根據所述連接請求信息回復的應答信息后,向接收端發(fā)送所 述待發(fā)送數據塊,所述待發(fā)送數據塊包含多個數據幀;
[0008] 接收端接收所述待發(fā)送數據塊,對所述待發(fā)送數據塊中的數據幀進行校驗,將校 驗成功的數據幀存儲至緩沖區(qū)中,并記錄下數據幀的接收情況;
[0009] 發(fā)送端在所述待發(fā)送數據塊發(fā)送完后,向接收端發(fā)送塊結束信息;
[0010] 接收端根據所述塊結束信息向發(fā)送端發(fā)送確認信息,所述確認信息中包括所接收 到的數據塊對應的塊序號以及數據塊中數據幀的接收情況。
[0011] 進一步地,所述方法還包括:
[0012] 發(fā)送端接收所述確認信息,根據確認信息對已發(fā)送的數據塊中數據幀的接收情況 進行記錄。
[0013] 進一步地,所述方法還包括:
[0014] 在所發(fā)送的待發(fā)送數據塊中的數據幀均發(fā)送成功時,發(fā)送端根據本次傳輸成功的 數據塊個數η將滑動窗口底部向前移動η個數據塊,并將滑動窗口的頂部向前移動一個數 據塊,以獲取下一個數據塊,進行下一個數據塊的發(fā)送。
[0015] 進一步地,所述方法還包括:
[0016] 在所發(fā)送的待發(fā)送數據塊中存在未發(fā)送成功的數據幀時,發(fā)送端根據未發(fā)送成功 的數據幀之前的在本次傳輸中傳輸成功的數據塊個數m,將滑動窗口底部向前移動m個數 據塊。
[0017] 進一步地,所述方法還包括:
[0018] 在滑動窗口的塊數有冗余時,將滑動窗口頂部向前移動一個數據塊,以獲取下一 個數據塊;發(fā)送端將所述未發(fā)送成功的數據幀添加到所述下一個數據塊前端,構成下一個 待發(fā)送數據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊;
[0019] 或者
[0020] 在滑動窗口的塊數沒有冗余或者所述未發(fā)送成功的數據幀的個數大于預設閾值 時,滑動窗口頂部保持不變,按發(fā)送的先后順序將所述未發(fā)送成功的數據幀組成下一個待 發(fā)送數據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊,以重傳所述未發(fā)送成功的數據幀。
[0021] 本發(fā)明的第二方面提供了一種基于滑動窗口的半雙工通信系統(tǒng),所述系統(tǒng)包括至 少一個發(fā)送端和至少一個接收端;所述發(fā)送端和接收端之間建立半雙工通信;
[0022] 所述發(fā)送端,用于向接收端發(fā)送連接請求信息,所述連接請求信息中包含待發(fā)送 數據塊的大小以及所述待發(fā)送數據塊對應的塊序號,所述待發(fā)送數據塊包含多個數據幀; 接收到接收端根據所述連接請求信息回復的應答信息后,向接收端發(fā)送所述待發(fā)送數據 塊;
[0023] 所述接收端,用于接收發(fā)送端發(fā)送的連接請求信息,向發(fā)送所述連接請求信息的 發(fā)送端反饋應答信息;接收所述待發(fā)送數據塊,對數據塊中的數據幀進行校驗,將校驗成功 的數據幀存儲至緩沖區(qū)中,并記錄下數據幀的接收情況;
[0024] 所述發(fā)送端還用于,在所述待發(fā)送數據塊發(fā)送完后,向接收端發(fā)送塊結束信息;
[0025] 所述接收端還用于,根據所述塊結束信息向發(fā)送端發(fā)送確認信息,所述確認信息 中包括所接收到的數據塊對應的塊序號以及數據塊中數據幀的接收情況。
[0026] 進一步地,所述發(fā)送端還用于:
[0027] 接收所述確認信息,根據確認信息對已發(fā)送的數據塊中數據幀的接收情況進行記 錄。
[0028] 進一步地,發(fā)送端還用于:
[0029] 在所發(fā)送的待發(fā)送數據塊中的數據幀均發(fā)送成功時,根據本次傳輸成功的數據塊 個數η將滑動窗口底部向前移動η個數據塊,并將滑動窗口的頂部向前移動一個數據塊,以 獲取下一個數據塊,進行下一個數據塊的發(fā)送。
[0030] 進一步地,所述發(fā)送端還用于:
[0031] 在所發(fā)送的待發(fā)送數據塊中存在未發(fā)送成功的數據幀時,根據未發(fā)送成功的數據 幀之前的在本次傳輸中傳輸成功的數據塊個數m,將滑動窗口底部向前移動m個數據塊。
[0032] 進一步地,所述發(fā)送端還用于:
[0033] 在滑動窗口的塊數有冗余時,將滑動窗口頂部向前移動一個數據塊,以獲取下一 個數據塊;將所述未發(fā)送成功的數據幀添加到所述下一個數據塊前端,構成下一個待發(fā)送 的數據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊;
[0034] 或者
[0035] 在滑動窗口的塊數沒有冗余或者所述未發(fā)送成功的數據幀的個數大于預設的閾 值時,滑動窗口頂部保持不變,按發(fā)送的先后順序將所述未發(fā)送成功的數據幀組成下一個 待發(fā)送數據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊,以重傳所述未發(fā)送成功的數據幀。
[0036] 本發(fā)明實施例與現有技術相比存在的有益效果是:通過改進現有的滑動窗口算 法,使得發(fā)送端在發(fā)送數據時是以數據塊的形式批量發(fā)送數據幀,接收端以數據塊的形式 批量接收發(fā)送端發(fā)送的數據幀,然后再以確認幀的形式向發(fā)送端反饋數據塊中數據幀的接 收情況;發(fā)送端根據所述數據幀的接收情況,以數據塊為單位來移動窗口,以準備下一個待 發(fā)送數據塊,從而解決了滑動窗口算法在半雙工通信中發(fā)送端和接收端不能同時進行數據 幀的發(fā)送和接收的問題,改進后的滑動窗口算法能夠適用于半雙工通信,并且提高了半雙 工通信的收發(fā)效率以及吞吐率。

【專利附圖】

【附圖說明】
[0037] 圖1是本發(fā)明實施例一提供基于滑動窗口的半雙工通信方法的第一實現流程圖;
[0038] 圖2是本發(fā)明實施例二提供的基于滑動窗口的半雙工通信方法的第二實現流程 圖;
[0039] 圖3是本發(fā)明實施例二提供的滑動窗口示意圖;
[0040] 圖4是本發(fā)明實施例二提供的基于滑動窗口的半雙工通信方法中步驟S208的具 體實現流程;
[0041] 圖5是本發(fā)明實施例三提供的基于滑動窗口的半雙工通信系統(tǒng)的組成結構圖。

【具體實施方式】
[0042] 為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對 本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
[0043] 本發(fā)明通過改進現有的滑動窗口算法,使得發(fā)送端在發(fā)送數據時是以數據塊的形 式批量發(fā)送數據幀,接收端以數據塊的形式批量接收發(fā)送端發(fā)送的數據幀,然后再以確認 幀的形式向發(fā)送端反饋數據塊中數據幀的接收情況;發(fā)送端根據所述數據幀的接收情況, 以數據塊為單位的來移動窗口,以準備下一個待發(fā)送數據塊,從而解決了滑動窗口算法在 半雙工通信中發(fā)送端和接收端不能同時進行數據幀的發(fā)送和接收的問題,改進后的滑動窗 口算法能夠適用于半雙工通信,并且提高了半雙工通信的收發(fā)效率以及吞吐率。
[0044] 實施例一
[0045] 圖1示出了本發(fā)明實施例一提供的基于滑動窗口的半雙工通信方法的第一實現 流程。所述方法應用于由至少一個發(fā)送端和至少一個接收端組成的系統(tǒng),并且發(fā)送端和接 收端之間通過半雙工進行通信。
[0046] 由于在半雙工通信類的無線通信中,或者其他類似頻段窄帶通信情況,例如短波、 超短波、微波等傳輸方式,其主要特點為使用無線電波的某個頻段,發(fā)送端和接收端為半雙 工通信,雙方共用一個頻點。該頻點同一時間只允許一端進行操作,發(fā)送和接收需要進行切 換。在本發(fā)明中,在發(fā)送端和接收端通過傳輸控制命令報文來進行切換??刂泼顖笪姆?常短,且自身采用簡單停止等待協(xié)議算法,并根據需要降低降低控制命令報文的傳輸速率 低(優(yōu)選為小于傳輸數據報文的速率),以降低控制命令報文的丟包率。因此,本發(fā)明適用 于通過半雙工通信來傳輸數據量大的文件或數據流,否則控制命令報文的存在會導致效率 的降低。所述數據量大的文件優(yōu)選為大于32KB,甚至大至幾 MB或更大的文件。
[0047] 所述方法包括:
[0048] 在步驟S101中,發(fā)送端向接收端發(fā)送連接請求信息。
[0049] 所述連接請求信息中包含待發(fā)送數據塊的大小以及所述待發(fā)送數據塊對應的塊 序號,所述待發(fā)送數據塊中包含多個數據幀。
[0050] 在本實施例中,一個數據塊包含多個數據幀,其中的幀個數可以預先自定義。在發(fā) 送端與接收端的"握手"時,發(fā)送端向接收端發(fā)送連接請求信息,以告知接收端要發(fā)送的待 發(fā)送數據塊大小及所述待發(fā)送數據塊對應的塊序號。所述待發(fā)送數據塊包含多個數據幀, 以實現批量地傳輸數據幀。
[0051] 在步驟S102中,發(fā)送端接收到接收端根據所述連接請求信息回復的應答信息后, 向接收端發(fā)送待發(fā)送數據塊。
[0052] 發(fā)送端向接收端發(fā)送連接請求信息,接收端接收到所述連接請求信息后,根據所 述連接請求信息進行適應性的調整,比如根據待發(fā)送數據塊的大小,開辟足夠大的滑動窗 口塊數來滿足數據幀緩沖的需求。示例性的,當發(fā)送端發(fā)送的待發(fā)送數據塊大小為100幀, 滑動窗口大小為5塊,此時接收端可設置滑動窗口的大小為8塊(即最大可同時實現緩存 800幀數據),大于發(fā)送端窗口為5塊時對應的對大可傳輸500幀數據。
[0053] 調整結束后,接收端向發(fā)送該連接請求信息的發(fā)送端回復應答信息。發(fā)送端接收 所述應答信息,并且確認無誤后,則握手成功,開始向接收端發(fā)送待發(fā)送數據塊。在本實施 例中,發(fā)送端對每一個數據幀都編上號,得到幀號,幀號長度以1字節(jié)或者2字節(jié)存放在數 據幀前面,在數據幀的后面加上2字節(jié)的CRC16校驗碼,然后將多個數據幀組合成一個待發(fā) 送數據塊,依次不間斷地將所述待發(fā)送數據塊中的數據幀傳輸到接收端。
[0054] 在這里,設待發(fā)送數據塊中包含100個數據幀,則發(fā)送端依次不間斷地將所述待 發(fā)送數據塊中的數據幀傳輸到接收端可以為發(fā)送端連續(xù)進行100次任務發(fā)送該待發(fā)送數 據塊中的100個數據幀,也可以為一次任務發(fā)送該待發(fā)送數據塊中的100個數據幀。若采 用后一種方式,則要保證足夠的處理時間,以及緩沖區(qū)能夠容納一個待發(fā)送數據塊(即1〇〇 幀數據)的大小。
[0055] 優(yōu)選地,發(fā)送端接收所述應答信息,若確認有誤時,則重復向接收端發(fā)送連接請求 信息,直至收到正確的應答信息或者發(fā)送連接請求信息超過規(guī)定次數。
[0056] 在步驟S103中,接收端接收所述待發(fā)送數據塊,對所述待發(fā)送數據塊中的數據幀 進行校驗,將校驗成功的數據幀存儲至緩沖區(qū)中,并記錄下數據幀的接收情況。
[0057] 接收端接收到所述待發(fā)送數據塊中的數據幀后,對每一個數據幀,采用CRC16校 驗算法計算其校驗碼,若校驗成功,則將該校驗成功的數據幀存儲至緩沖區(qū)中,若校驗失 敗,則丟棄該校驗失敗的數據幀;并且記錄每一個數據幀的接收情況,以記錄哪些數據幀發(fā) 送成功,哪些數據幀發(fā)送失敗。
[0058] 作為本發(fā)明的一個實施示例,在發(fā)送端發(fā)送完待發(fā)送數據塊后,接收端對所述待 發(fā)送數據塊中的數據幀進行確認。為了在發(fā)送確認信息時減少報文的長度,以降低誤傳的 可能性,接收端通過標志位來記錄每一個數據幀的接收情況,按照數據幀的接收順序,對校 驗成功的數據幀,將其對應的標志位設置為1 ;否則,對校驗失敗的數據幀,將其對應的標 志位設置為0。假設發(fā)送端發(fā)送了 20幀,其中幀2、幀8、幀15、幀18丟失,則可記錄為:
[0059] 【20】【1|1|〇|1, |1|1|1|1, |〇|1|1|1, |1|1|1|〇, |1|1|〇|1, |〇|〇|〇|〇】
[0060] 其中,【20】表示幀個數,大小為1字節(jié),幀數后面為標志位,大小為3字節(jié),使用第 1字節(jié)的8個位,第二字節(jié)的8個位,第三個字節(jié)的前4個位,第三個字節(jié)的后4個位不使 用,默認填0。
[0061] 在步驟S104中,發(fā)送端在所述待發(fā)送數據塊發(fā)送完后,向接收端發(fā)送塊結束信 肩、。
[0062] 在本實施例中,發(fā)送端在待發(fā)送數據塊中的數據幀發(fā)送完畢后,向接收端發(fā)送塊 結束信息,同時根據所述塊結束信息調整傳輸速率。所述塊結束信息中包含本次發(fā)送中數 據幀對應的數據塊序號。
[0063] 通過將傳輸速率調整為最低速率或者比數據報文的傳輸速率低一至兩個級別,保 證了控制命令報文傳輸的正確性,降低丟包的概率,以提高傳輸的效率。
[0064] 進一步地,所述塊結束信息采用停止等待協(xié)議發(fā)送,其中還包含一時間閾值。所述 時間閾值給出了發(fā)送端重發(fā)塊結束信息的時間間隔。在發(fā)送端向接收端發(fā)送塊結束信息 后,若未在時間閾值之內接收到接收端回復的確認信息,則發(fā)送端重發(fā)所述塊結束信息,直 至在時間閾值內收到接收端回復的確認信息。
[0065] 在步驟S105中,接收端根據所述塊結束信息向發(fā)送端發(fā)送確認信息,所述確認信 息中包括所接收到的數據塊對應的序號以及數據塊中數據幀的接收情況。
[0066] 在本實施例中,接收端根據所述塊結束信息中的數據塊序號,將數據塊序號對應 的數據塊中的數據幀的接收情況記錄通過確認信息返回給發(fā)送端。其中,所述確認信息中 還包含無線信道的解調質量、信噪比等內容。優(yōu)選地,為了減少確認信息所占用的時間,所 述確認信息為一個數據幀,即確認幀。所述確認幀中包含所接收到的數據塊對應的序號以 及數據塊中數據幀的接收情況。
[0067] 通過發(fā)送端向接收端發(fā)送塊結束信息,以獲取接收端返回的確認信息,從而使得 發(fā)送端每發(fā)送完一次待發(fā)送數據塊后,均能根據接收端返回的確認信息獲知所發(fā)送的數據 塊中數據幀的接收情況,實現了發(fā)送端和接收端對數據幀接收情況的記錄,以提供數據幀 發(fā)送失敗時重傳的判斷依據。
[0068] 本發(fā)明通過改進現有的滑動窗口算法,使得發(fā)送端在發(fā)送數據時是以數據塊的形 式批量發(fā)送數據幀,接收端以數據塊的形式批量接收發(fā)送端發(fā)送的數據幀,然后再以確認 幀的形式向發(fā)送端返回數據塊中數據幀的接收情況;發(fā)送方根據所述數據幀的接收情況, 以數據塊為單位的來移動窗口,以準備下一個待發(fā)送數據塊,從而解決了滑動窗口算法在 半雙工通信中發(fā)送端和接收端不能同時進行數據幀的發(fā)送和接收的問題,改進后的滑動窗 口算法能夠適用于半雙工通信,并且提高了半雙工通信的收發(fā)效率以及吞吐率。
[0069] 實施例二
[0070] 圖2示出了本發(fā)明實施例二提供的基于滑動窗口的半雙工通信方法的第二實現 流程,為了便于說明,僅示出了與本發(fā)明實施例相關的部分。所述方法應用于由至少一個發(fā) 動端和至少一個接收端組成的系統(tǒng),并且發(fā)送端和接收端之間建立半雙工通信。
[0071] 本實施例在通信之前,設置發(fā)送端的滑動窗口大小為X個數據塊,發(fā)送端的滑動 窗口表征發(fā)送端在還沒收收到確認信息的情況下最多可以發(fā)送X個數據塊。接收端的滑動 窗口與發(fā)送端的滑動窗口一樣大小。設置每一個數據塊包含k個數據幀,優(yōu)選為100個數 據幀,則對于大小能夠確定的文件,可以根據待發(fā)送的數據幀總量,按照每k個數據幀一個 塊來將其劃分成多個數據塊。
[0072] 圖3示出了滑動窗口的一個示意圖。為了便于說明,這里設發(fā)送端和接收端的滑 動窗口為4個數據塊,設置每一個數據塊大小為100幀,則根據待發(fā)送的數據幀總量2000 幀,將其按照每1〇〇幀每塊來劃分成20個數據塊。
[0073] 在步驟S201中,發(fā)送端向接收端發(fā)送連接請求信息。
[0074] 所述連接請求信息中包含待發(fā)送數據塊的大小以及所述待發(fā)送數據塊對應的塊 序號,所述待發(fā)送數據塊包含多個數據幀。
[0075] 在本實施例中,所述待發(fā)送數據塊包含多個數據幀為所述待發(fā)送數據塊中包含一 個數據塊中的1〇〇個數據幀,或者一個數據塊中的1〇〇個數據幀與需要重發(fā)的數據幀。
[0076] 在步驟S202中,接收端接收所述連接請求信息,并向發(fā)送端回復應答信息。
[0077] 在步驟S203中,發(fā)送端接收到接收端根據所述連接請求信息回復的應答信息后, 向接收端發(fā)送待發(fā)送數據塊。
[0078] 在步驟S204中,接收端接收所述待發(fā)送數據塊,對所述待發(fā)送數據塊中的數據幀 進行校驗,將校驗成功的數據幀存儲至緩沖區(qū)中,并記錄下數據幀的接收情況。
[0079] 在步驟S205中,發(fā)送端在所述待發(fā)送數據塊發(fā)送完后,向接收端發(fā)送塊結束信 肩、。
[0080] 在本實施例中,發(fā)送端向接收端發(fā)送塊結束信息,并根據所述塊結束信息降低傳 輸速率,以降低控制命令報文的傳輸速率。所述塊結束信息中包含本次發(fā)送中數據幀對應 的數據塊序號。
[0081] 在步驟S206中,接收端根據所述塊結束信息向發(fā)送端發(fā)送確認信息。
[0082] 優(yōu)選地,所述確認信息為一個數據幀,即確認幀。所述確認幀包括接收端所接收到 的數據塊對應的塊序號以及數據塊中數據幀的接收情況。
[0083] 在步驟S207中,發(fā)送端接收所述確認信息,根據確認信息對已發(fā)送的數據塊中數 據幀的接收情況進行記錄。
[0084] 在本實施例中,接收端和發(fā)送端都要對數據幀的發(fā)送情況進行記錄。其中,接收端 的記錄是動態(tài)變化的,只記錄發(fā)送端當前所發(fā)送的數據塊中數據幀的接收情況;而發(fā)送端 根據確認信息對數據塊所發(fā)送的數據幀的接收情況進行記錄,并且存儲所述記錄,以實現 對所有數據幀的記錄(即記錄2000幀數據的接收情況)。
[0085] 在步驟S208中,發(fā)送端根據所述數據幀的接收情況進行下一個待發(fā)送數據塊的 傳輸。
[0086] 為了實現批量的傳輸數據幀,在本實施例中,滑動窗口是以數據塊的形式向前移 動的,即一次向前移動k個數據幀。對滑動窗口的移動過程將在圖4所示實施例中進行詳 述。
[0087] 圖4示出了本發(fā)明實施例二提供的基于滑動窗口的半雙工通信方法中步驟S208 的實現流程。
[0088] 在本實施例中,發(fā)送端發(fā)送完一個待發(fā)送數據塊,接收到接收端返回的確認信息 后,根據所述確認信息進行滑動窗口的移動,以準備下一個待發(fā)送數據塊。以下對滑動窗口 的移動進行詳細的說明。
[0089] 在步驟S401中,發(fā)送端根據接收到的確認信息,判斷已發(fā)送的數據塊中的數據幀 是否均發(fā)送成功。若是,則執(zhí)行步驟S402 ;否則,執(zhí)行步驟S403。
[0090] 在步驟S402中,在所發(fā)送的待發(fā)送數據塊中的數據幀均發(fā)送成功時,發(fā)送端根據 本次傳輸成功的數據塊個數η將滑動窗口底部向前移動η個數據塊,并將滑動窗口的頂部 向前移動一個數據塊,以獲取下一個數據塊,進行下一個數據塊的發(fā)送。
[0091] 示例性的,在前一次所發(fā)送的待發(fā)送數據塊中僅包含第一數據塊的1-100幀數據 時,并且所述100幀數據傳輸成功,則將滑動窗口整體向前移動一個數據塊,包括頂部向前 移動一個數據塊,底部向前移動一個數據塊(傳輸成功的數據塊個數為1,即η = 1),以進 行下一個數據塊的發(fā)送。此時,滑動窗口底部的位置由原來位于第零數據塊變?yōu)榈谝粩祿?塊,頂部由原來位于第一數據塊變?yōu)榈诙祿K。
[0092] 在步驟S403中,在所發(fā)送的待發(fā)送數據塊中存在未發(fā)送成功的數據幀時,發(fā)送端 根據未發(fā)送成功的數據幀之前的在本次傳輸中傳輸成功的數據塊個數m,將滑動窗口底部 向前移動m個數據塊。
[0093] 示例性的,前一次所發(fā)送的待發(fā)送數據塊中包含重發(fā)的數據幀(包括第一數據塊 中第10幀數據、第二數據塊中第112幀數據)和第三數據塊的第201-300數據幀。若第二 數據塊中第112幀數據和第三數據塊中的第300幀數據仍未發(fā)送成功,第一數據塊中第10 幀數據和第三數據塊的第201-299數據幀發(fā)送成功,則根據第二數據塊中的第112幀(未 發(fā)送成功的數據幀)之前的傳輸成功的數據塊個數1 (重傳的第一數據塊中第10幀數據傳 輸成功,即在未發(fā)送成功的數據巾貞之前的第一數據塊傳輸成功),發(fā)送端將滑動窗口底部向 前移動1個數據塊。此時,滑動窗口底部的位置由原來位于第零數據塊變?yōu)榈谝粩祿K。
[0094] 在步驟S404中,發(fā)送端判斷滑動窗口塊數是否有冗余,以確定當前的滑動窗口頂 部是否能向前移動。若滑動窗口有冗余時,執(zhí)行步驟S405 ;否則,執(zhí)行步驟S406。
[0095] 在步驟S405中,在滑動窗口的塊數有冗余時,發(fā)送端將滑動窗口頂部向前移動一 個數據塊,以獲取下一個數據塊;并將所述未發(fā)送成功的數據幀添加到所述下一個數據塊 前端,構成下一個待發(fā)送數據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊。
[0096] 示例性的,當滑動窗口的塊數為4,傳輸完第三數據塊后,滑動窗口有冗余,則將滑 動窗口頂部向前移動一個數據塊,以獲取第四數據塊的301-400個數據幀(此時,滑動窗口 頂部由原來位于第三數據塊變?yōu)榈谒臄祿K);并將第二數據塊中第112數據幀和第三數 據塊中第300數據幀(未發(fā)送成功的數據幀)添加到所述第四數據塊的100個數據幀前端, 構成下一個待發(fā)送數據塊,返回步驟S201,向接收端發(fā)送所述下一個待發(fā)送數據塊。此時, 所述連接請求信息中數據塊的大小為102幀,以及所述待發(fā)送數據塊對應的塊序號(包括 第二數據塊、第三數據塊和第四數據塊)。
[0097] 在步驟S406中,在滑動窗口的塊數沒有冗余時,滑動窗口頂部保持不變,按發(fā)送 的先后順序將所述未發(fā)送成功的數據幀組成下一個待發(fā)送數據塊,向接收端發(fā)送所述下一 個待發(fā)送數據塊,以重傳所述未發(fā)送成功的數據幀。
[0098] 示例性的,若滑動窗口的大小為4時,在發(fā)送完第五數據塊后,第二數據塊中第12 數據幀、第五數據塊中第420-460數據幀未發(fā)送成功,而第三數據塊和第四數據塊已發(fā)送 成功。由于當前滑動窗口的底部在第二數據塊,頂部在第五數據塊,已經跨越了 4個數據 塊,此時滑動窗口已經沒有冗余了,因此,滑動窗口頂部不能再向前移動(滑動窗口頂部仍 然為當前的第五數據塊),發(fā)送端將未發(fā)送成功的第二數據塊中第112幀數據、第五數據塊 中的第420-460數據幀組成一個待發(fā)送數據塊,以進行重傳,直至滑動窗口底部對應的數 據塊中未發(fā)送成功的數據幀(即第二數據塊中第112幀)發(fā)送成功時,滑動窗口的底部才 能移動。
[0099] 優(yōu)選地,在步驟S403后,所述方法還包括:
[0100] 在步驟S407中,在所述未發(fā)送成功的數據幀的個數大于預設的閾值時,滑動窗口 頂部保持不變,按發(fā)送的先后順序將所述未發(fā)送成功的數據幀組成下一個待發(fā)送數據塊, 向接收端發(fā)送所述下一個待發(fā)送數據塊,以重傳所述未發(fā)送成功的數據幀。
[0101] 示例性地,預設閾值為30個數據幀。若在發(fā)送完第五數據塊后,第二數據塊的第 112幀、第三數據塊和第四數據塊均已發(fā)送成功,而第五數據塊中的第420-460數據幀未發(fā) 送成功,則共有40個數據幀沒有發(fā)送成功。此時未發(fā)送成功的數據幀的個數已經大于預 設閾值,不管滑動窗口是否有冗余,滑動窗口頂部都保持不變(仍然位于當前的第五數據 塊),按發(fā)送的先后順序將所述未發(fā)送成功的數據幀組成下一個待發(fā)送數據塊,返回步驟 S201,向接收端發(fā)送所述下一個待發(fā)送數據塊,以重傳所述未發(fā)送成功的數據幀。
[0102] 通過改進現有的滑動窗口算法,使得發(fā)送端在發(fā)送數據時是以數據塊的形式批量 發(fā)送數據幀,接收端以數據塊的形式批量接收發(fā)送端發(fā)送的數據幀,然后再以確認幀的形 式向發(fā)送端反饋數據塊中數據幀的接收情況;發(fā)送端根據所述數據幀的接收情況,以數據 塊為單位的來移動窗口,以準備下一個待發(fā)送數據塊,從而解決了滑動窗口算法在半雙工 通信中發(fā)送端和接收端不能同時進行數據幀的發(fā)送和接收的問題,改進后的滑動窗口算法 能夠適用于半雙工通信,并且提高了半雙工通信的收發(fā)效率以及吞吐率。
[0103] 實施例三
[0104] 圖5示出了本發(fā)明實施例三提供的基于滑動窗口的半雙工通信系統(tǒng)。所述系統(tǒng)包 括至少一個發(fā)送端1和至少一個接收端2 ;所述發(fā)送端和接收端之間建立半雙工通信。
[0105] 所述發(fā)送端,用于向接收端發(fā)送連接請求信息,所述連接請求信息中包含待發(fā)送 數據塊的大小以及所述待發(fā)送數據塊對應的塊序號,所述待發(fā)送數據塊包含多個數據幀; 接收到接收端根據所述連接請求信息回復的應答信息后,向接收端發(fā)送所述待發(fā)送數據 塊;
[0106] 所述接收端,用于接收發(fā)送端發(fā)送的連接請求信息,向發(fā)送所述連接請求信息的 發(fā)送端反饋應答信息;接收所述待發(fā)送數據塊,對數據塊中的數據幀進行校驗,將校驗成功 的數據幀存儲至緩沖區(qū)中,并記錄下數據幀的接收情況;
[0107] 所述發(fā)送端還用于,在所述待發(fā)送數據塊發(fā)送完后,向接收端發(fā)送塊結束信息;
[0108] 在發(fā)送塊結束信息后,所述發(fā)送端根據所述塊結束信息調整傳輸速率,以降低控 制命令報文的發(fā)送速率,所述控制命令報文包括塊結束信息、確認信息、連接請求信息以及 應答信息。
[0109] 所述接收端還用于,根據所述塊結束信息向發(fā)送端發(fā)送確認信息,所述確認信息 中包括所接收到的數據塊對應的塊序號以及數據塊中數據幀的接收情況。
[0110] 在本實施例中,所述確認信息以一個數據幀的形式包括了所接收到的數據塊對應 的塊序號以及數據塊中數據幀的接收情況,即所述確認信息為一個確認幀。從而減少了確 認幀所占用的時間,能夠進一步提高通信的效率。
[0111] 進一步地,在發(fā)送端在發(fā)送完待發(fā)送數據塊后,需要進行滑動窗口的移動,所述發(fā) 送端還用于:
[0112] 接收所述確認信息,根據確認信息對已發(fā)送的數據塊中數據幀的接收情況進行記 錄。
[0113] 進一步地,發(fā)送端還用于:
[0114] 在所發(fā)送的待發(fā)送數據塊中的數據幀均發(fā)送成功時,根據本次傳輸成功的數據塊 個數η將滑動窗口底部向前移動η個數據塊,并將滑動窗口的頂部向前移動一個數據塊,以 獲取下一個數據塊,進行下一個數據塊的發(fā)送。
[0115] 進一步地,所述發(fā)送端還用于:
[0116] 在所發(fā)送的待發(fā)送數據塊中存在未發(fā)送成功的數據幀時,根據未發(fā)送成功的數據 幀之前的在本次傳輸中傳輸成功的數據塊個數m,將滑動窗口底部向前移動m個數據塊。
[0117] 進一步地,所述發(fā)送端還用于:
[0118] 在滑動窗口的塊數有冗余時,將滑動窗口頂部向前移動一個數據塊,以獲取下一 個數據塊;將所述未發(fā)送成功的數據幀添加到所述下一個數據塊前端,構成下一個待發(fā)送 的數據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊;
[0119] 或者
[0120] 在滑動窗口的塊數沒有冗余或者所述未發(fā)送成功的數據幀的個數大于預設的閾 值時,滑動窗口頂部保持不變,按發(fā)送的先后順序將所述未發(fā)送成功的數據幀組成下一個 待發(fā)送數據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊,以重傳所述未發(fā)送成功的數據幀。
[0121] 通過改進現有的滑動窗口算法,使得發(fā)送端在發(fā)送數據時是以數據塊的形式批量 發(fā)送數據幀,接收端以數據塊的形式批量接收發(fā)送端發(fā)送的數據幀,然后再以確認幀的形 式向發(fā)送端反饋數據塊中數據幀的接收情況;發(fā)送端根據所述數據幀的接收情況,以數據 塊為單位的來移動窗口,以準備下一個待發(fā)送數據塊,從而解決了滑動窗口算法在半雙工 通信中發(fā)送端和接收端不能同時進行數據幀的發(fā)送和接收的問題,改進后的滑動窗口算法 能夠適用于半雙工通信,并且提高了半雙工通信的收發(fā)效率以及吞吐率。
[0122] 以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。
【權利要求】
1. 一種基于滑動窗口的半雙工通信方法,其特征在于,應用于通過半雙工進行通信的 接收端和發(fā)送端,所述方法包括: 發(fā)送端向接收端發(fā)送連接請求信息,所述連接請求信息中包含待發(fā)送數據塊的大小以 及所述待發(fā)送數據塊對應的塊序號; 發(fā)送端接收到接收端根據所述連接請求信息回復的應答信息后,向接收端發(fā)送所述待 發(fā)送數據塊,所述待發(fā)送數據塊包含多個數據幀; 接收端接收所述待發(fā)送數據塊,對所述待發(fā)送數據塊中的數據幀進行校驗,將校驗成 功的數據幀存儲至緩沖區(qū)中,并記錄下數據幀的接收情況; 發(fā)送端在所述待發(fā)送數據塊發(fā)送完后,向接收端發(fā)送塊結束信息; 接收端根據所述塊結束信息向發(fā)送端發(fā)送確認信息,所述確認信息中包括所接收到的 數據塊對應的塊序號以及數據塊中數據幀的接收情況。
2. 如權利要求1所述的基于滑動窗口的半雙工通信方法,其特征在于,所述方法還包 括: 發(fā)送端接收所述確認信息,根據確認信息對已發(fā)送的數據塊中數據幀的接收情況進行 記錄。
3. 如權利要求2所述的基于滑動窗口的半雙工通信方法,其特征在于,所述方法還包 括: 在所發(fā)送的待發(fā)送數據塊中的數據幀均發(fā)送成功時,發(fā)送端根據本次傳輸成功的數據 塊個數η將滑動窗口底部向前移動η個數據塊,并將滑動窗口的頂部向前移動一個數據塊, 以獲取下一個數據塊,進行下一個數據塊的發(fā)送。
4. 如權利要求2所述的基于滑動窗口的半雙工通信方法,其特征在于,所述方法還包 括: 在所發(fā)送的待發(fā)送數據塊中存在未發(fā)送成功的數據幀時,發(fā)送端根據未發(fā)送成功的數 據幀之前的在本次傳輸中傳輸成功的數據塊個數m,將滑動窗口底部向前移動m個數據塊。
5. 如權利要求4所述的基于滑動窗口的半雙工通信方法,其特征在于,所述方法之后 還包括: 在滑動窗口的塊數有冗余時,將滑動窗口頂部向前移動一個數據塊,以獲取下一個數 據塊;發(fā)送端將所述未發(fā)送成功的數據幀添加到所述下一個數據塊前端,構成下一個待發(fā) 送數據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊; 或者 在滑動窗口的塊數沒有冗余或者所述未發(fā)送成功的數據幀的個數大于預設閾值時,滑 動窗口頂部保持不變,按發(fā)送的先后順序將所述未發(fā)送成功的數據幀組成下一個待發(fā)送數 據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊,以重傳所述未發(fā)送成功的數據幀。
6. -種基于滑動窗口的半雙工通信系統(tǒng),其特征在于,所述系統(tǒng)包括至少一個發(fā)送端 和至少一個接收端;所述發(fā)送端和接收端之間建立半雙工通信; 所述發(fā)送端,用于向接收端發(fā)送連接請求信息,所述連接請求信息中包含待發(fā)送數據 塊的大小以及所述待發(fā)送數據塊對應的塊序號,所述待發(fā)送數據塊包含多個數據幀;接收 到接收端根據所述連接請求信息回復的應答信息后,向接收端發(fā)送所述待發(fā)送數據塊; 所述接收端,用于接收發(fā)送端發(fā)送的連接請求信息,向發(fā)送所述連接請求信息的發(fā)送 端反饋應答信息;接收所述待發(fā)送數據塊,對數據塊中的數據幀進行校驗,將校驗成功的數 據幀存儲至緩沖區(qū)中,并記錄下數據幀的接收情況; 所述發(fā)送端還用于,在所述待發(fā)送數據塊發(fā)送完后,向接收端發(fā)送塊結束信息; 所述接收端還用于,根據所述塊結束信息向發(fā)送端發(fā)送確認信息,所述確認信息中包 括所接收到的數據塊對應的塊序號以及數據塊中數據幀的接收情況。
7. 如權利要求6所述的基于滑動窗口的半雙工通信系統(tǒng),其特征在于,所述發(fā)送端還 用于: 接收所述確認信息,根據確認信息對已發(fā)送的數據塊中數據幀的接收情況進行記錄。
8. 如權利要求7所述的基于滑動窗口的半雙工通信系統(tǒng),其特征在于,發(fā)送端還用于: 在所發(fā)送的待發(fā)送數據塊中的數據幀均發(fā)送成功時,根據本次傳輸成功的數據塊個數 η將滑動窗口底部向前移動η個數據塊,并將滑動窗口的頂部向前移動一個數據塊,以獲取 下一個數據塊,進行下一個數據塊的發(fā)送。
9. 如權利要求7所述的基于滑動窗口的半雙工通信系統(tǒng),其特征在于,所述發(fā)送端還 用于: 在所發(fā)送的待發(fā)送數據塊中存在未發(fā)送成功的數據幀時,根據未發(fā)送成功的數據幀之 前的在本次傳輸中傳輸成功的數據塊個數m,將滑動窗口底部向前移動m個數據塊。
10. 如權利要求9所述的基于滑動窗口的半雙工通信系統(tǒng),其特征在于,所述發(fā)送端還 用于: 在滑動窗口的塊數有冗余時,將滑動窗口頂部向前移動一個數據塊,以獲取下一個數 據塊;將所述未發(fā)送成功的數據幀添加到所述下一個數據塊前端,構成下一個待發(fā)送的數 據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊; 或者 在滑動窗口的塊數沒有冗余或者所述未發(fā)送成功的數據幀的個數大于預設的閾值時, 滑動窗口頂部保持不變,按發(fā)送的先后順序將所述未發(fā)送成功的數據幀組成下一個待發(fā)送 數據塊,向接收端發(fā)送所述下一個待發(fā)送數據塊,以重傳所述未發(fā)送成功的數據幀。
【文檔編號】H04L1/18GK104113403SQ201410352493
【公開日】2014年10月22日 申請日期:2014年7月23日 優(yōu)先權日:2014年7月23日
【發(fā)明者】劉宏鈞 申請人:深圳市邦彥信息技術有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1