一種丟包重傳的方法及終端的製作方法
2023-06-10 19:47:41
一種丟包重傳的方法及終端的製作方法
【專利摘要】本發明提供一種丟包重傳的方法及終端,所述終端包括:時間計算模塊,用於計算距離上次發送同一丟包的重傳請求的時間;時間比較模塊,用於將所述時間計算模塊所得到的時間與網絡傳輸延遲時間進行比較;丟包重傳判斷模塊,用於判斷所述時間比較模塊得到的結果是否為距離上次發送同一丟包的重傳請求的時間大於所述網絡傳輸延遲時間,若是,則再次發送該丟包的重傳請求。本方案解決了現有技術中由於終端多次發送丟包重傳請求而使得發送端對一個丟包多次重複發送,從而造成網絡帶寬不足,影響網絡傳輸數據的速度的問題。
【專利說明】一種丟包重傳的方法及終端
【技術領域】
[0001]本發明涉及網絡數據傳輸領域,尤其涉及一種丟包重傳的方法及終端。
【背景技術】
[0002]隨著網絡數據傳輸技術的發展,數據傳輸的速度越來越快,但在數據傳輸的過程中,經常會出現數據包丟失即丟包的情況,如,在基於包交換的傳輸網絡上傳輸視音頻數據時,都會使用RTP (Real-time Transport Protocol實時傳輸協議)傳輸協議保證視音頻應用交互的實時性。RTP傳輸協議是基於UDP(User Datagram Protocol用戶數據包協議)傳輸層的,因此不能保證數據傳輸的完整性,當網絡發生局部故障或者擁塞的時候就會發生數據包丟失的情況,如果不對丟失的數據包進行恢復,接收端的圖像回放就會出現跳幀或馬賽克,音頻回放就會產生嘯叫、破聲或失真,嚴重地破壞用戶的良好體驗。因此,為了保證用戶的良好體驗,就需要彌補在網絡傳輸過程中丟失的數據包。現有技術中採用發送端重傳丟失數據包的方法來恢復丟失數據。其具體方法是將丟失數據包的序號組成一個丟包數組,然後在預設間隔時間內將此丟包數組包含在丟包重傳請求中發回給數據發送端,要求重新發送這些丟失的數據包。如果之後接收到了丟失的數據包,就將其從丟包數組中去掉。但這個方法的不足在於,若預設間隔時間小於網絡延遲時間,就會使接收端在還未接收到數據發送端重傳的數據包時就到了下一個預設間隔時間,接收端就會再一次要求發送端重傳丟失的數據包,而實際上數據發送端已經重傳了丟失的數據包,只是由於網絡延遲的原因還沒有到達接收端而已。由於重傳的數據包也可能會丟失,所以數據發送端不能做任何智能判斷和假設,對於每一個重傳請求都要響應處理,這就會導致同一個重傳的數據包多次重複發送,產生帶寬浪費,降低重傳效率。為了解決這個問題,現有技術中一般會根據網絡延遲時間增加預設的間隔時間,使其稍微大於網絡延遲時間,但這種方法會降低視音頻交互的實時性,尤其是重傳的數據包也可能會丟失,對一個丟失數據包的重傳會產生多次,此時由網絡延遲時間加上預設間隔時間的總時延會成倍增加,導致視音頻應用交互實時性嚴重下降。
【發明內容】
[0003]本發明提供一種丟包重傳的方法及終端,解決了現有技術中由於終端多次發送丟包重傳請求而使得丟包發送端對一個丟包多次重複發送,從而造成網絡帶寬不足,影響網絡傳輸數據的速度的問題,為了解決上述問題,本發明採用以下技術方案:
[0004]一種終端,包括:
[0005]時間計算模塊,用於計算距離上次發送同一丟包的重傳請求的時間;
[0006]時間比較模塊,用於將所述時間計算模塊所得到的時間與網絡傳輸延遲時間進行比較;
[0007]丟包重傳判斷模塊,用於判斷所述時間比較模塊得到的結果是否為距離上次發送同一丟包的重傳請求的時間大於所述網絡傳輸延遲時間,若是,則再次發送該丟包的重傳請求。
[0008]進一步地,所述丟包重傳判斷模塊還包括:若否,則不發送重傳請求。
[0009]進一步地,所述時間計算模塊具體包括:
[0010]標誌位設置子模塊,用於設置丟包對應一個標誌位,標誌位的初始值為O ;
[0011]標誌位運算子模塊,用於若預設間隔時間到達,則對丟包對應的標誌位進行加I
運算;
[0012]標誌位判斷子模塊,用於判斷標誌位的取值是否為1,若是,則直接發送該丟包的重傳請求;
[0013]時間計算子模塊,用於根據所述標誌位判斷子模塊中的判斷結果為否時,計算所述距離上次發送同一丟包的重傳請求的時間為:標誌位的取值減I後,再乘以所述預設間隔時間。
[0014]所述丟包重傳判斷模塊還用於將需要再次發送重傳請求的丟包所對應的標誌位的取值置為I。
[0015]進一步地,還包括網絡傳輸延遲時間計算模塊,具體用於發送網絡延遲探測包到丟包發送端,計算所述丟包發送端對所述網絡延遲探測包的反饋時間即為所述網絡傳輸延遲時間。
[0016]一種丟包重傳的方法,包括:
[0017]計算距離上次發送同一丟包的重傳請求的時間;
[0018]將所述距離上次發送同一丟包的重傳請求的時間與網絡傳輸延遲時間進行比較;
[0019]判斷所述距離上次發送同一丟包的重傳請求的時間是否大於所述網絡傳輸延遲時間,若是,則再次發送該丟包的重傳請求。
[0020]進一步地,還包括:若否,則不發送重傳請求。
[0021]進一步地,計算距離上次發送同一丟包的重傳請求的時間具體包括:
[0022]設置丟包對應一個標誌位,標誌位的初始值為O ;
[0023]若預設間隔時間到達,則對丟包對應的標誌位進行加I運算;
[0024]判斷標誌位的取值是否為1,若是,則直接發送該丟包的重傳請求;若否,則所述距離上次發送同一丟包的重傳請求的時間為:標誌位的取值減I後,再乘以所述預設間隔時間;
[0025]所述再次發送該丟包的重傳請求之後還包括:將該丟包所對應的標誌位的取值置為I。
[0026]進一步地,所述網絡傳輸延遲時間計算方法包括:發送網絡延遲探測包到丟包發送端,計算所述丟包發送端對所述網絡延遲探測包的反饋時間即為所述網絡延遲時間。
[0027]本發明提供一種丟包重傳的方法及終端,所述終端包括時間計算模塊、時間比較模塊和丟包重傳判斷模塊,這些模塊使得終端能夠根據所計算的距離上次發送同一丟包的重傳請求的時間與網絡傳輸延遲時間進行比較後,當所述距離上次發送同一丟包的重傳請求的時間大於網絡傳輸延遲時間時,得到所述丟包需要發送重傳請求。本方案使得終端不會只是盲目地對每個丟包發送重傳請求,而是有選擇地發送丟包的重傳請求,使得在數據包的傳輸過程中不會發生丟包多次重傳,佔用數據通道的情況,這樣網絡數據的傳輸將會更加快捷、暢通,同時由於數據應用的實時性得到了很大的改進,增加了用戶的體驗。
【專利附圖】
【附圖說明】
[0028]圖1為本發明一實施例所示的一種終端的結構圖;
[0029]圖2為本發明另一實施例所示的時間計算模塊的結構圖;
[0030]圖3為本發明另一實施例所示的一種丟包重傳的方法流程圖;
[0031]圖4為本發明另一實施例所示的一種丟包重傳的方法流程圖。
【具體實施方式】
[0032]下面通過【具體實施方式】結合附圖對本發明作進一步詳細說明。
[0033]如圖1所示為本發明一實施例所示的一種終端的結構圖,請參見圖1,所述終端100包括:時間計算模塊101、時間比較模塊102和丟包重傳判斷模塊103 ;時間計算模塊101,用於計算距離上次發送同一丟包的重傳請求的時間;時間比較模塊102,用於將所述時間計算模塊101所得到的時間與網絡傳輸延遲時間進行比較;丟包重傳判斷模塊103,用於判斷所述時間比較模塊得到的結果是否為距離上次發送同一丟包的重傳請求的時間大於所述網絡傳輸延遲時間,若是,則再次發送該丟包的重傳請求。在網絡數據傳輸的過程中由於網絡發生局部故障或者擁塞而產生數據包丟失的情況,所丟失的數據包即為所述丟包;所述重傳請求為請求丟包發送端對所述丟包再發送一次的請求;所述網絡延遲時間是表示此時在網絡中進行一個數據包的往復傳輸所需要的時間;若距離上次發送同一丟包的重傳請求的時間大於所述網絡傳輸延遲時間,則表明,所述丟包在超過網絡傳輸延遲時間後還沒有收到,即此重傳的丟包在網絡傳輸中又丟失了,因此,所述丟包需要再一次發送重傳請求;所述終端100包括電腦、手機、平板電腦等具有網絡傳輸功能的設備。
[0034]在一些實施例中,所述丟包重傳判斷模塊103,用於判斷所述時間比較模塊得到的結果是否為距離上次發送同一丟包的重傳請求的時間大於所述網絡傳輸延遲時間,若否,則不發送重傳請求。若距離上次發送同一丟包的重傳請求的時間小於或者等於所述網絡傳輸延遲時間,說明還沒有收到對此丟包的重傳是因為網絡延遲的原因,那麼在此次丟包重傳請求中就不需要對此丟包發送重傳請求,避免了過多重複的向丟包發送端發送丟包重傳請求,減少了丟包發送端對該丟包的發送次數,從而減少了帶寬的浪費,提高了重傳的效率。
[0035]在一些實施例中,所述時間計算模塊101具體包括:標誌位設置子模塊1011,用於設置丟包對應一個標誌位,標誌位的初始值為O ;標誌位運算子模塊1012,用於若預設間隔時間到達,則對丟包對應的標誌位進行加I運算;標誌位判斷子模塊1013,用於判斷標誌位的取值是否為1,若是,則直接發送該丟包的重傳請求;時間計算子模塊1014,用於根據所述標誌位判斷子模塊中的判斷結果為否時,計算所述距離上次發送同一丟包的重傳請求的時間為:標誌位的取值減I後,再乘以所述預設間隔時間。所述標誌位是與丟包同時存在的,其取值範圍是整數,其初始值表示的是每檢測到一個丟包時,該丟包對應的標誌位的取值置為O ;所述預設間隔時間為所述終端100每次檢測其丟包是否需要發送重傳請求的間隔時間,即每次預設間隔時間到來,終端100都會對其丟包進行檢測是否需要發送重傳請求;若所述時間計算子模塊1014計算的結果大於網絡傳輸延遲時間,則其對應的丟包需要發送重傳請求;若標誌位取值為1,表示此標誌位對應的丟包是新的丟包,沒有發送過重傳請求的,因此需要發送重傳請求。
[0036]在另一些實施例中,所述丟包重傳判斷模塊103還用於將需要再次發送重傳請求的丟包所對應的標誌位的取值置為I。將需要再次發送重傳請求的丟包對應的標誌位取值置為I是為了更加方便在下次預設間隔時間到來時,計算所述丟包距離上次發送重傳請求的時間。
[0037]在另一些實施例中,所述終端100還包括網絡傳輸延遲時間計算模塊,具體用於發送網絡延遲探測包到丟包發送端,計算所述丟包發送端對所述網絡延遲探測包的反饋時間即為所述網絡傳輸延遲時間。即是終端100發送網絡延遲探測包到丟包發送端,丟包發送端接收到網絡延遲探測包後立即回應網絡延遲應答包,終端100收到網絡延遲應答包後,計算收到網絡延遲應答包和發送網絡延遲探測包的時間差,此時間差即為此時的網絡傳輸延遲時間。進一步地,為了更加準確地計算網絡傳輸延遲時間,終端100可以多次發送探測包到丟包發送端,計算時間差,再求平均值的方式來計算網絡傳輸延遲時間;另外,由於每個時段的網絡狀態不相同,因此,網絡傳輸延遲時間需要每隔一段時間計算一次。
[0038]本實施例提供的終端,能夠對丟包有選擇地發送重傳請求,這樣丟包發送端就不會對一個丟包多次重複發送,使得網絡數據的傳輸不會佔用更多的通道,從而網絡傳輸數據更加快捷。
[0039]如圖3所示,為本發明另一實施例所示的一種丟包重傳的方法流程圖。請參見圖3,該丟包重傳的方法開始後,
[0040]S301:計算距離上次發送同一丟包重傳請求的時間。在網絡數據傳輸的過程中由於網絡發生局部故障或者擁塞而產生數據包丟失的情況,所丟失的數據包即為所述丟包;所述重傳請求為請求丟包發送端對所述丟包再發送一次的請求;距離上次發送同一丟包的重傳請求的時間具體的計算方法可以為:設置丟包對應一個標誌位,標誌位的初始值為O ;若預設間隔時間到達,則對丟包對應的標誌位進行加I運算;根據所述標誌位的取值確定丟包距離上次發送重傳請求的時間。所述標誌位是與丟包同時存在的,其取值範圍是整數,其初始值表示的是每檢測到一個丟包時,該丟包的標誌位的取值置為O ;所述預設間隔時間為所述終端每次檢測其丟包是否需要發送重傳請求的間隔時間,即每次預設間隔時間到來,標誌位進行加I的運算,然後終端都會對其丟包進行檢測是否需要發送重傳請求;將標誌位的取值減I後,再乘以所述預設間隔時間,就能得到所述丟包距離上次發送重傳請求的時間。
[0041]S302:將所述距離上次發送同一丟包的重傳請求的時間與網絡傳輸延遲時間進行比較。所述網絡傳輸延遲時間是表示在網絡中進行一個數據包的往復傳輸所需要的時間;其計算方法可以為:發送網絡延遲探測包到丟包發送端,計算所述丟包發送端對所述網絡延遲探測包的反饋時間即為所述網絡傳輸延遲時間。具體地,發送網絡延遲探測包到丟包發送端,丟包發送端接收到網絡延遲探測包後立即回應網絡延遲應答包,收到網絡延遲應答包後計算收到網絡延遲應答包和發送網絡延遲探測包的時間差,此時間差即為此時的網絡傳輸延遲時間。進一步地,為了更加準確地計算網絡傳輸延遲時間,可以多次發送探測包到丟包發送端,計算時間差,再求平均值的方式來計算網絡傳輸延遲時間;另外,由於每個時段的網絡狀態不相同,因此,網絡傳輸延遲時間需要每隔一段時間計算一次。[0042]S303:距離上次發送同一丟包的重傳請求的時間是否大於所述網絡傳輸延遲時間,若是,則執行S304,若否,則執行S305。
[0043]S304:再次發送該丟包的重傳請求。因為,此時,所述丟包在超過網絡傳輸延遲時間後還沒有收到,即此重傳的丟包在網絡傳輸中又丟失了,因此,所述丟包需要再一次發送重傳請求。
[0044]S305:不發送該丟包的重傳請求。此時,還沒有收到對此丟包的重傳,只是因為網絡延遲的原因。那麼在此次丟包重傳請求中就不需要對此丟包發送重傳請求,避免了過多重複的向丟包發送端發送丟包重傳請求,從而減少了帶寬的浪費,提高了重傳的效率。
[0045]本實施例提供的丟包重傳的方法,根據計算距離上次發送重傳請求的時間來篩選丟包是否需要發送重傳請求,避免了過多發送重傳請求的次數,從而減少了帶寬的浪費,提高了網絡數據傳輸的效率。
[0046]另外,在實際應用中,經常是多個丟包並存的方式存在的,對於終端中存在多個丟包時,所述丟包在終端中將以丟包數組的形式存在。所述丟包數組的產生過程為:接收到新的數據包後,判斷該新的數據包是否是重傳的丟包,若是,則將此包在丟包數組中剔除;若否,則檢測該數據包是否存在丟包,若存在新的丟包,則將新的丟包加入丟包數組中,並將丟包對應的標誌位置為O。此時,其丟包重傳的方法具體為:如圖4所示,為本發明另一實施例所示的一種丟包重傳的方法流程圖。請參見圖4,該丟包重傳的方法開始後,
[0047]S401:預設間隔時間到達。所述預設間隔時間為每次檢測其丟包是否需要發送重傳請求的間隔時間。
[0048]S402:對丟包對應的標誌位進行加I運算。若此時標誌位的取值為0,則進行加I運算後,該標誌位的取值為I ;若此時標誌位的取值為1,則進行加I運算後,該標誌位的取值為2。
[0049]S403:判斷丟包對應標誌位是否為1,若是,則執行S405 ;若否,則執行S404。
[0050]S404:計算標誌位對應的丟包距離上次重傳請求的時間是否大於網絡傳輸延遲時間,若是,則執行,S405 ;若否,則結束本次操作。距離上次發送同一丟包的重傳請求的時間的計算過程為:將標誌位的取值減I後,再乘以所述預設間隔時間;所述網絡傳輸延遲時間的計算方法為發送網絡延遲探測包到發送端;計算收到所述發送端發送的網絡延遲應答包和發送網絡延遲探測包的時間差,所述時間差即為此時的網絡傳輸延遲時間。
[0051]S405:發送該丟包的重傳請求。因為若丟包對應的標誌位為I,則表示此丟包為一個新的丟包,所以需要發送重傳請求;若該丟包距離上次重傳請求的時間大於網絡傳輸延遲時間,則表示此丟包超過網絡傳輸延遲時間後還沒有收到,即此重傳的丟包在網絡傳輸中又丟失了,因此,所述丟包需要發送重傳請求。
[0052]S406:將丟包對應的標誌位取值置為I。這樣是為了更加方便在下次預設間隔時間到來時,計算所述距離上次發送同一丟包的重傳請求的時間。
[0053]使用本發明的丟包重傳的方法可以在顯著降低重傳帶寬的境況下,同時保證對丟包及時的重傳請求,尤其是在網絡延遲比較大,丟包率比較高的情況下。假設當前網絡丟包率是20%,在假設重傳的網絡丟包不再丟失的理想情況下,那麼傳輸I個單位的帶寬就需要重傳1χ20%=0.2的額外丟包重傳帶寬,所以總帶寬為1+0.2=1.2。如果此時網絡延遲是100ms,為了保證低延遲,丟包重傳的預設間隔時間設置為20ms (對於50幀/秒的視頻而言是一幀圖像的延遲時間),如果不使用本發明丟包重傳的方法,那麼在這IOOms內對同樣丟包的重傳請求會發送100/20=5次,產生的額外丟包重傳帶寬為5x0.2=1,這樣總帶寬為1+1=2,這比上述理想情況需要的帶寬使用量1.2高出(2-1.2)/1.2,約為66%,如果使用本發明丟包重傳的方法,可保證在IOOms內對同樣的丟包只發出一個重傳請求,這樣產生的重傳帶寬和上述理想情況需要的帶寬使用量1.2 一樣,這相當於比不使用本發明的方法節約了(2-1.2)/2=40%的帶寬使用量。
[0054]本實施例提供的丟包重傳的方法,其主要特點是,有選擇地發送丟包重傳請求,從而減少發送重傳請求的次數,使得發送端不會對某個丟包多次重傳,節約了帶寬使用量,這樣,網絡數據的傳輸將更加暢通、快捷。
[0055]本發明提供一種丟包重傳的方法及終端,所述終端能夠根據計算出的距離上次發送同一丟包的重傳請求的時間與網絡傳輸延遲時間進行比較,若距離上次發送同一丟包的重傳請求的時間大於網絡傳輸延遲時間,則判斷此丟包需要發送重傳請求。使得發送端不會由於多次收到某個丟包的重傳請求而對該丟包進行多次重發,從而減少了網絡帶寬的使用,使得網絡數據的傳輸更加快速。
[0056]以上內容是結合具體的實施方式對本發明所作的進一步詳細說明,不能認定本發明的具體實施只局限於這些說明。對於本發明所屬【技術領域】的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬於本發明的保護範圍。
【權利要求】
1.一種終端,其特徵在於,包括: 時間計算模塊,用於計算距離上次發送同一丟包的重傳請求的時間; 時間比較模塊,用於將所述時間計算模塊所得到的時間與網絡傳輸延遲時間進行比較; 丟包重傳判斷模塊,用於判斷所述時間比較模塊得到的結果是否為距離上次發送同一丟包的重傳請求的時間大於所述網絡傳輸延遲時間,若是,則再次發送該丟包的重傳請求。
2.根據權利要求1所述的終端,其特徵在於,所述丟包重傳判斷模塊還包括:若否,則不發送重傳請求。
3.根據權利要求2所述的終端,其特徵在於,所述時間計算模塊具體包括: 標誌位設置子模塊,用於設置丟包對應一個標誌位,標誌位的初始值為O ; 標誌位運算子模塊,用於若預設間隔時間到達,則對丟包對應的標誌位進行加I運算;標誌位判斷子模塊,用於判斷標誌位的取值是否為1,若是,則直接發送該丟包的重傳請求; 時間計算子模塊,用於根據所述標誌位判斷子模塊中的判斷結果為否時,計算所述距離上次發送同一丟包的重傳請求的時間為:標誌位的取值減I後,再乘以所述預設間隔時間。 所述丟包重傳判斷模塊還用於將需要再次發送重傳請求的丟包所對應的標誌位的取值置為I。
4.根據權利要求1-3任一項所述的終端,其特徵在於,還包括網絡傳輸延遲時間計算模塊,具體用於發送網絡延遲探測包到丟包發送端,計算所述丟包發送端對所述網絡延遲探測包的反饋時間即為所述網絡傳輸延遲時間。
5.—種丟包重傳的方法,其特徵在於,包括: 計算距離上次發送同一丟包的重傳請求的時間; 將所述距離上次發送同一丟包的重傳請求的時間與網絡傳輸延遲時間進行比較; 判斷所述距離上次發送同一丟包的重傳請求的時間是否大於所述網絡傳輸延遲時間,若是,則再次發送該丟包的重傳請求。
6.根據權利要求5所述的丟包重傳的方法,其特徵在於,還包括:若否,則不發送重傳請求。
7.根據權利要求6所述的丟包重傳的方法,其特徵在於,計算距離上次發送同一丟包的重傳請求的時間具體包括: 設置丟包對應一個標誌位,標誌位的初始值為O ; 若預設間隔時間到達,則對丟包對應的標誌位進行加I運算;判斷標誌位的取值是否為1,若是,則直接發送該丟包的重傳請求;若否,則所述距離上次發送同一丟包的重傳請求的時間為:標誌位的取值減I後,再乘以所述預設間隔時間;所述再次發送該丟包的重傳請求之後還包括:將該丟包所對應的標誌位的取值置為1
8.根據權利要求5-7任一項所述的丟包重傳的方法,其特徵在於,所述網絡傳輸延遲時間計算方法包括:發送網絡延遲探測包到丟包發送端,計算所述丟包發送端對所述網絡延遲探測包的反饋時間即為所述網絡延遲時間。
【文檔編號】H04L1/18GK103763073SQ201410010764
【公開日】2014年4月30日 申請日期:2014年1月9日 優先權日:2014年1月9日
【發明者】魯銳 申請人:深圳市迪威視訊股份有限公司