使用優(yōu)化的窗口調(diào)整來避免不想要的tcp重傳的制作方法
【專利摘要】提供了用于通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的方法、裝置和計算機(jī)程序產(chǎn)品。所述裝置從發(fā)送方按照連續(xù)順序接收多個數(shù)據(jù)區(qū)段,推斷所述連續(xù)順序中的至少一個缺失的數(shù)據(jù)區(qū)段,以及基于對所述至少一個缺失的數(shù)據(jù)區(qū)段的推論來向所述發(fā)送方確認(rèn)收到已接收的數(shù)據(jù)區(qū)段的最高字節(jié)序列號加一。所述裝置還基于對所述至少一個缺失的數(shù)據(jù)區(qū)段的推論或TCP連接的往返時間中的至少一項來調(diào)整接收窗,其中,所述接收窗指示用于接收數(shù)據(jù)區(qū)段的緩存容量。所述裝置還將經(jīng)調(diào)整的接收窗通告給所述發(fā)送方。
【專利說明】使用優(yōu)化的窗口調(diào)整來避免不想要的TCP重傳
[0001]相關(guān)申請的交叉引用
[0002]本申請要求于2012年6月14日遞交的、名稱為“AVOIDING UNWANTED TCPRETRANSMISS1NS USING OPTIMISTIC WINDOW ADJUSTMENTS” 的美國臨時申請序列N0.61/659,950的利益,其全部內(nèi)容以引用方式被明確地并入本文。
【技術(shù)領(lǐng)域】
[0003]概括地說,本公開內(nèi)容涉及通信系統(tǒng),且更具體地說,涉及調(diào)整接收窗和確認(rèn)來減輕通過傳輸控制協(xié)議(TCP)發(fā)送的不想要的數(shù)據(jù)區(qū)段重傳。
【背景技術(shù)】
[0004]傳輸控制協(xié)議(TCP)是跨越通信網(wǎng)絡(luò)被廣泛使用的可靠的數(shù)據(jù)傳輸協(xié)議。TCP提供健壯的擁塞控制算法以在當(dāng)前的TCP會話之間共享帶寬。該擁塞控制算法通過自動地縮減數(shù)據(jù)傳輸以匹配可用的帶寬容量,從而避免與網(wǎng)絡(luò)擁塞相關(guān)的問題。如果跨越共享的網(wǎng)絡(luò)鏈路的多路并發(fā)和可靠的數(shù)據(jù)傳輸?shù)拿總€會話都嘗試完全地使用鏈路容量,則這些數(shù)據(jù)傳輸可能導(dǎo)致嚴(yán)重?fù)砣?。這種嚴(yán)重?fù)砣赡軐?dǎo)致較高的分組丟失,這繼而可能引起大量的分組重傳,最終導(dǎo)致網(wǎng)絡(luò)崩潰。TCP的擁塞控制算法通過自動地確定多少帶寬是可用的并且與其它并發(fā)的TCP會話平等地共享全部的可用帶寬來避免這個問題。
[0005]TCP使用各種內(nèi)部算法來提供擁塞控制能力。這些算法包括:流控制、慢啟動、分組重新排序、分組丟失檢測、重傳計時器和基于網(wǎng)絡(luò)狀況來動態(tài)地減少或增加數(shù)據(jù)傳輸速率的多種其它機(jī)制。
[0006]TCP的流控制算法是用于預(yù)防接收方接收超出該接收方能夠處理或緩存的數(shù)據(jù)的機(jī)制。例如,如果接收TCP堆棧具有用于存儲16千字節(jié)數(shù)據(jù)的緩存器,則不允許發(fā)送方在任何時候向接收方發(fā)送超出16千字節(jié)的數(shù)據(jù)。在整個數(shù)據(jù)傳輸期間,接收方持續(xù)地向發(fā)送方發(fā)送回確認(rèn)以聲明接收方可以接受多少額外的數(shù)據(jù)。接收方可以接受的這種額外的數(shù)據(jù)被稱為“窗口指示”(或“窗口通告”)并且作為字段被包括在TCP頭部中。
【發(fā)明內(nèi)容】
[0007]對于例如音頻或視頻直播應(yīng)用,傳輸控制協(xié)議(TCP)可能是有問題的。依據(jù)TCP,當(dāng)從發(fā)送方向接收方傳送數(shù)據(jù)部分時,在接收方處任何缺失的數(shù)據(jù)部分都必須由發(fā)送方重新發(fā)送并由接收方接收,從而只有沒有缺失部分的數(shù)據(jù)才被傳送給應(yīng)用。當(dāng)TCP用于流媒體應(yīng)用(例如,音頻或視頻)時,在協(xié)議實施等待缺失的數(shù)據(jù)部分被填充時,數(shù)據(jù)的丟失可能引起在接收應(yīng)用處的不想要的延遲。當(dāng)回放連續(xù)媒體時,這可能導(dǎo)致不期望的行為(例如,跳躍、停頓)。因此,本公開內(nèi)容允許不按順序到達(dá)接收方處的數(shù)據(jù)部分立即被傳送給應(yīng)用并且防止發(fā)送方重新發(fā)送不必要的較舊部分。
[0008]在一個方面中,提供了用于通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的方法、裝置和計算機(jī)程序產(chǎn)品。所述裝置按照連續(xù)順序從發(fā)送方接收多個數(shù)據(jù)區(qū)段,推斷連續(xù)順序中的至少一個缺失的數(shù)據(jù)區(qū)段,以及基于對所述至少一個缺失的數(shù)據(jù)區(qū)段的推論來向所述發(fā)送方確認(rèn)收到已接收的數(shù)據(jù)區(qū)段的最高字節(jié)序列號加一。
[0009]在進(jìn)一步的方面中,所述裝置按照連續(xù)順序向接收方發(fā)送多個數(shù)據(jù)區(qū)段,在發(fā)送方處從所述接收方接收確認(rèn),所述確認(rèn)是關(guān)于確認(rèn)收到在所述接收方處已接收的數(shù)據(jù)區(qū)段的最高序列號加一,從所述接收方接收通告的接收窗,所述通告的接收窗指示在所述接收方處用于接收數(shù)據(jù)分組的緩存容量以及基于所述通告的接收窗以經(jīng)調(diào)整的傳輸速率向所述接收方發(fā)送至少一個額外的數(shù)據(jù)分組。
【專利附圖】
【附圖說明】
[0010]圖1是用于傳送數(shù)據(jù)的方法的流程圖;
[0011]圖2是用于傳送數(shù)據(jù)的方法的流程圖;
[0012]圖3是示出了在示例性裝置中的不同模塊/單元/組件之間的數(shù)據(jù)流的概念性數(shù)據(jù)流圖;
[0013]圖4是示出了在示例性裝置中的不同模塊/單元/組件之間的數(shù)據(jù)流的概念性數(shù)據(jù)流圖;
[0014]圖5是示出了采用處理系統(tǒng)的裝置的硬件實施方式的例子的圖;
[0015]圖6是示出了采用處理系統(tǒng)的裝置的硬件實施方式的例子的圖。
【具體實施方式】
[0016]下面結(jié)合附圖闡述的詳細(xì)描述旨在作為對各種結(jié)構(gòu)的描述,而不是要表示可以實踐本文描述的構(gòu)思的唯一結(jié)構(gòu)。詳細(xì)描述包括具體細(xì)節(jié),以便提供對各種構(gòu)思的透徹理解。然而,對本領(lǐng)域技術(shù)人員而言,將顯而易見的是,沒有這些具體細(xì)節(jié)也可以實踐這些構(gòu)思。在一些實例中,以框圖形式示出公知的結(jié)構(gòu)和組件,以避免使這些構(gòu)思不明顯。
[0017]現(xiàn)在將參照各種裝置和方法給出電信系統(tǒng)的若干方面。通過各種方框、模塊、組件、電路、步驟、過程、算法等(統(tǒng)稱為“元素”),在以下詳細(xì)描述中描述并且在附圖中示出這些裝置和方法。這些元素可以使用電子硬件、計算機(jī)軟件或其任意組合來實現(xiàn)。這些元素是被實現(xiàn)為硬件還是軟件取決于具體應(yīng)用以及施加在整個系統(tǒng)上的設(shè)計約束。
[0018]舉例而言,可以利用包括了一個或多個處理器的“處理系統(tǒng)”來實現(xiàn)元素或元素的任意部分或元素的任意組合。處理器的例子包括微處理器、微控制器、數(shù)字信號處理器(DSP)、現(xiàn)場可編程門陣列(FPGA)、可編程邏輯器件(PLD)、狀態(tài)機(jī)、門控邏輯單元、分立的硬件電路以及被配置為執(zhí)行貫穿本公開內(nèi)容描述的各種功能的其它合適的硬件。處理系統(tǒng)中的一個或多個處理器可以執(zhí)行軟件。無論是被稱為軟件、固件、中間件、微代碼、硬件描述語言或其它術(shù)語,軟件都應(yīng)當(dāng)被廣義地解釋為表示指令、指令集、代碼、代碼段、程序代碼、程序、子程序、軟件模塊、應(yīng)用、軟件應(yīng)用、軟件包、例程、子例程、對象、可執(zhí)行文件、執(zhí)行線程、過程、功能等。
[0019]因此,在一個或多個示例性實施例中,可以使用硬件、軟件、固件或其任意組合來實現(xiàn)描述的功能。如果使用軟件實現(xiàn),則這些功能可以被存儲在計算機(jī)可讀介質(zhì)上,或被編碼為在計算機(jī)可讀介質(zhì)上的一個或多個指令或代碼。計算機(jī)可讀介質(zhì)包括計算機(jī)存儲介質(zhì)。存儲介質(zhì)可以是計算機(jī)能夠存取的任何可用介質(zhì)。通過舉例而非限制性的方式,這樣的計算機(jī)可讀介質(zhì)可以包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲、磁盤存儲或其它磁存儲設(shè)備、或者能夠用于攜帶或存儲具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并能夠由計算機(jī)存取的任何其它介質(zhì)。如本文所使用的,磁盤和光盤包括壓縮光盤(CD)、激光光盤、光盤、數(shù)字多功能光盤(DVD)、軟盤和藍(lán)光光盤,其中磁盤通常磁性地復(fù)制數(shù)據(jù),而光盤則用激光來光學(xué)地復(fù)制數(shù)據(jù)。上面的組合也應(yīng)當(dāng)包括在計算機(jī)可讀介質(zhì)的范圍之內(nèi)。
[0020]傳輸控制協(xié)議(TCP)是一種被廣泛使用的傳輸協(xié)議。TCP可以被例如互聯(lián)網(wǎng)應(yīng)用使用。為了精確的數(shù)據(jù)傳送,對TCP進(jìn)行優(yōu)化,其中,將數(shù)據(jù)分成區(qū)段(分組),并且根據(jù)該協(xié)議按順序?qū)^(qū)段傳送至應(yīng)用。在從發(fā)送方向接收方傳送的期間,區(qū)段可能會丟失。如果丟失,區(qū)段的發(fā)送方不知曉丟失的區(qū)段,直到接收方告知(或促使告知)發(fā)送方為止。由于提取TCP的實現(xiàn)(abstract1n TCP implements),接收方將使用每字節(jié)序列號來編號的數(shù)據(jù)傳送給接收應(yīng)用,直到按順序的最大的序列號為止,而不考慮實際的分組接收順序。
[0021]例如,發(fā)送方可以向接收方發(fā)送區(qū)段1、2、3、4、5和6。然而,在傳送期間,區(qū)段3丟失,但是在接收方處成功地接收了區(qū)段1、2、4、5和6。因此,依據(jù)TCP,接收方不能將來自區(qū)段4、5和6的數(shù)據(jù)傳送給接收應(yīng)用,直到區(qū)段3被發(fā)送方重新發(fā)送且在接收方處被成功接收為止。
[0022]更詳細(xì)地,每次發(fā)送方發(fā)送接收方已接收的、在區(qū)段3之后的區(qū)段(例如,區(qū)段4、5和6)時,接收方將確認(rèn)包含在按順序接收的區(qū)段中的最大的或最新接收的字節(jié)序列號,例如,當(dāng)接收到區(qū)段4時,接收方將對收到包含在區(qū)段2中的最大序列號(加一)進(jìn)行確認(rèn)(ACK),并且當(dāng)接收到區(qū)段5和6時,再次進(jìn)行確認(rèn)。因此,基于對區(qū)段2的重復(fù)確認(rèn),發(fā)送方將推斷:在接收方處沒有接收到區(qū)段3,這是因為發(fā)送方已經(jīng)接收到收到區(qū)段2的額外通知。該額外通知還可以暗示發(fā)送方:按順序排序在區(qū)段3之后的區(qū)段在接收方處被成功接收,盡管區(qū)段3可能已經(jīng)丟失。
[0023]當(dāng)發(fā)送方認(rèn)識到接收方未得到區(qū)段3時,發(fā)送方將使用被稱為“快速重傳”的過程向接收方重新發(fā)送區(qū)段3。當(dāng)區(qū)段3到達(dá)接收方處時,區(qū)段3、4、5和6將處于連續(xù)的順序,然后因此,TCP允許接收方將來自區(qū)段3、4、5和6的全部數(shù)據(jù)傳送給接收應(yīng)用。此外,接收方可以向發(fā)送方確認(rèn)收到來自區(qū)段6的字節(jié),其現(xiàn)在會是按順序接收的最大的或最新接收的區(qū)段。當(dāng)發(fā)送方接收到關(guān)于區(qū)段6的數(shù)據(jù)的確認(rèn)時,發(fā)送方可以推斷:接收方準(zhǔn)備接收下一個順序區(qū)段(例如,區(qū)段7),并因此可以進(jìn)行發(fā)送。
[0024]目前,例如在諸如關(guān)于音頻或視頻直播事件之類的某些情況下,TCP可能是有問題的。當(dāng)在從發(fā)送方向接收方傳送期間,區(qū)段缺失時,在接收方處等待接收該缺失的區(qū)段造成的延遲可能是不必要的或不期望的。這是因為接收應(yīng)用不能夠接收在接收方處后續(xù)接收的(或按順序排序在缺失的區(qū)段之后的)區(qū)段,直到該缺失的區(qū)段被發(fā)送方重新發(fā)送并且在接收方處被成功接收為止。
[0025]在流媒體視頻系統(tǒng)中,由于TCP穿透防火墻的能力或其它原因,可以使用它作為傳輸協(xié)議。TCP向接收應(yīng)用提供按順序的傳送提取。因此,在(兩方對話的)接收方處缺失的任何數(shù)據(jù)必須被發(fā)送方填充,從而只有沒有缺失部分的數(shù)據(jù)才被傳送給應(yīng)用。當(dāng)TCP用于流媒體應(yīng)用(例如,音頻或視頻)時,在協(xié)議實施等待數(shù)據(jù)“缺口”被填充時,數(shù)據(jù)的丟失可能引起在接收應(yīng)用處的不想要的延遲。當(dāng)回放連續(xù)媒體時,這可能導(dǎo)致不期望的行為(例如,跳躍、停頓)。因此,允許不按順序的傳送發(fā)生的接口改變是需要的。在一個方面中,協(xié)議可以允許接收方“撒謊”并且向發(fā)送方指示數(shù)據(jù)已經(jīng)被接收,即使當(dāng)接收方?jīng)]有接收到時。例如,接收方可以提供針對新近到達(dá)的區(qū)段(分組)的確認(rèn),即使在接收方處存在過去的“缺口”。
[0026]本公開內(nèi)容提供了耦合應(yīng)用編程接口(API)變化,其準(zhǔn)許不按順序的區(qū)段(分組)傳送、ACK合成(例如,向發(fā)送方“撒謊”)和對TCP接收方的通告窗的調(diào)整以影響擁塞控制。這種方法允許不按順序到達(dá)接收方處的信息被立即傳送給應(yīng)用,并且防止發(fā)送方重新發(fā)送不必要的較舊區(qū)段(分組)。在一個方面中,發(fā)送方向其自身的“撒謊”可能使得發(fā)送方不執(zhí)行重要的擁塞控制過程。因此,本公開內(nèi)容還提供了調(diào)整接收方的通告窗,以使得發(fā)送方糾正到合適的發(fā)送速率,即使當(dāng)接收方?jīng)]有接收到數(shù)據(jù)時,在關(guān)于在接收方處接收到的數(shù)據(jù)方面,發(fā)送方受到“欺騙”。
[0027]圖1是通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的方法的流程圖100??梢杂山邮辗?例如,移動主機(jī)計算機(jī))來執(zhí)行該方法。
[0028]在步驟102處,接收方按照連續(xù)順序從發(fā)送方接收多個數(shù)據(jù)區(qū)段(分組)。在步驟104處,接收方推斷連續(xù)順序中有至少一個缺失的數(shù)據(jù)區(qū)段。
[0029]在步驟106處,接收方向發(fā)送方確認(rèn)收到已接收的數(shù)據(jù)區(qū)段的最高字節(jié)序列號加一。該確認(rèn)可以基于對該至少一個缺失的數(shù)據(jù)區(qū)段的推論。該確認(rèn)還可以基于知曉連續(xù)順序中的缺失的字節(jié)序列號,其中,該缺失的字節(jié)序列號對應(yīng)于缺失的數(shù)據(jù)區(qū)段。最高字節(jié)序列號加一可以對應(yīng)于在該至少一個缺失的數(shù)據(jù)分組之前按連續(xù)順序最新接收的數(shù)據(jù)區(qū)段?;蛘?,最高字節(jié)序列號加一可以對應(yīng)于在該至少一個缺失的數(shù)據(jù)區(qū)段之后按連續(xù)順序最新接收的數(shù)據(jù)分組。
[0030]在一個方面中,已接收的多個數(shù)據(jù)區(qū)段中的每一個都具有字節(jié)序列號,并且該至少一個缺失的數(shù)據(jù)區(qū)段對應(yīng)于連續(xù)順序中的至少一個缺失的字節(jié)序列號。因此,對應(yīng)于最新接收的數(shù)據(jù)分組的最高字節(jié)序列號加一可以大于該至少一個缺失的字節(jié)序列號。
[0031]在步驟108處,接收方可以調(diào)整接收窗。接收窗的調(diào)整可以基于對該至少一個缺失的數(shù)據(jù)區(qū)段的推論或TCP連接的往返時間中的至少一項。接收窗可以指示用于接收數(shù)據(jù)區(qū)段的緩存容量。即,接收窗可以指示接收方愿意接收的額外數(shù)據(jù)字節(jié)的數(shù)量。
[0032]在步驟110處,接收方將經(jīng)調(diào)整的接收窗通告給發(fā)送方。在步驟112處,接收方可以向應(yīng)用發(fā)送在任意時候接收的數(shù)據(jù)區(qū)段的內(nèi)容,而不等待接收該至少一個缺失的數(shù)據(jù)分組。其后,在步驟114處,接收方可以基于該通告的經(jīng)調(diào)整的接收窗以經(jīng)調(diào)整的傳輸速率從發(fā)送方接收至少一個額外的數(shù)據(jù)區(qū)段。
[0033]圖2是通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的方法的流程圖200。可以由發(fā)送方(例如,兩方TCP對話中的一方的主機(jī)計算機(jī))來執(zhí)行該方法。在步驟202處,發(fā)送方可以按照連續(xù)順序向接收方發(fā)送多個數(shù)據(jù)區(qū)段(分組)。在步驟204處,發(fā)送方從接收方接收關(guān)于確認(rèn)收到數(shù)據(jù)區(qū)段的最高序列號加一的確認(rèn)。該最高序列號可以是與針對相同連接在接收方處存儲的數(shù)據(jù)區(qū)段相對應(yīng)的全部序列號當(dāng)中的最高序列號。
[0034]在步驟206處,發(fā)送方從接收方接收通告的接收窗。該通告的接收窗可以指示在接收方處用于接收數(shù)據(jù)區(qū)段的緩存容量。例如,該通告的接收窗可以指示接收方愿意接收的額外數(shù)據(jù)字節(jié)的數(shù)量。其后,在步驟208處,發(fā)送方可以基于該通告的接收窗以經(jīng)調(diào)整的傳輸速率向接收方發(fā)送至少一個額外的數(shù)據(jù)區(qū)段。
[0035]圖3是示出了在示例性裝置302中的不同模塊/單元/組件之間的數(shù)據(jù)流的概念性數(shù)據(jù)流圖300。該裝置可以是通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的接收方。該裝置包括:接收模塊304、數(shù)據(jù)區(qū)段處理模塊306、接收窗調(diào)整模塊308、應(yīng)用模塊310和發(fā)送模塊312。
[0036]接收模塊304按照連續(xù)順序從發(fā)送方(例如,主機(jī)計算機(jī)TCP協(xié)議處理軟件)350接收多個數(shù)據(jù)區(qū)段(分組)。數(shù)據(jù)區(qū)段處理模塊306推斷連續(xù)順序中的至少一個缺失的數(shù)據(jù)區(qū)段。
[0037]數(shù)據(jù)區(qū)段處理模塊306向發(fā)送方350確認(rèn)收到已接收的數(shù)據(jù)區(qū)段的最高字節(jié)序列號加一。該確認(rèn)可以基于對該至少一個缺失的數(shù)據(jù)區(qū)段的推論。該確認(rèn)還可以基于知道連續(xù)順序中的缺失的字節(jié)序列號,其中,該缺失的字節(jié)序列號對應(yīng)于缺失的數(shù)據(jù)區(qū)段。最高字節(jié)序列號加一可以對應(yīng)于在該至少一個缺失的數(shù)據(jù)分組之前按連續(xù)順序最新接收的數(shù)據(jù)區(qū)段?;蛘?,最高字節(jié)序列號加一可以對應(yīng)于在該至少一個缺失的數(shù)據(jù)區(qū)段之后按連續(xù)順序最新接收的數(shù)據(jù)分組。
[0038]在一個方面中,已接收的多個數(shù)據(jù)區(qū)段中的每一個都具有字節(jié)序列號,并且該至少一個缺失的數(shù)據(jù)區(qū)段對應(yīng)于連續(xù)順序中的至少一個缺失的字節(jié)序列號。因此,對應(yīng)于最新接收的數(shù)據(jù)分組的最高字節(jié)序列號加一可以大于該至少一個缺失的字節(jié)序列號。
[0039]接收窗調(diào)整模塊308可以調(diào)整接收窗。接收窗的調(diào)整可以基于對該至少一個缺失的數(shù)據(jù)區(qū)段的推論或TCP連接的往返時間中的至少一個。接收窗可以指示用于接收數(shù)據(jù)區(qū)段的緩存容量。即,接收窗可以指示裝置302愿意接收的額外數(shù)據(jù)字節(jié)的數(shù)量。
[0040]接收窗調(diào)整模塊308將經(jīng)調(diào)整的接收窗經(jīng)由發(fā)送模塊312通告給發(fā)送方350。此夕卜,數(shù)據(jù)區(qū)段處理模塊306可以向應(yīng)用模塊310發(fā)送在任意時候接收的數(shù)據(jù)分組的內(nèi)容,而不等待接收該至少一個缺失的數(shù)據(jù)區(qū)段。其后,數(shù)據(jù)區(qū)段處理模塊306可以基于所通告的經(jīng)調(diào)整的接收窗以經(jīng)調(diào)整的傳輸速率從發(fā)送方350接收至少一個額外的數(shù)據(jù)區(qū)段。
[0041]圖4是示出了在示例性裝置402中的不同模塊/單元/組件之間的數(shù)據(jù)流的概念性數(shù)據(jù)流圖400。該裝置可以是通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的主機(jī)計算機(jī)。該裝置包括:接收模塊404、數(shù)據(jù)區(qū)段處理模塊406、通告的接收窗處理模塊408和發(fā)送模塊410。
[0042]數(shù)據(jù)區(qū)段處理模塊406可以按照連續(xù)順序經(jīng)由發(fā)送模塊410向接收方(例如,移動主機(jī)計算機(jī))450發(fā)送多個數(shù)據(jù)區(qū)段(分組)。接收模塊410從接收方450接收關(guān)于確認(rèn)收到數(shù)據(jù)區(qū)段的最高序列號加一的確認(rèn)。該最高序列號可以是與針對相同連接在接收方450處存儲的數(shù)據(jù)區(qū)段相對應(yīng)的全部序列號當(dāng)中的最高序列號。
[0043]通告的接收窗處理模塊408 (經(jīng)由接收模塊404)從接收方450接收通告的接收窗。該通告的接收窗可以指示在接收方處用于接收數(shù)據(jù)區(qū)段的緩存容量。例如,該通告的接收窗可以指示接收方愿意接收的額外數(shù)據(jù)字節(jié)的數(shù)量。其后,數(shù)據(jù)區(qū)段處理模塊406可以基于該通告的接收窗以經(jīng)調(diào)整的傳輸速率向接收方發(fā)送至少一個額外的數(shù)據(jù)區(qū)段。
[0044]該裝置可以包括執(zhí)行在圖1-圖2的前面提及的流程圖中的算法的每個步驟的另外的模塊。這樣,在圖1-圖2的前面提及的流程圖中的每個步驟可以由模塊來執(zhí)行,并且該裝置可以包括那些模塊中的一個或多個。這些模塊可以是被特別配置成執(zhí)行所聲明的過程/算法、由被配置成執(zhí)行所聲明的過程/算法的處理器實現(xiàn)的、存儲在計算機(jī)可讀介質(zhì)內(nèi)用于處理器實現(xiàn)的的一個或多個硬件組件或它們的一些組合。
[0045]圖5是示出了采用處理系統(tǒng)514的裝置302’的硬件實施方式的例子的圖500??梢岳糜煽偩€524總體表示的總線架構(gòu)來實現(xiàn)處理系統(tǒng)514。取決于處理系統(tǒng)514的具體應(yīng)用和總設(shè)計約束,總線524可以包括任意數(shù)量的互連總線和橋路。總線524將包括一個或多個處理器和/或硬件模塊的各種電路鏈接在一起,這些電路由處理器504、模塊304、306、308,310,312和計算機(jī)可讀介質(zhì)506來表示。
[0046]處理系統(tǒng)514包括耦合到計算機(jī)可讀介質(zhì)506的處理器504。處理器504負(fù)責(zé)一般處理,包括存儲在計算機(jī)可讀介質(zhì)506上的軟件的執(zhí)行。軟件當(dāng)被處理器504執(zhí)行時,使得處理系統(tǒng)514執(zhí)行上面針對任意具體裝置描述的各種功能。計算機(jī)可讀介質(zhì)506還可以用于存儲處理器504執(zhí)行軟件時所操縱的數(shù)據(jù)。處理系統(tǒng)還包括模塊304、306、308、310和312中的至少一個模塊。模塊可以是在處理器504中運行的、位于或存儲在計算機(jī)可讀介質(zhì)506中的軟件模塊,耦合到處理器504的一個或多個硬件模塊,或它們的一些組合。
[0047]在一種配置中,用于傳送數(shù)據(jù)的裝置302/302’包括:用于按照連續(xù)順序從發(fā)送方接收多個數(shù)據(jù)區(qū)段的單元;用于推斷連續(xù)順序中的至少一個缺失的數(shù)據(jù)區(qū)段的單元;用于基于對該至少一個缺失的數(shù)據(jù)區(qū)段的推論來向發(fā)送方確認(rèn)收到已接收的數(shù)據(jù)區(qū)段的最高字節(jié)序列號加一的單元;用于基于對該至少一個缺失的數(shù)據(jù)區(qū)段的推論或TCP連接的往返時間中的至少一項來調(diào)整接收窗的單元,該接收窗指示用于接收數(shù)據(jù)區(qū)段的緩存容量;用于向發(fā)送方通告經(jīng)調(diào)整的接收窗的單元;用于基于所通告的經(jīng)調(diào)整的接收窗以經(jīng)調(diào)整的傳輸速率從發(fā)送方接收至少一個額外的數(shù)據(jù)區(qū)段的單元以及用于向應(yīng)用發(fā)送在任意時候接收的數(shù)據(jù)區(qū)段的內(nèi)容而不等待接收該至少一個缺失的數(shù)據(jù)區(qū)段的單元。前述單元可以是裝置302的前述模塊和/或被配置成執(zhí)行根據(jù)前述單元所記載的功能的裝置302’的處理系統(tǒng)514中的一項或多項。
[0048]圖6是示出了采用處理系統(tǒng)614的裝置402’的硬件實施方式的例子的圖600??梢岳糜煽偩€624總體表示的總線架構(gòu)來實現(xiàn)處理系統(tǒng)614。取決于處理系統(tǒng)614的具體應(yīng)用和總設(shè)計約束,總線624可以包括任意數(shù)量的互連總線和橋路。總線624將包括一個或多個處理器和/或硬件模塊的各種電路鏈接在一起,這些電路由處理器604、模塊404、406、408、410和計算機(jī)可讀介質(zhì)606來表示。
[0049]處理系統(tǒng)614包括耦合到計算機(jī)可讀介質(zhì)606的處理器604。處理器604負(fù)責(zé)一般處理,包括存儲在計算機(jī)可讀介質(zhì)606上的軟件的執(zhí)行。軟件當(dāng)被處理器604執(zhí)行時,使得處理系統(tǒng)614執(zhí)行上面針對任意具體裝置描述的各種功能。計算機(jī)可讀介質(zhì)606還可以用于存儲處理器604執(zhí)行軟件時所操縱的數(shù)據(jù)。處理系統(tǒng)還包括模塊404、406、408和410中的至少一個模塊。模塊可以是在處理器604中運行的、位于或存儲在計算機(jī)可讀介質(zhì)606中的軟件模塊,耦合到處理器604的一個或多個硬件模塊,或它們的一些組合。
[0050]在一種配置中,用于傳送數(shù)據(jù)的裝置402/402’包括:用于按照連續(xù)順序向接收方發(fā)送多個數(shù)據(jù)區(qū)段的單元;用于在發(fā)送方處從接收方接收確認(rèn)的單元,該確認(rèn)是關(guān)于確認(rèn)收到在接收方處接收的數(shù)據(jù)區(qū)段的最高序列號加一;用于從接收方接收通告的接收窗的單元,該通告的接收窗指示在接收方處用于接收數(shù)據(jù)區(qū)段的緩存容量,以及用于基于該通告的接收窗以經(jīng)調(diào)整的傳輸速率向接收方發(fā)送至少一個額外的數(shù)據(jù)區(qū)段的單元。前述單元可以是裝置402的前述模塊和/或被配置成執(zhí)行根據(jù)前述單元所記載的功能的裝置402’的處理系統(tǒng)614中的一項或多項。
[0051]應(yīng)當(dāng)理解,在本公開的過程中的步驟的具體順序或?qū)蛹壥鞘纠苑椒ǖ囊粋€說明。應(yīng)當(dāng)理解,基于設(shè)計偏好,可以重新排列過程中的步驟的具體順序或?qū)蛹墶4送?,可以組合或省略一些步驟。所附的方法權(quán)利要求以樣本順序呈現(xiàn)了各步驟的元素,但并不意味著受限于所呈現(xiàn)的具體順序或?qū)蛹墶?br>
[0052]提供前面的描述以使本領(lǐng)域任何技術(shù)人員能夠?qū)嵺`本文描述的各個方面。對本領(lǐng)域技術(shù)人員而言,對這些方面的各種修改將是顯而易見的,并且可以將本文定義的一般性原理應(yīng)用于其它方面。因此,權(quán)利要求并不旨在受限于本文示出的方面,而是與符合權(quán)利要求的語言的全部范圍相一致,其中,除非特別聲明,否則以單數(shù)形式引用某元素并不旨在意味著“一個且僅一個”,而是“一個或多個”。除非特別聲明,否則術(shù)語“一些”指一個或多個。貫穿本公開內(nèi)容描述的各個方面的元素的全部結(jié)構(gòu)和功能等同物以引用的方式明確地并入本文中,并且旨在被權(quán)利要求所涵蓋,這些結(jié)構(gòu)和功能等同物對本領(lǐng)域普通技術(shù)人員是公知的或?qū)⒁枪摹4送?,本文沒有任何公開內(nèi)容是想要奉獻(xiàn)給公眾的,無論這樣的公開內(nèi)容是否明確記載在權(quán)利要求中。不應(yīng)將任何權(quán)利要求元素解釋為功能單元,除非明確地使用“用于……的單元”的措施來記載該元素。
【權(quán)利要求】
1.一種通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的方法,包括: 按照連續(xù)順序從發(fā)送方接收多個數(shù)據(jù)區(qū)段; 推斷所述連續(xù)順序中的至少一個缺失的數(shù)據(jù)區(qū)段;以及 基于對所述至少一個缺失的數(shù)據(jù)區(qū)段的所述推斷來向所述發(fā)送方確認(rèn)收到已接收的數(shù)據(jù)區(qū)段的最高字節(jié)序列號加一。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述確認(rèn)還基于知曉所述連續(xù)順序中的缺失的字節(jié)序列號,所述缺失的字節(jié)序列號對應(yīng)于缺失的數(shù)據(jù)區(qū)段。
3.根據(jù)權(quán)利要求1所述的方法,還包括: 基于以下各項中的至少一項來調(diào)整接收窗: 對所述至少一個缺失的數(shù)據(jù)區(qū)段的所述推斷,或 TCP連接的往返時間, 所述接收窗指示用于接收數(shù)據(jù)區(qū)段的緩存容量;以及 向所述發(fā)送方通告經(jīng)調(diào)整的接收窗。
4.根據(jù)權(quán)利要求1所述的方法,還包括:基于所通告的經(jīng)調(diào)整的接收窗,以經(jīng)調(diào)整的傳輸速率從所述發(fā)送方接收至少一個額外的數(shù)據(jù)區(qū)段。
5.根據(jù)權(quán)利要求1所述的方法,其中,所述最高字節(jié)序列號加一對應(yīng)于在所述至少一個缺失的數(shù)據(jù)區(qū)段之前按連續(xù)順序最新接收的數(shù)據(jù)區(qū)段。
6.根據(jù)權(quán)利要求1所述的方法,其中,所述最高字節(jié)序列號加一對應(yīng)于在所述至少一個缺失的數(shù)據(jù)區(qū)段之后按連續(xù)順序最新接收的數(shù)據(jù)區(qū)段。
7.根據(jù)權(quán)利要求6所述的方法,其中,所接收的多個數(shù)據(jù)區(qū)段中的每一個都具有字節(jié)序列號, 所述至少一個缺失的數(shù)據(jù)區(qū)段對應(yīng)于所述連續(xù)順序中的至少一個缺失的字節(jié)序列號,以及 對應(yīng)于所述最新接收的數(shù)據(jù)區(qū)段的所述最高字節(jié)序列號加一大于所述至少一個缺失的字節(jié)序列號。
8.根據(jù)權(quán)利要求1所述的方法,還包括:向應(yīng)用發(fā)送在任意時候接收的數(shù)據(jù)區(qū)段的內(nèi)容,而不等待接收所述至少一個缺失的數(shù)據(jù)區(qū)段。
9.一種通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的方法,包括: 按照連續(xù)順序向接收方發(fā)送多個數(shù)據(jù)區(qū)段; 在發(fā)送方處從所述接收方接收確認(rèn),所述確認(rèn)是關(guān)于確認(rèn)收到在所述接收方處已接收的數(shù)據(jù)區(qū)段的最高序列號加一; 從所述接收方接收通告的接收窗,所述通告的接收窗指示在所述接收方處用于接收數(shù)據(jù)區(qū)段的緩存容量;以及 基于所述通告的接收窗,以經(jīng)調(diào)整的傳輸速率向所述接收方發(fā)送至少一個額外的數(shù)據(jù)區(qū)段。
10.一種通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的裝置,包括: 用于按照連續(xù)順序從發(fā)送方接收多個數(shù)據(jù)區(qū)段的單元; 用于推斷所述連續(xù)順序中的至少一個缺失的數(shù)據(jù)區(qū)段的單元;以及 用于基于對所述至少一個缺失的數(shù)據(jù)區(qū)段的所述推斷來向所述發(fā)送方確認(rèn)收到已接收的數(shù)據(jù)區(qū)段的最高字節(jié)序列號加一的單元。
11.根據(jù)權(quán)利要求10所述的裝置,其中,所述確認(rèn)還基于知曉所述連續(xù)順序中的缺失的字節(jié)序列號,所述缺失的字節(jié)序列號對應(yīng)于缺失的數(shù)據(jù)區(qū)段。
12.根據(jù)權(quán)利要求10所述的裝置,還包括: 用于基于以下各項中的至少一項來調(diào)整接收窗的單元: 對所述至少一個缺失的數(shù)據(jù)區(qū)段的所述推斷,或 TCP連接的往返時間, 所述接收窗指示用于接收數(shù)據(jù)區(qū)段的緩存容量;以及 用于向所述發(fā)送方通告經(jīng)調(diào)整的接收窗的單元。
13.根據(jù)權(quán)利要求10所述的裝置,還包括:用于基于所通告的經(jīng)調(diào)整的接收窗,以經(jīng)調(diào)整的傳輸速率從所述發(fā)送方接收至少一個額外的數(shù)據(jù)區(qū)段的單元。
14.根據(jù)權(quán)利要求10所述的裝置,其中,所述最高字節(jié)序列號加一對應(yīng)于在所述至少一個缺失的數(shù)據(jù)區(qū)段之前按連續(xù)順序最新接收的數(shù)據(jù)區(qū)段。
15.根據(jù)權(quán)利要求10所述的裝置,其中,所述最高字節(jié)序列號加一對應(yīng)于在所述至少一個缺失的數(shù)據(jù)區(qū)段之后按連續(xù)順序最新接收的數(shù)據(jù)區(qū)段。
16.根據(jù)權(quán)利要求15所述的裝置,其中,所接收的多個數(shù)據(jù)區(qū)段中的每一個都具有字節(jié)序列號, 所述至少一個缺失的數(shù)據(jù)區(qū)段對應(yīng)于所述連續(xù)順序中的至少一個缺失的字節(jié)序列號,以及 對應(yīng)于所述最新接收的數(shù)據(jù)區(qū)段的所述最高字節(jié)序列號加一大于所述至少一個缺失的字節(jié)序列號。
17.根據(jù)權(quán)利要求10所述的裝置,還包括:用于向應(yīng)用發(fā)送在任意時候接收的數(shù)據(jù)區(qū)段的內(nèi)容,而不等待接收所述至少一個缺失的數(shù)據(jù)區(qū)段的單元。
18.—種通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的裝置,包括: 用于按照連續(xù)順序向接收方發(fā)送多個數(shù)據(jù)區(qū)段的單元; 用于在發(fā)送方處從所述接收方接收確認(rèn)的單元,所述確認(rèn)是關(guān)于確認(rèn)收到在所述接收方處已接收的數(shù)據(jù)區(qū)段的最高序列號加一; 用于從所述接收方接收通告的接收窗的單元,所述通告的接收窗指示在所述接收方處用于接收數(shù)據(jù)區(qū)段的緩存容量;以及 用于基于所述通告的接收窗以經(jīng)調(diào)整的傳輸速率向所述接收方發(fā)送至少一個額外的數(shù)據(jù)區(qū)段的單元。
19.一種通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的裝置,包括: 被配置成執(zhí)行以下操作的處理系統(tǒng): 按照連續(xù)順序從發(fā)送方接收多個數(shù)據(jù)區(qū)段; 推斷所述連續(xù)順序中的至少一個缺失的數(shù)據(jù)區(qū)段;以及 基于對所述至少一個缺失的數(shù)據(jù)區(qū)段的所述推斷來向所述發(fā)送方確認(rèn)收到已接收的數(shù)據(jù)區(qū)段的最高字節(jié)序列號加一。
20.根據(jù)權(quán)利要求19所述的裝置,其中,所述確認(rèn)還基于知曉所述連續(xù)順序中的缺失的字節(jié)序列號,所述缺失的字節(jié)序列號對應(yīng)于缺失的數(shù)據(jù)區(qū)段。
21.根據(jù)權(quán)利要求19所述的裝置,所述處理系統(tǒng)還被配置成: 基于以下各項中的至少一項來調(diào)整接收窗: 對所述至少一個缺失的數(shù)據(jù)區(qū)段的所述推斷,或 TCP連接的往返時間, 所述接收窗指示用于接收數(shù)據(jù)區(qū)段的緩存容量;以及 向所述發(fā)送方通告經(jīng)調(diào)整的接收窗。
22.根據(jù)權(quán)利要求19所述的裝置,所述處理系統(tǒng)還被配置成:基于所通告的經(jīng)調(diào)整的接收窗,以經(jīng)調(diào)整的傳輸速率從所述發(fā)送方接收至少一個額外的數(shù)據(jù)區(qū)段。
23.根據(jù)權(quán)利要求19所述的裝置,其中,所述最高字節(jié)序列號加一對應(yīng)于在所述至少一個缺失的數(shù)據(jù)區(qū)段之前按連續(xù)順序最新接收的數(shù)據(jù)區(qū)段。
24.根據(jù)權(quán)利要求19所述的裝置,其中,所述最高字節(jié)序列號加一對應(yīng)于在所述至少一個缺失的數(shù)據(jù)區(qū)段之后按連續(xù)順序最新接收的數(shù)據(jù)區(qū)段。
25.根據(jù)權(quán)利要求24所述的裝置,其中,所接收的多個數(shù)據(jù)區(qū)段中的每一個都具有字節(jié)序列號, 所述至少一個缺失的數(shù)據(jù)區(qū)段對應(yīng)于所述連續(xù)順序中的至少一個缺失的字節(jié)序列號,以及 對應(yīng)于所述最新接收的數(shù)據(jù)區(qū)段的所述最高字節(jié)序列號加一大于所述至少一個缺失的字節(jié)序列號。
26.根據(jù)權(quán)利要求19所述的裝置,所述處理系統(tǒng)還被配置成:向應(yīng)用發(fā)送在任意時候接收的數(shù)據(jù)區(qū)段的內(nèi)容,而不等待接收所述至少一個缺失的數(shù)據(jù)區(qū)段。
27.一種通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的裝置,包括: 被配置成執(zhí)行以下操作的處理系統(tǒng): 按照連續(xù)順序向接收方發(fā)送多個數(shù)據(jù)區(qū)段; 在發(fā)送方處從所述接收方接收確認(rèn),所述確認(rèn)是關(guān)于確認(rèn)收到在所述接收方處已接收的數(shù)據(jù)區(qū)段的最高序列號加一; 從所述接收方接收通告的接收窗,所述通告的接收窗指示在所述接收方處用于接收數(shù)據(jù)區(qū)段的緩存容量;以及 基于所述通告的接收窗,以經(jīng)調(diào)整的傳輸速率向所述接收方發(fā)送至少一個額外的數(shù)據(jù)區(qū)段。
28.一種通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的計算機(jī)程序產(chǎn)品,包括: 含有用于執(zhí)行以下操作的代碼的計算機(jī)可讀介質(zhì): 按照連續(xù)順序從發(fā)送方接收多個數(shù)據(jù)區(qū)段; 推斷所述連續(xù)順序中的至少一個缺失的數(shù)據(jù)區(qū)段;以及 基于對所述至少一個缺失的數(shù)據(jù)區(qū)段的所述推斷來向所述發(fā)送方確認(rèn)收到已接收的數(shù)據(jù)區(qū)段的最高字節(jié)序列號加一。
29.一種通過傳輸控制協(xié)議(TCP)來傳送數(shù)據(jù)的計算機(jī)程序產(chǎn)品,包括: 含有用于執(zhí)行以下操作的代碼的計算機(jī)可讀介質(zhì): 按照連續(xù)順序向接收方發(fā)送多個數(shù)據(jù)區(qū)段; 在發(fā)送方處從所述接收方接收確認(rèn),所述確認(rèn)是關(guān)于確認(rèn)收到在所述接收方處已接收的數(shù)據(jù)區(qū)段的最高序列號加一; 從所述接收方接收通告的接收窗,所述通告的接收窗指示在所述接收方處用于接收數(shù)據(jù)區(qū)段的緩存容量;以及 基于所述通告的接收窗,以經(jīng)調(diào)整的傳輸速率向所述接收方發(fā)送至少一個額外的數(shù)據(jù)區(qū)段。
【文檔編號】H04L1/18GK104365052SQ201380031084
【公開日】2015年2月18日 申請日期:2013年6月12日 優(yōu)先權(quán)日:2012年6月14日
【發(fā)明者】K·R·福爾 申請人:高通股份有限公司