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