接收報文的方法及裝置制造方法
【專利摘要】本發明公開了一種接收報文的方法及裝置,屬于網絡通信領域。所述方法包括:接收傳輸控制協議TCP接收器發送的重復確認報文,所述重復確認報文是由第一數據報文觸發的;檢測第二數據報文是否亂序到達所述TCP接收器;若檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行對所述重復確認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復確認報文的操作。本發明在通過檢測到第二數據報文亂序到達所述TCP接收器,避免避免執行對所述重復確認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復確認報文的操作,解決了因亂序引發的數據報文重傳的問題,達到了大大提高網絡的有效容量的目的。
【專利說明】接收報文的方法及裝置
【技術領域】
[0001] 本發明涉及網絡通信領域,特別涉及接收報文的方法及裝置。
【背景技術】
[0002] 在網絡傳輸過程中,不同主機之間經常需要可靠的連接以實現數據報文的可靠傳 輸。TCP (Transmission Control Protocol,傳輸控制協議)是實現數據報文的可靠傳輸的 一種機制。
[0003] TCP報文可以是數據報文或者確認報文(ACK)。所述數據報文為TCP發送器 (Transmission Control Protocol sender, TCP sender)向 TCP 接收器(Transmission Control Protocol receiver,TCP receiver)發送的包含有數據段(segment)的報文。所 述確認報文是指TCP接收器接收到數據報文后,根據所述接收到的數據報文向所述TCP發 送器發送的報文。
[0004] 現有技術提供的通過TCP網絡傳輸數據的方法可以包括:
[0005] TCP發送器向TCP接收器發送包含數據段的數據報文。所述TCP接收器接收到所 述數據報文后,根據所述數據報文向所述TCP發送器發送確認報文。所述TCP發送器根據 所述TCP接收器發送的所述確認報文向所述TCP接收器重傳所述TCP發送器已經發送的數 據報文。上述傳輸數據的方法可能導致TCP網絡發生擁塞。
【發明內容】
[0006] 本發明實施例提供了接收報文的方法、裝置及系統,有助于降低TCP網絡發生擁 塞的概率。
[0007] 第一方面,提供了一種接收報文的方法,所述方法包括:
[0008] 接收TCP接收器發送的重復確認報文(duplicate ACK),所述重復確認報文是由 第一數據報文觸發的;
[0009] 檢測第二數據報文是否亂序到達所述TCP接收器,TCP發送器發送所述第一數據 報文的順序晚于所述TCP發送器發送所述第二數據報文的順序,所述TCP接收器接收所述 第一數據報文的順序早于所述TCP接收器接收所述第二數據報文的順序;
[0010] 若檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行對所述重 復確認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復確認報文的操 作。
[0011] 在第一方面的第一種可能的實施方式中,所述檢測第二數據報文是否亂序到達所 述TCP接收器,包括 :
[0012] 接收所述TCP接收器發送的確認報文;
[0013] 檢測所述確認報文中的確認號碼(Acknowledgement Number)是否不同于所述重 復確認報文中的確認號碼;
[0014] 若檢測結果為所述確認報文中的確認號碼不同于所述重復確認報文中的確認號 碼,則確認所述第二數據報文亂序到達所述TCP接收器。
[0015] 結合第一方面或者第一方面的第一種可能的實施方式,在第二種可能的實施方式 中,所述檢測第二數據報文是否亂序到達所述TCP接收器,包括 :
[0016] 接收所述TCP接收器發送的確認報文;
[0017] 檢測所述確認報文中的回顯應答(Timestamp Echo Reply, TSecr)字段是否小于 所述重復確認報文中的回顯應答字段;
[0018] 若檢測結果為所述確認報文中的回顯應答字段小于所述重復確認報文中的回顯 應答字段,則確認所述第二數據報文亂序到達所述TCP接收器。
[0019] 結合第一方面、第一方面的第一種可能的實施方式或者第一方面的第二種可能的 實施方式,在第三種可能的實施方式中,所述檢測第二數據報文是否亂序到達所述TCP接 收器,包括:
[0020] 接收所述TCP接收器發送的確認報文;
[0021] 檢測所述確認報文是否包含所述重復確認報文中的選擇性確認選項(SACK option)中的第一塊(1 st Block);
[0022] 若檢測結果為所述確認報文不包含所述重復確認報文中的所述第一塊,則確認所 述第二數據報文亂序到達所述TCP接收器。
[0023] 結合第一方面、第一方面的第一種可能的實施方式、第一方面的第二種可能的實 施方式或者第一方面的第三種可能的實施方式,在第四種可能的實施方式中,所述接收所 述TCP接收器發送的確認報文包括 :
[0024] 從接收所述重復確認報文的時間開始,在第一時間間隔內接收所述確認報文, 所述第一時間間隔小于所述TCP發送器的重傳定時器的等待時間(RETRANSMISSION TIMEOUT)。
[0025] 第二方面,提供了一種接收報文的裝置,所述裝置包括:
[0026] 接收單元,用于接收傳輸控制協議TCP接收器發送的重復確認報文,所述重復確 認報文是由第一數據報文觸發的;
[0027] 檢測單元,用于檢測第二數據報文是否亂序到達所述TCP接收器,TCP發送器發送 所述第一數據報文的順序晚于所述TCP發送器發送所述第二數據報文的順序,所述TCP接 收器接收所述第一數據報文的順序早于所述TCP接收器接收所述第二數據報文的順序;
[0028] 執行單元,用于在所述檢測單元的檢測結果為所述第二數據報文亂序到達所述 TCP接收器時,避免執行對所述重復確認報文進行響應的操作或者避免執行向所述TCP接 收器轉發所述重復確認報文的操作。
[0029] 在第二方面的第一種可能的實施方式中,所述檢測單元,包括:
[0030] 接收子單元,用于接收所述TCP接收器發送的確認報文;
[0031] 檢測子單元,用于檢測所述接收子單元接收的確認報文中的確認號碼是否不同于 所述接收單元接收的重復確認報文中的確認號碼;
[0032] 確認子單元,用于在所述檢測子單元的檢測結果為所述確認報文中的確認號碼不 同于所述重復確認報文中的確認號碼時,確認所述第二數據報文亂序到達所述TCP接收 器。
[0033] 結合第二方面或者第二方面的第一種可能的實施方式,在第二種可能的實施方式 中,所述檢測單元,包括:
[0034] 接收子單元,用于接收所述TCP接收器發送的確認報文;
[0035] 檢測子單元,用于檢測所述接收子單元接收的確認報文中的回顯應答字段是否小 于所述接收單元接收的重復確認報文中的回顯應答字段;
[0036] 確認子單元,用于在所述檢測子單元的檢測結果為所述確認報文中的回顯應答字 段小于所述重復確認報文中的回顯應答字段時,確認所述第二數據報文亂序到達所述TCP 接收器。
[0037] 結合第二方面、第二方面的第一種可能的實施方式或者第二方面的第二種可能的 實施方式,在第三種可能的實施方式中,所述檢測單元,包括 :
[0038] 接收子單元,用于接收所述TCP接收器發送的確認報文;
[0039] 檢測子單元,用于檢測所述接收子單元接收的確認報文是否包含所述接收單元接 收的重復確認報文中的選擇性確認選項中的第一塊;
[0040] 確認子單元,用于在所述檢測子單元的檢測結果為所述確認報文不包含所述重復 確認報文中的所述第一塊時,確認所述第二數據報文亂序到達所述TCP接收器。
[0041] 結合第二方面、第二方面的第一種可能的實施方式、第二方面的第二種可能的實 施方式或者第二方面的第三種可能的實施方式,在第四種可能的實施方式中,所述接收子 單元,用于:
[0042] 從接收所述重復確認報文的時間開始,在第一時間間隔內接收所述確認報文,所 述第一時間間隔小于所述TCP發送器的重傳定時器的等待時間。
[0043] 第三方面,提供了一種接收報文的系統,所述系統包括TCP發送器和TCP接收器, 其中TCP發送器包括第二方面或者第二方面的任意一種可能的實現方式中的接收報文的 裝直。
[0044] 第四方面,提供了一種接收報文的系統,所述系統包括TCP發送器、中間節點和 TCP接收器,所述中間節點包括第二方面或者第二方面的任意一種可能的實現方式中的接 收報文的裝置。
[0045] 第五方面,提供了一種接收報文的設備,所述設備,包括:
[0046] 接收器,用于接收傳輸控制協議TCP接收器發送的重復確認報文,所述重復確認 報文是由第一數據報文觸發的;
[0047] 處理器,用于檢測第二數據報文是否亂序到達所述TCP接收器,TCP發送器發送所 述第一數據報文的順序晚于所述TCP發送器發送所述第二數據報文的順序,所述TCP接收 器接收所述第一數據報文的順序早于所述TCP接收器接收所述第二數據報文的順序;
[0048] 所述處理器,還用于在檢測結果為所述第二數據報文亂序到達所述TCP接收器 時,避免執行對所述重復確認報文進行響應的操作或者避免執行向所述TCP接收器轉發所 述重復確認報文的操作。
[0049] 在第五方面的第一種可能的實施方式中,
[0050] 所述接收器,還用于接收所述TCP接收器發送的確認報文;
[0051] 所述處理器,還用于檢測所述確認報文中的確認號碼是否不同于所述重復確認報 文中的確認號碼;
[0052] 所述處理器,還用于在檢測結果為所述確認報文中的確認號碼不同于所述重復確 認報文中的確認號碼時,確認所述第二數據報文亂序到達所述TCP接收器。
[0053] 結合第五方面或者第五方面的第一種可能的實施方式,在第二種可能的實施方式 中,
[0054] 所述接收器,還用于接收所述TCP接收器發送的確認報文;
[0055] 所述處理器,還用于檢測所述確認報文中的回顯應答字段是否小于所述重復確認 報文中的回顯應答字段;
[0056] 所述處理器,還用于在檢測結果為所述確認報文中的回顯應答字段小于所述重復 確認報文中的回顯應答字段時,確認所述第二數據報文亂序到達所述TCP接收器。
[0057] 結合第五方面、第五方面的第一種可能的實施方式或者第五方面的第二種可能的 實施方式,在第三種可能的實施方式中,
[0058] 所述接收器,還用于接收所述TCP接收器發送的確認報文;
[0059] 所述處理器,還用于檢測所述確認報文是否包含所述重復確認報文中的選擇性確 認選項中的第一塊;
[0060] 所述處理器,還用于在檢測結果為所述確認報文不包含所述重復確認報文中的所 述第一塊時,確認所述第二數據報文亂序到達所述TCP接收器。
[0061] 結合第五方面、第五方面的第一種可能的實施方式、第五方面的第二種可能的實 施方式或者第五方面的第三種可能的實施方式,在第四種可能的實施方式中,所述接收機 還用于:
[0062] 從接收所述重復確認報文的時間開始,在第一時間間隔內接收所述確認報文,所 述第一時間間隔小于所述TCP發送器的重傳定時器的等待時間。
[0063] 第六方面,提供了一種接收報文的系統,所述系統包括TCP發送器和TCP接收器, 所述TCP發送器包括第五方面或者第五方面的任意一種可能的實現方式中的接收報文的 設備。
[0064] 第七方面,提供了一種接收報文的系統,所述系統包括TCP發送器、中間節點和 TCP接收器,所述中間節點包括第五方面或者第五方面的任意一種可能的實現方式中的接 收報文的設備。
[0065] 上述技術方案中,接收所述重復確認報文后,檢測所述第二數據報文是否亂序到 達所述TCP接收器。如果檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免 執行對所述重復確認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復 確認報文的操作。也就是說,如果檢測結果為所述第二數據報文亂序到達所述TCP接收器, 則對所述重復確認報文進行抑制(suppress)。在避免執行對所述重復確認報文進行響應的 操作的場景中,所述TCP發送器不會對所述重復確認報文進行響應,所述TCP發送器不會重 傳所述第二數據報文;在避免執行向所述TCP發送器轉發所述重復確認報文的操作的場景 中,中間節點不會向所述TCP發送器轉發所述重復確認報文,所述TCP發送器不會收到所述 重復確認報文,因此,所述TCP發送器就不會重傳所述第二數據報文。因此,上述技術方案 有助于減少TCP發送器重傳亂序到達TCP接收器的數據報文的可能性。上述技術方案有助 于降低TCP網絡發生擁塞的概率。
【專利附圖】
【附圖說明】
[0066] 為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于 本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他 的附圖。
[0067] 圖1是本發明實施例提供的組網架構的結構示意圖;
[0068] 圖2是本發明實施例提供的接收報文的方法的流程示意圖;
[0069] 圖3A是本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖;
[0070] 圖3B是本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖;
[0071] 圖4A是本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖;
[0072] 圖4B是本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖;
[0073] 圖5是本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖;
[0074] 圖6是本發明實施例提供的接收報文的裝置的結構示意圖;
[0075] 圖7是本發明實施例提供的接收報文的裝置的結構示意圖。
【具體實施方式】
[0076] 為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明實施方 式作進一步地詳細描述。
[0077] 發明人發現TCP網絡可能存在如下現象:在數據報文尚未到達TCP接收器時,TCP 發送器根據接收到的確認報文確定所述數據報文發生了丟棄。進而所述TCP發送器重傳所 述數據報文。因此,所述數據報文和所述重傳的數據報文都會在TCP網絡中傳輸。上述現象 可能導致所述TCP網絡發生擁塞。發明人發現上述現象的原因是所述數據報文在所述TCP 網絡中傳輸時發生延遲。但是事實上所述數據報文并沒有發生丟棄。
[0078] 為了更清楚的描述本發明,在描述本發明的各個實施例之前,對TCP涉及的部分 技術方案進行列舉:
[0079] TCP報文通常包含確認號碼(Acknowledgement Number)、選擇性確認選項(SACK option)和時間戮選項(Timestamp option)。
[0080] 確認號碼為TCP接收器期望接收到的數據段中第一個字節的序列號。
[0081] 選擇性確認選項包含至少一個塊(Block)。每個塊均包含不連續數據段的左邊界 值和右邊界值。所述不連續數據段的第一個字節的序列號與TCP接收器接收到所述不連續 數據段之前接收到的每個數據段中的最后一個字節的序列號不相鄰。所述左邊界值表示所 述不連續數據段中第一個字節的序列號。所述右邊界值表示所述不連續數據段中最后一個 字節的序列號。
[0082] 時間戳選項包含時間戳(Timestamp Value,TSval)字段和回顯應答(TSecr)字段。 所述時間戳字段表示數據報文或確認報文的發送時間。
[0083] 圖1為本發明實施例提供的組網架構的結構示意圖。參見圖1,所述組網架構包括 TCP 發送器 110a 以及 110b、骨干網 120、BRAS (broadband remote access server,寬帶遠 程接入服務器)130和TCP接收器140a、140b以及140c。所述骨干網120可以包括多個數 據轉發設備。所述多個數據轉發設備包括路由器120a、路由器120b、路由器120c和路由器 120d。
[0084] 圖1中的每個TCP發送器可以與每個TCP接收器通信。下面僅描述TCP發送器 110a與TCP接收器140a的通信。
[0085] 所述TCP發送器110a通過所述骨干網120將數據報文發送給所述BRAS130。
[0086] 所述BRAS130將所述數據報文轉發給所述TCP接收器140a。
[0087] 所述TCP接收器140a接收到所述數據報文后,根據所述數據報文生成確認報文并 將所述確認報文發送給所述BRAS130。
[0088] 所述BRAS130將所述確認報文通過所述骨干網120發送給所述TCP發送器110a。
[0089] 上面僅描述了所述TCP發送器110a和所述TCP接收器140a的通信。其他TCP發 送器和其他TCP接收器也可以通過類似方式進行通信。
[0090] 圖1中的TCP發送器可以為視頻服務器、音頻服務器或者文件服務器。圖1中,TCP 發送器到TCP接收器的TCP鏈路可以包括中間節點。所述中間節點可以是路由器、交換機、 BRAS、防火墻或者負載均衡器。
[0091] 圖2為本發明實施例提供的接收報文的方法的流程示意圖。所述方法的執行主體 可以為TCP發送器或從TCP發送器到TCP接收器的TCP路徑的中間節點。如圖2所示,所 述方法包括:
[0092] 201、接收TCP接收器發送的重復確認報文,所述重復確認報文是由第一數據報文 觸發的。
[0093] 舉例來說,所述中間節點或所述TCP發送器接收所述TCP接收器發送的第一確認 報文。如果所述第一確認報文中的確認號碼與第二確認報文中的確認號碼相同,則確定所 述第一確認報文為所述重復確認報文。所述第二確認報文為所述中間節點或所述TCP發送 器在接收所述第一確認報文前接收的確認報文。
[0094] 舉例來說,所述重復確認報文是所述TCP接收器根據所述第一數據報文生成的確 認報文。
[0095] 202、檢測第二數據報文是否亂序到達所述TCP接收器,TCP發送器發送所述第一 數據報文的順序晚于所述TCP發送器發送所述第二數據報文的順序,所述TCP接收器接收 所述第一數據報文的順序早于所述TCP接收器接收所述第二數據報文的順序。
[0096] 舉例來說,所述檢測第二數據報文是否亂序到達所述TCP接收器可以包括:
[0097] 根據所述重復確認報文檢測所述第二數據報文是否亂序到達所述TCP接收器。
[0098] 203、若檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行對所 述重復確認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復確認報文 的操作。
[0099] 舉例來說,當201和202的執行主體為所述TCP發送器時,若所述TCP發送器通過 202得到的檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行對所述重 復確認報文進行響應的操作。
[0100] 舉例來說,當201和202的執行主體為所述中間節點時,若所述中間節點通過202 得到的檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行向所述TCP發 送器轉發所述重復確認報文的操作。
[0101] 上述技術方案中,接收所述重復確認報文后,檢測所述第二數據報文是否亂序到 達所述TCP接收器。如果檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免 執行對所述重復確認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復 確認報文的操作。也就是說,如果檢測結果為所述第二數據報文亂序到達所述TCP接收器, 則對所述重復確認報文進行抑制。在避免執行對所述重復確認報文進行響應的操作的場景 中,所述TCP發送器不會對所述重復確認報文進行響應,所述TCP發送器不會重傳所述第二 數據報文;在避免執行向所述TCP發送器轉發所述重復確認報文的操作的場景中,中間節 點不會向所述TCP發送器轉發所述重復確認報文。所述TCP發送器不會收到所述重復確認 報文。因此,所述TCP發送器就不會重傳所述第二數據報文。因此,上述技術方案有助于 減少TCP發送器重傳亂序到達TCP接收器的數據報文的可能性。上述技術方案有助于降低 TCP網絡發生擁塞的概率。
[0102] 可選地,圖2所示的方法中,
[0103] 所述檢測第二數據報文是否亂序到達所述TCP接收器,包括:
[0104] 接收所述TCP接收器發送的確認報文。
[0105] 檢測所述確認報文中的確認號碼是否不同于所述重復確認報文中的確認號碼。
[0106] 若檢測結果為所述確認報文中的確認號碼不同于所述重復確認報文中的確認號 碼,則確認所述第二數據報文亂序到達所述TCP接收器。
[0107] 圖3A為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。 如圖3A所示,TCP發送器向TCP接收器發送數據報文的順序分別是D1、D2和D3。D1、D2和 D3包含的數據段中的第一個字節的序列號和最后一個字節的序列號分別是:D1 (0,2799)、 D2 (2800, 3799)和D3 (3800,4799)。如果D1、D2和D3在傳輸過程中沒有發生亂序,則所 述TCP接收器的接收順序分別是D1、D2和D3。所述TCP接收器分別根據D1、D2和D3生成 確認報文ACK1、ACK2和ACK3。所述TCP接收器分別向所述TCP發送器發送ACK1、ACK2和 ACK3。其中,ACK1、ACK2和ACK3中包含的確認號碼分別是ACK1 (2800)、ACK2 (3800)和 ACK3 (4800)。
[0108] 圖3B為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。 圖3B所示的TCP發送器可以用于執行圖2所示的方法。圖3B包含的兩個網元分別是TCP 發送器和TCP接收器。可選地,可以將圖3B中的TCP發送器替換為TCP發送器到TCP接收 器的TCP路徑的中間節點。如圖3B所示,TCP發送器向TCP接收器發送數據報文的順序分 別是Dl、D2和D3。Dl、D2和D3包含的數據段中的第一個字節的序列號和最后一個字節的 序列號分別是:D1 (0, 2799)、D2 (2800, 3799)和D3 (3800,4799)。如果D2在傳輸過程中 發生亂序,D3先于D2到達所述TCP接收器,則所述TCP接收器的接收數據報文的順序分別 是D1、D3和D2。所述TCP接收器分別根據D1、D3和D2生成確認報文ACKUACK2和ACK3。 所述TCP接收器分別向所述TCP發送器發送ACKUACK2和ACK3。其中,ACKUACK2和ACK3 中包含的確認號碼分別是ACK1 (2800)、ACK2 (2800)和ACK3 (4800)。ACK1中包含的確認 號碼和ACK2中包含的確認號碼相同。因此,ACK2是重復確認報文。由于ACK2中的確認號 碼不同于ACK3中的確認號碼,可以確定D2亂序到達所述TCP接收器。因此,TCP發送器可 以確定D2亂序到達所述TCP接收器。可選地,如果圖3B中的TCP發送器被替換為所述中 間節點,所述中間節點可以確定D2亂序到達所述TCP接收器。
[0109] 可選地,圖2所示的方法中,
[0110] 所述檢測第二數據報文是否亂序到達所述TCP接收器,包括:
[0111] 接收所述TCP接收器發送的確認報文。
[0112] 檢測所述確認報文中的回顯應答字段是否小于所述重復確認報文中的回顯應答 字段。
[0113] 若檢測結果為所述確認報文中的回顯應答字段小于所述重復確認報文中的回顯 應答字段,則確認所述第二數據報文亂序到達所述TCP接收器。
[0114] 圖4A為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。如 圖4A所示,所述TCP發送器向所述TCP接收器發送數據報文的順序分別是Dl、D2……Dn。 所述TCP接收器接收數據報文的順序為D1、D2……Dn。D1、D2……Dn分別觸發所述TCP接 收器發送確認報文 ACK (D1)、ACK (D2) ......ACK (Dn)。D1、D2......Dn 以及 ACK (D1)、ACK (D2)……ACK (Dn)中都包含了 TSecr以及TSval。關于數據報文以及確認報文中包含的 TSecr以及TSval,具體請參考圖4A。
[0115] 圖4B為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。 圖4B所示的TCP發送器可以用于執行圖2所示的方法。圖4B包含的兩個網元分別是TCP 發送器和TCP接收器。可選地,可以將圖4B中的TCP發送器替換為TCP發送器到TCP接收 器的TCP路徑的中間節點。如圖4B所示,TCP發送器向TCP接收器發送數據報文的順序分 別是P1、P2、P3和P4。P1、P2、P3和P4中包含的TSval分別是:1、5、8和10。如果P2在傳 輸過程中發生亂序,P2最后到達所述TCP接收器,則所述TCP接收器的接收數據報文的順 序分別是P1、P3、P4和P2。所述TCP接收器分別根據P1、P3、P4和P2生成確認報文ACK1、 ACK2、ACK3和ACK4。所述TCP接收器分別向所述TCP發送器發送ACK1、ACK2、ACK3和ACK4。 其中,ACK1、ACK2、ACK3和ACK4中包含的TSecr分別是1、8、10和5。ACK3中包含的確認號 碼和ACK1中包含的確認號碼相同。因此,ACK3是重復確認報文。由于ACK4中的TSecr小 于ACK3中的TSecr,可以確定P2亂序到達所述TCP接收器。因此,TCP發送器可以確定P2 亂序到達所述TCP接收器。可選地,如果圖4B中的TCP發送器被替換為所述中間節點,所 述中間節點可以確定P2亂序到達所述TCP接收器。
[0116] 可選地,圖2所示的方法中,所述檢測第二數據報文是否亂序到達所述TCP接收 器,包括:
[0117] 接收所述TCP接收器發送的確認報文。
[0118] 檢測所述確認報文是否包含所述重復確認報文中的選擇性確認選項中的第一塊。
[0119] 若檢測結果為所述確認報文不包含所述重復確認報文中的所述第一塊,則確認所 述第二數據報文亂序到達所述TCP接收器。
[0120] 圖5為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。圖 5所示的TCP發送器可以用于執行圖2所示的方法。圖5包含的兩個網元分別是TCP發送 器和TCP接收器。可選地,可以將圖5中的TCP發送器替換為TCP發送器到TCP接收器的 TCP路徑的中間節點。如圖5所示,TCP發送器向TCP接收器發送數據報文的順序分別是 PI、P2、P3、P4 和 P5。PI、P2、P3、P4 和 P5 中包含的數據段分別是(0, 2799)、(2800, 3799)、 (3800,4799)、(4800,5799)和(5800,6799)。P1中包含的數據段中的第一個字節的序列號 是0。P1中包含的數據段中的最后一個字節的序列號是2799。P2中包含的數據段中的第 一個字節的序列號是2800。P2中包含的數據段中的最后一個字節的序列號是3799。P3中 包含的數據段中的第一個字節的序列號是3800。P3中包含的數據段中的最后一個字節的 序列號是4799。P4中包含的數據段中的第一個字節的序列號是4800。P4中包含的數據段 中的最后一個字節的序列號是5799。P5中包含的數據段中的第一個字節的序列號是5800。 P5中包含的數據段中的最后一個字節的序列號是6799。P2和P4在傳輸過程中發生亂序, 所述TCP接收器的接收數據報文的順序分別是PI、P3、P5、P2和P4。所述TCP接收器分別 根據PI、P3、P5、P2和P4生成確認報文ACK1、ACK2、ACK3、ACK4和ACK5。所述TCP接收器 分別向所述 TCP 發送器發送 ACK1、ACK2、ACK3、ACK4 和 ACK5。其中,ACK1、ACK2、ACK3、ACK4 和ACK5中包含的確認號碼分別是2800、2800、2800、4800和6800。ACK1中沒有包含SACK option。ACK2 中的 SACK option 包含第一塊(3800,4799)。ACK3 中的 SACK option 包含 第一塊(3800,4799)以及第二塊(5800,6799)、ACK4 中的 SACK option 包含第一塊(5800, 6799)。ACK5中沒有包含SACK option。ACK2中的確認號碼等于ACK1中的確認號碼。ACK2 是重復確認報文。ACK1中沒有包含第一塊。不能確定P3發生亂序。ACK3中確認號碼等于 ACK1中的確認號碼。ACK3是重復確認報文。ACK2中的第一塊是(3800,4799)。ACK3中的 第一塊是(3800,4799),第二塊是(5800,6799)。也就是說ACK3中包含了 ACK2中的第一塊。 不能確定P5發生亂序。ACK4中包含第一塊是(5800,6799)。ACK4中沒有包含ACK3中的 第一塊(3800,4799)。可以確定P2發生亂序。因此,TCP發送器可以確定P2亂序到達所述 TCP接收器。可選地,如果圖5中的TCP發送器被替換為所述中間節點,所述中間節點可以 確定P2亂序到達所述TCP接收器。
[0121] 可選地,圖2所示的方法中,
[0122] 所述接收所述TCP接收器發送的確認報文,包括:
[0123] 從接收所述重復確認報文的時間開始,在第一時間間隔內接收所述確認報文,所 述第一時間間隔小于所述TCP發送器的重傳定時器的等待時間。
[0124] 舉例來說,所述TCP發送器向所述TCP接收器發送數據報文后,等待所述TCP接收 器根據所述數據報文發送的響應。如果所述數據報文在傳輸過程中發生丟棄,或所述TCP 接收器發送的響應在傳輸過程中發生丟棄,則所述TCP發送器無法接收到所述TCP接收器 根據所述數據報文發送的響應。理論上,如果所述TCP發送器無法接收到所述TCP接收器 根據所述數據報文發送的響應,所述TCP發送器可以一直處于等待狀態。為了避免上述情 況的發生,所述TCP發送器可以包括一個重傳定時器,所述重傳定時器對應時間間隔。所述 重傳定時器在所述TCP發送器發送所述數據報文時開始計時,如果所述TCP發送器在所述 時間間隔內接收到所述TCP接收器根據所述數據報文生成的響應,則所述TCP發送器發送 其他數據報文。如果所述TCP發送器在所述時間間隔內未接收到所述TCP接收器根據所述 數據報文生成的響應,則重傳所述數據報文。
[0125] 可選地,圖2所示的方法中,
[0126] 如果在所述第一時間間隔內沒有收到所述確認報文,則所述TCP發送器發送所述 第二數據報文。
[0127] 可選地,圖2所示的方法中,
[0128] 如果在所述第一時間間隔內沒有收到所述確認報文,則所述TCP發送器到所述 TCP接收器的TCP鏈路的中間節點向所述TCP發送器轉發所述重復確認報文。
[0129] 舉例來說,圖2所示的方法可以應用于圖1所示的組網架構。具體來說,圖2所示 的方法的執行主體可以是圖1所示的組網架構中的TCP發送器110a或者110b。圖2中的 TCP發送器可以是圖1所示的組網架構中的TCP發送器110a或者110b。圖2中的TCP接 收器可以是圖1所示的組網架構中的TCP接收器140a、140b或者140c。
[0130] 圖6為本發明實施例提供的接收報文的裝置的結構示意圖。所述裝置可以是TCP 發送器或從TCP發送器到TCP接收器的TCP路徑的中間節點。如圖6所示,所述裝置包括:
[0131] 接收單元601,用于接收TCP接收器發送的重復確認報文,所述重復確認報文是由 第一數據報文觸發的。
[0132] 舉例來說,所述中間節點或所述TCP發送器接收所述TCP接收器發送的第一確認 報文。如果所述第一確認報文中的確認號碼與第二確認報文中的確認號碼相同,則確定所 述第一確認報文為所述重復確認報文。所述第二確認報文為所述中間節點或所述TCP發送 器在接收所述第一確認報文前接收的確認報文。
[0133] 舉例來說,所述重復確認報文是所述TCP接收器根據所述第一數據報文生成的確 認報文。
[0134] 檢測單元602,用于檢測第二數據報文是否亂序到達所述TCP接收器,TCP發送 器發送所述第一數據報文的順序晚于所述TCP發送器發送所述第二數據報文的順序,所述 TCP接收器接收所述第一數據報文的順序早于所述TCP接收器接收所述第二數據報文的順 序。
[0135] 舉例來說,所述檢測單元602用于根據所述接收單元601接收到的重復確認報文 檢測所述第二數據報文是否亂序到達所述TCP接收器。
[0136] 執行單元603,用于在所述檢測單元602的檢測結果為所述第二數據報文亂序到 達所述TCP接收器時,避免執行對所述重復確認報文進行響應的操作或者避免執行向所述 TCP發送器轉發所述重復確認報文的操作。
[0137] 舉例來說,所述裝置為所述TCP發送器時,若所述TCP發送器通過檢測單元602得 到的檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行對所述重復確認 報文進行響應的操作。
[0138] 舉例來說,所述裝置為所述TCP發送器時,若所述中間節點通過檢測單元602得到 的檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行向所述TCP發送器 轉發所述重復確認報文的操作。
[0139] 上述技術方案中,接收所述重復確認報文后,檢測所述第二數據報文是否亂序到 達所述TCP接收器。如果檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免 執行對所述重復確認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復 確認報文的操作。也就是說,如果檢測結果為所述第二數據報文亂序到達所述TCP接收器, 則對所述重復確認報文進行抑制。在避免執行對所述重復確認報文進行響應的操作的場景 中,所述TCP發送器不會對所述重復確認報文進行響應,所述TCP發送器不會重傳所述第二 數據報文;在避免執行向所述TCP發送器轉發所述重復確認報文的操作的場景中,中間節 點不會向所述TCP發送器轉發所述重復確認報文。所述TCP發送器不會收到所述重復確認 報文。因此,所述TCP發送器就不會重傳所述第二數據報文。因此,上述技術方案有助于 減少TCP發送器重傳亂序到達TCP接收器的數據報文的可能性。上述技術方案有助于降低 TCP網絡發生擁塞的概率。
[0140] 可選地,圖6所示的裝置中,所述檢測單元602包括:
[0141] 接收子單元,用于接收所述TCP接收器發送的確認報文。
[0142] 檢測子單元,用于檢測所述接收子單元接收的確認報文中的確認號碼是否不同于 所述接收單元接收的重復確認報文中的確認號碼。
[0143] 確認子單元,用于在所述檢測子單元的檢測結果為所述確認報文中的確認號碼不 同于所述重復確認報文中的確認號碼時,確認所述第二數據報文亂序到達所述TCP接收 器。
[0144] 圖3A為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。 如圖3A所示,TCP發送器向TCP接收器發送數據報文的順序分別是D1、D2和D3。D1、D2和 D3包含的數據段中的第一個字節的序列號和最后一個字節的序列號分別是:D1 (0,2799)、 D2 (2800, 3799)和D3 (3800,4799)。如果D1、D2和D3在傳輸過程中沒有發生亂序,則所 述TCP接收器的接收順序分別是D1、D2和D3。所述TCP接收器分別根據D1、D2和D3生成 確認報文ACK1、ACK2和ACK3。所述TCP接收器分別向所述TCP發送器發送ACK1、ACK2和 ACK3。其中,ACK1、ACK2和ACK3中包含的確認號碼分別是ACK1 (2800)、ACK2 (3800)和 ACK3 (4800)。
[0145] 圖3B為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。圖 6所示的裝置可以是圖3B所示的TCP發送器。圖3B包含的兩個網元分別是TCP發送器和 TCP接收器。可選地,可以將圖3B中的TCP發送器替換為TCP發送器到TCP接收器的TCP 路徑的中間節點。如圖3B所示,TCP發送器向TCP接收器發送數據報文的順序分別是D1、 D2和D3。D1、D2和D3包含的數據段中的第一個字節的序列號和最后一個字節的序列號分 別是:D1 (0,2799)、D2 (2800, 3799)和D3 (3800,4799)。如果D2在傳輸過程中發生亂序, D3先于D2到達所述TCP接收器,則所述TCP接收器的接收數據報文的順序分別是Dl、D3 和D2。所述TCP接收器分別根據D1、D3和D2生成確認報文ACKUACK2和ACK3。所述TCP 接收器分別向所述TCP發送器發送ACK1、ACK2和ACK3。其中,ACK1、ACK2和ACK3中包含 的確認號碼分別是ACK1 (2800)、ACK2 (2800)和ACK3 (4800)。ACK1中包含的確認號碼和 ACK2中包含的確認號碼相同。因此,ACK2是重復確認報文。由于ACK2中的確認號碼不同 于ACK3中的確認號碼,可以確定D2亂序到達所述TCP接收器。因此,TCP發送器可以確定 D2亂序到達所述TCP接收器。可選地,如果圖3B中的TCP發送器被替換為所述中間節點, 所述中間節點可以確定D2亂序到達所述TCP接收器。
[0146] 可選地,圖6所示的裝置中,所述檢測單元602包括:
[0147] 接收子單元,用于接收所述TCP接收器發送的確認報文。
[0148] 檢測子單元,用于檢測所述接收子單元接收的確認報文中的回顯應答字段是否小 于所述接收單元接收的重復確認報文中的回顯應答字段。
[0149] 確認子單元,用于在所述檢測子單元的檢測結果為所述確認報文中的回顯應答字 段小于所述重復確認報文中的回顯應答字段時,確認所述第二數據報文亂序到達所述TCP 接收器。
[0150] 圖4A為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。如 圖4A所示,所述TCP發送器向所述TCP接收器發送數據報文的順序分別是Dl、D2……Dn。 所述TCP接收器接收數據報文的順序為D1、D2……Dn。D1、D2……Dn分別觸發所述TCP接 收器發送確認報文 ACK (D1)、ACK (D2) ......ACK (Dn)。D1、D2......Dn 以及 ACK (D1)、ACK (D2)……ACK (Dn)中都包含了 TSecr以及TSval。關于數據報文以及確認報文中包含的 TSecr以及TSval,具體請參考圖4A。
[0151] 圖4B為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。圖 6所示的裝置可以是圖4B所示的TCP發送器。圖4B包含的兩個網元分別是TCP發送器和 TCP接收器。可選地,可以將圖4B中的TCP發送器替換為TCP發送器到TCP接收器的TCP 路徑的中間節點。如圖4B所示,TCP發送器向TCP接收器發送數據報文的順序分別是P1、 P2、P3和P4。PI、P2、P3和P4中包含的TSval分別是:1、5、8和10。如果P2在傳輸過程 中發生亂序,P2最后到達所述TCP接收器,則所述TCP接收器的接收數據報文的順序分別 是PI、P3、P4和P2。所述TCP接收器分別根據PI、P3、P4和P2生成確認報文ACK1、ACK2、 ACK3和ACK4。所述TCP接收器分別向所述TCP發送器發送ACK1、ACK2、ACK3和ACK4。其 中,ACK1、ACK2、ACK3和ACK4中包含的TSecr分別是1、8、10和5。ACK3中包含的確認號碼 和ACK1中包含的確認號碼相同。因此,ACK3是重復確認報文。由于ACK4中的TSecr小于 ACK3中的TSecr,可以確定P2亂序到達所述TCP接收器。因此,TCP發送器可以確定P2亂 序到達所述TCP接收器。可選地,如果圖4B中的TCP發送器被替換為所述中間節點,所述 中間節點可以確定P2亂序到達所述TCP接收器。
[0152] 可選地,圖6所示的裝置中,所述檢測單元602包括:
[0153] 接收子單元,用于接收所述TCP接收器發送的確認報文。
[0154] 檢測子單元,用于檢測所述接收子單元接收的確認報文是否包含所述接收單元接 收的重復確認報文中的選擇性確認選項中的第一塊。
[0155] 確認子單元,用于在所述檢測子單元的檢測結果為所述確認報文不包含所述重復 確認報文中的所述第一塊時,確認所述第二數據報文亂序到達所述TCP接收器。
[0156] 圖5為本發明實施例提供的TCP發送器與TCP接收器進行通信的流程示意圖。圖 6所示的裝置可以是圖5所示的TCP發送器。圖5包含的兩個網元分別是TCP發送器和TCP 接收器。可選地,可以將圖5中的TCP發送器替換為TCP發送器到TCP接收器的TCP路徑的 中間節點。如圖5所示,TCP發送器向TCP接收器發送數據報文的順序分別是P1、P2、P3、P4 和 P5。PI、P2、P3、P4 和 P5 中包含的數據段分別是(0, 2799)、(2800, 3799)、(3800,4799)、 (4800,5799)和(5800,6799)。P1中包含的數據段中的第一個字節的序列號是0。P1中包 含的數據段中的最后一個字節的序列號是2799。P2中包含的數據段中的第一個字節的序 列號是2800。P2中包含的數據段中的最后一個字節的序列號是3799。P3中包含的數據段 中的第一個字節的序列號是3800。P3中包含的數據段中的最后一個字節的序列號是4799。 P4中包含的數據段中的第一個字節的序列號是4800。P4中包含的數據段中的最后一個字 節的序列號是5799。P5中包含的數據段中的第一個字節的序列號是5800。P5中包含的數 據段中的最后一個字節的序列號是6799。P2和P4在傳輸過程中發生亂序,所述TCP接收器 的接收數據報文的順序分別是PI、P3、P5、P2和P4。所述TCP接收器分別根據PI、P3、P5、 P2和P4生成確認報文ACK1、ACK2、ACK3、ACK4和ACK5。所述TCP接收器分別向所述TCP發 送器發送 ACK 1、ACK2、ACK3、ACK4 和 ACK5。其中,ACK 1、ACK2、ACK3、ACK4 和 ACK5 中包含的 確認號碼分別是 2800、2800、2800、4800 和 6800。40(1中沒有包含540((^^〇11。40(2中 的 SACKoption 包含第一塊(3800,4799)。ACK3 中的 SACK option 包含第一塊(3800,4799) 以及第二塊(5800,6799)、ACK4 中的 SACK option 包含第一塊(5800,6799)。ACK5 中沒有 包含SACK option。ACK2中的確認號碼等于ACK1中的確認號碼。ACK2是重復確認報文。 ACK1中沒有包含第一塊。不能確定P3發生亂序。ACK3中確認號碼等于ACK1中的確認號 碼。ACK3是重復確認報文。ACK2中的第一塊是(3800,4799)。ACK3中的第一塊是(3800, 4799),第二塊是(5800,6799)。也就是說ACK3中包含了 ACK2中的第一塊。不能確定P5 發生亂序。ACK4中包含第一塊是(5800,6799)。ACK4中沒有包含ACK3中的第一塊(3800, 4799)。可以確定P2發生亂序。因此,TCP發送器可以確定P2亂序到達所述TCP接收器。 可選地,如果圖5中的TCP發送器被替換為所述中間節點,所述中間節點可以確定P2亂序 到達所述TCP接收器。
[0157] 可選地,圖6所示的裝置中,所述接收子單元用于:
[0158] 從接收所述重復確認報文的時間開始,在第一時間間隔內接收所述確認報文,所 述第一時間間隔小于所述TCP發送器的重傳定時器的等待時間。
[0159] 舉例來說,所述TCP發送器向所述TCP接收器發送的數據報文后,等待所述TCP接 收器根據所述數據報文發送的響應。如果所述數據報文在傳輸過程中發生丟棄,或所述TCP 接收器發送的響應在傳輸過程中發生丟棄,則所述TCP發送器無法接收到所述TCP接收器 根據所述數據報文發送的響應。理論上,如果所述TCP發送器無法接收到所述TCP接收器 根據所述數據報文發送的響應,所述TCP發送器可以一直處于等待狀態。為了避免上述情 況的發生,所述TCP發送器可以包括一個重傳定時器,所述重傳定時器對應時間間隔。所述 重傳定時器在所述TCP發送器發送所述數據報文時開始計時,如果所述TCP發送器在所述 時間間隔內接收到所述TCP接收器根據所述數據報文生成的響應,則所述TCP發送器發送 其他數據報文。如果所述TCP發送器在所述時間間隔內未接收到所述TCP接收器根據所述 數據報文生成的響應,則重傳所述數據報文。
[0160] 可選地,圖6所示的裝置中,所述執行單元603還用于:
[0161] 如果在所述第一時間間隔內沒有收到所述確認報文,則發送所述第二數據報文。
[0162] 可選地,圖6所示的裝置中,所述執行單元603還用于:
[0163] 如果在所述第一時間間隔內沒有收到所述確認報文,則向所述TCP發送器轉發所 述重復確認報文。
[0164] 舉例來說,圖6所示的裝置可以應用于圖1所示的組網架構。具體來說,圖6所示 的裝置可以是圖1所示的組網架構中的TCP發送器110a或者110b。
[0165] 圖7為本發明實施例提供的接收報文的裝置的結構示意圖。所述裝置可以是TCP 發送器或從TCP發送器到TCP接收器的TCP路徑的中間節點。所述裝置可以用于執行圖2 所示的方法。如圖7所示,所述裝置包括:接收器701、處理器702以及存儲器703。接收器 701與處理器702耦合。處理器702與存儲器703耦合。
[0166] 接收器701用于接收TCP接收器發送的重復確認報文,所述重復確認報文是由第 一數據報文觸發的。
[0167] 舉例來說,所述中間節點或所述TCP發送器接收所述TCP接收器發送的第一確認 報文。如果所述第一確認報文中的確認號碼與第二確認報文中的確認號碼相同,則確定所 述第一確認報文為所述重復確認報文。所述第二確認報文為所述中間節點或所述TCP發送 器在接收所述第一確認報文前接收的確認報文。
[0168] 舉例來說,所述重復確認報文是所述TCP接收器根據所述第一數據報文生成的確 認報文。
[0169] 存儲器703中存儲計算機軟件。處理器702可以通過訪問所述計算機軟件執行如 下操作:
[0170] 檢測第二數據報文是否亂序到達所述TCP接收器,TCP發送器發送所述第一數據 報文的順序晚于所述TCP發送器發送所述第二數據報文的順序,所述TCP接收器接收所述 第一數據報文的順序早于所述TCP接收器接收所述第二數據報文的順序。
[0171] 若檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行對所述重 復確認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復確認報文的操 作。
[0172] 舉例來說,所述檢測第二數據報文是否亂序到達所述TCP接收器可以包括根據所 述重復確認報文檢測所述第二數據報文是否亂序到達所述TCP接收器。
[0173] 舉例來說,所述裝置為所述TCP發送器時,若所述TCP發送器通過檢測單元602得 到的檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行對所述重復確認 報文進行響應的操作。
[0174] 舉例來說,所述裝置為所述TCP發送器時,若所述中間節點通過檢測單元602得到 的檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行向所述TCP發送器 轉發所述重復確認報文的操作。
[0175] 上述技術方案中,接收所述重復確認報文后,檢測所述第二數據報文是否亂序到 達所述TCP接收器。如果檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免 執行對所述重復確認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復 確認報文的操作。也就是說,如果檢測結果為所述第二數據報文亂序到達所述TCP接收器, 則對所述重復確認報文進行抑制。在避免執行對所述重復確認報文進行響應的操作的場景 中,所述TCP發送器不會對所述重復確認報文進行響應,所述TCP發送器不會重傳所述第二 數據報文;在避免執行向所述TCP發送器轉發所述重復確認報文的操作的場景中,中間節 點不會向所述TCP發送器轉發所述重復確認報文。所述TCP發送器不會收到所述重復確認 報文。因此,所述TCP發送器就不會重傳所述第二數據報文。因此,上述技術方案有助于 減少TCP發送器重傳亂序到達TCP接收器的數據報文的可能性。上述技術方案有助于降低 TCP網絡發生擁塞的概率。
[0176] 本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單 元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結合來實現。這些功能究竟 以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員 可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出 本發明的范圍。
[0177] 所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統、 裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
[0178] 在本申請所提供的幾個實施例中,應該理解到,所揭露的系統、裝置和方法,可以 通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的 劃分,可以僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或 組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯 示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間 接耦合或通信連接,可以是電性,機械或其它的形式。
[0179] 所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個 網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目 的。
[0180] 另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以 是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
[0181] 所述功能如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以 存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說 對現有技術做出貢獻的部分或者該技術方案的部分可以以軟件產品的形式體現出來,該計 算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個 人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。 而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,ROM)、隨機存取 存儲器(Random Access Memory, RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0182] 以上所述,僅為本發明的【具體實施方式】,但本發明的保護范圍并不局限于此,任何 熟悉本【技術領域】的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵 蓋在本發明的保護范圍之內。因此,本發明的保護范圍應所述以權利要求的保護范圍為準。
【權利要求】
1. 一種接收報文的方法,其特征在于,包括: 接收傳輸控制協議TCP接收器發送的重復確認報文,所述重復確認報文是由第一數據 報文觸發的; 檢測第二數據報文是否亂序到達所述TCP接收器,TCP發送器發送所述第一數據報文 的順序晚于所述TCP發送器發送所述第二數據報文的順序,所述TCP接收器接收所述第一 數據報文的順序早于所述TCP接收器接收所述第二數據報文的順序; 若檢測結果為所述第二數據報文亂序到達所述TCP接收器,則避免執行對所述重復確 認報文進行響應的操作或者避免執行向所述TCP發送器轉發所述重復確認報文的操作。
2. 根據權利要求1所述的方法,其特征在于,所述檢測第二數據報文是否亂序到達所 述TCP接收器,包括: 接收所述TCP接收器發送的確認報文; 檢測所述確認報文中的確認號碼是否不同于所述重復確認報文中的確認號碼; 若檢測結果為所述確認報文中的確認號碼不同于所述重復確認報文中的確認號碼,則 確認所述第二數據報文亂序到達所述TCP接收器。
3. 根據權利要求1所述的方法,其特征在于,所述檢測第二數據報文是否亂序到達所 述TCP接收器,包括: 接收所述TCP接收器發送的確認報文; 檢測所述確認報文中的回顯應答字段是否小于所述重復確認報文中的回顯應答字 段; 若檢測結果為所述確認報文中的回顯應答字段小于所述重復確認報文中的回顯應答 字段,則確認所述第二數據報文亂序到達所述TCP接收器。
4. 根據權利要求1所述的方法,其特征在于,所述檢測第二數據報文是否亂序到達所 述TCP接收器,包括: 接收所述TCP接收器發送的確認報文; 檢測所述確認報文是否包含所述重復確認報文中的選擇性確認選項中的第一塊; 若檢測結果為所述確認報文不包含所述重復確認報文中的所述第一塊,則確認所述第 二數據報文亂序到達所述TCP接收器。
5. 根據權利要求2至4中任一所述的方法,其特征在于,所述接收所述TCP接收器發送 的確認報文,包括: 從接收所述重復確認報文的時間開始,在第一時間間隔內接收所述確認報文,所述第 一時間間隔小于所述TCP發送器的重傳定時器的等待時間。
6. -種接收報文的裝置,其特征在于,包括: 接收單元,用于接收傳輸控制協議TCP接收器發送的重復確認報文,所述重復確認報 文是由第一數據報文觸發的; 檢測單元,用于檢測第二數據報文是否亂序到達所述TCP接收器,TCP發送器發送所述 第一數據報文的順序晚于所述TCP發送器發送所述第二數據報文的順序,所述TCP接收器 接收所述第一數據報文的順序早于所述TCP接收器接收所述第二數據報文的順序; 執行單元,用于在所述檢測單元的檢測結果為所述第二數據報文亂序到達所述TCP接 收器時,避免執行對所述重復確認報文進行響應的操作或者避免執行向所述TCP發送器轉 發所述重復確認報文的操作。
7. 根據權利要求6所述的裝置,其特征在于,所述檢測單元,包括: 接收子單元,用于接收所述TCP接收器發送的確認報文; 檢測子單元,用于檢測所述接收子單元接收的確認報文中的確認號碼是否不同于所述 接收單元接收的重復確認報文中的確認號碼; 確認子單元,用于在所述檢測子單元的檢測結果為所述確認報文中的確認號碼不同于 所述重復確認報文中的確認號碼時,確認所述第二數據報文亂序到達所述TCP接收器。
8. 根據權利要求6所述的裝置,其特征在于,所述檢測單元,包括: 接收子單元,用于接收所述TCP接收器發送的確認報文; 檢測子單元,用于檢測所述接收子單元接收的確認報文中的回顯應答字段是否小于所 述接收單元接收的重復確認報文中的回顯應答字段; 確認子單元,用于在所述檢測子單元的檢測結果為所述確認報文中的回顯應答字段小 于所述重復確認報文中的回顯應答字段時,確認所述第二數據報文亂序到達所述TCP接收 器。
9. 根據權利要求6所述的裝置,其特征在于,所述檢測單元,包括: 接收子單元,用于接收所述TCP接收器發送的確認報文; 檢測子單元,用于檢測所述接收子單元接收的確認報文是否包含所述接收單元接收的 重復確認報文中的選擇性確認選項中的第一塊; 確認子單元,用于在所述檢測子單元的檢測結果為所述確認報文不包含所述重復確認 報文中的所述第一塊時,確認所述第二數據報文亂序到達所述TCP接收器。
10. 根據權利要求7至9中任一所述的裝置,其特征在于,所述接收子單元,用于: 從接收所述重復確認報文的時間開始,在第一時間間隔內接收所述確認報文,所述第 一時間間隔小于所述TCP發送器的重傳定時器的等待時間。
【文檔編號】H04L12/801GK104104608SQ201310130316
【公開日】2014年10月15日 申請日期:2013年4月15日 優先權日:2013年4月15日
【發明者】鄭合文 申請人:華為技術有限公司