專利名稱:通信設備,傳輸控制方法,和程序產品的制作方法
技術領域:
本發(fā)明涉及一種在通信網中控制數(shù)據(jù)重發(fā)的通信設備。
背景技術:
利用TCP(傳輸控制協(xié)議)的通信系統(tǒng)以被廣泛使用。在這些系統(tǒng)中,可以使用諸如服務器設備之類的設備將數(shù)據(jù)分割成多個數(shù)據(jù)分段,每個數(shù)據(jù)分段包括一個包含標識該分段的序列號的首部。服務器設備按照數(shù)據(jù)分段的序列號順序將數(shù)據(jù)分段發(fā)送到客戶設備。當客戶設備接收到來自服務器設備的一個數(shù)據(jù)分段時,客戶設備將接收到的數(shù)據(jù)分段的確認發(fā)送到服務器設備。確認包括一個指示下一個要發(fā)送的數(shù)據(jù)分段的序列號的確認號。以這種方式,在TCP下通信的服務器設備可以確認接收到發(fā)送的數(shù)據(jù)分段。
但是,在上述的通信過程中,客戶設備有可能不能接收到從服務器設備發(fā)送的數(shù)據(jù)分段。也就是說,分段可能在到達客戶設備的途中丟失(此后稱為“數(shù)據(jù)分段丟失”)。如果發(fā)生數(shù)據(jù)分段丟失,那么客戶設備將不向服務器設備發(fā)送分段接收的確認。為了避免在TCP下進行通信時過長的通信延遲,將一個預定時間值設定為從服務器設備發(fā)送數(shù)據(jù)分段到接收到對應于在發(fā)射裝置發(fā)送的數(shù)據(jù)分段的確認的超時值(此后稱為“重發(fā)超時”)。如果發(fā)生重發(fā)超時,那么假設發(fā)送的數(shù)據(jù)分段已經丟失,從而重新發(fā)送數(shù)據(jù)分段。
如上所述,一個數(shù)據(jù)分段的確認包括一個指示下一個要發(fā)送的數(shù)據(jù)分段的序列號的確認號。在以下的說明中,術語“重發(fā)超時”除了具有上述的意義之外,也用于指示發(fā)生重發(fā)超時時的數(shù)據(jù)分段的重發(fā)。
通過將上述接收到對應于前一個數(shù)據(jù)分段的確認之后發(fā)送后一個數(shù)據(jù)分段的方法用于TCP下的通信,可以提高通信的可靠性。但是,這種方法存在的問題是,它可能造成數(shù)據(jù)傳輸率降低??朔@個問題的一種解決方案是,使TCP服務器設備發(fā)送多個數(shù)據(jù)分段,而不等待確認的接收;和每次服務器設備接收到一個對應于發(fā)送的數(shù)據(jù)分段的確認時,增加連續(xù)發(fā)送的數(shù)據(jù)分段數(shù)。將這種發(fā)送數(shù)據(jù)分段的方法稱為“窗口控制”,并且把連續(xù)發(fā)送的數(shù)據(jù)分段的數(shù)量稱為“擁擠窗口大小”。當在窗口控制下發(fā)生重發(fā)超時時,服務器設備重發(fā)丟失的數(shù)據(jù)分段,并且將擁擠窗口大小減小到最小值。每當服務器設備接收到對應于發(fā)送的數(shù)據(jù)分段的確認時,服務器設備根據(jù)一種預定算法(例如,緩慢啟動算法和擁擠避免算法)增大擁擠窗口大小。這是為了防止大量數(shù)據(jù)分段流入通信網造成的擁擠惡化。緩慢啟動算法是一種指數(shù)增大擁擠窗口大小的算法,而擁擠避免算法是一種線性增大擁擠窗口大小的算法。將根據(jù)緩慢啟動算法增大擁擠窗口大小的過程稱為“緩慢啟動過程”,并且將根據(jù)擁擠避免算法增大擁擠窗口大小的過程稱為“擁擠避免過程”。在一般情況下,在擁擠窗口大小達到一個給定閾值之前,遵守TCP的通信系統(tǒng)執(zhí)行緩慢啟動過程,而在擁擠窗口大小超過給定閾值之后,執(zhí)行擁擠避免過程。
移動分組通信系統(tǒng)是一種符合如上所述的TCP的通信系統(tǒng)。這種移動通信系統(tǒng)包括一個在移動分組通信網與客戶設備之間的無線通信路徑。在這種系統(tǒng)中,如果無線電波環(huán)境發(fā)生惡化,發(fā)送的數(shù)據(jù)分段可以在移動通信系統(tǒng)中保持相對較長時間的暫停。在發(fā)生重發(fā)超時之后無線電波環(huán)境恢復的情況下,客戶設備接收暫停的數(shù)據(jù)分段。
在這種情況下,客戶設備接收到暫停的數(shù)據(jù)分段(此后稱為“原始數(shù)據(jù)分段”)和重發(fā)的數(shù)據(jù)分段。客戶設備向服務器設備發(fā)送兩個確認一個對應于原始數(shù)據(jù)分段的確認,和另一個對應于重發(fā)數(shù)據(jù)分段的確認。但是,除了它們的發(fā)送時間之外,這兩個確認之間沒有差別。因此,當服務器設備接收到第一個確認時,服務器設備不能識別確認是對應于原始數(shù)據(jù)分段還是重發(fā)數(shù)據(jù)分段。在現(xiàn)有技術中,假設確認對應于重發(fā)數(shù)據(jù)分段,并且假設原始數(shù)據(jù)分段已經丟失。根據(jù)這種假設,服務器設備重發(fā)暫停數(shù)據(jù)分段之后的數(shù)據(jù)分段,而不管客戶設備實際上已經接收到數(shù)據(jù)分段。
如上所述,在涉及到超時之后的重發(fā)的情況下,現(xiàn)有技術存在著以下問題。即,在現(xiàn)有技術中,由于現(xiàn)有技術需要一定的時間根據(jù)緩慢啟動算法和擁擠避免算法中的每一個來恢復擁擠窗口大小,所以通過量降低。此外,在現(xiàn)有技術中,重發(fā)客戶設備已經接收到的數(shù)據(jù)分段,造成網絡業(yè)務量增加。
發(fā)明內容
本發(fā)明的目的是要解決上述現(xiàn)有技術的問題。也就是說,本發(fā)明允許能夠適當?shù)乜刂苽鬏斅?,而不會增大信息量,不會不適當?shù)亟档蛡鬏斅?,和不進行不必要的數(shù)據(jù)分段重發(fā)。
本發(fā)明提供了一種通信設備,包括發(fā)送裝置,用于經過分組通信網將多個數(shù)據(jù)分段發(fā)送到一個目的地設備,多個數(shù)據(jù)分段中的每一個包括一個序列號,多個數(shù)據(jù)分段按照序列號順序發(fā)送;接收裝置,用于接收指示下一個要接收的數(shù)據(jù)分段的確認;重發(fā)裝置,用于改變傳輸率,和用于在發(fā)送裝置發(fā)送了多個數(shù)據(jù)分段中的一個之后過去了預定的時間時,通信設備沒有接收到包括大于包括在多個數(shù)據(jù)分段中這個數(shù)據(jù)分段中的序列號的確認號的確認的情況下,重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段;和控制裝置,用于確定下一個要發(fā)送的后續(xù)數(shù)據(jù)分段,并且用于根據(jù)確認的種類和包括在確認中的信息控制傳輸率以發(fā)送后續(xù)的數(shù)據(jù)分段。
在一個優(yōu)選實施例中,當在重發(fā)了多個數(shù)據(jù)分段中的一個之后,接收裝置接收到預定數(shù)量的全都包括相同的確認號的確認時,重發(fā)裝置再次重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段。在接收裝置接收到一個包括跟隨在包括在已經發(fā)送的數(shù)據(jù)分段中的一個最大序列號之后的確認號的確認的情況下,控制裝置可以根據(jù)在緊接著預定時間過去之前的時間點的傳輸率更新傳輸率。
在另一個優(yōu)選實施例中,當在重發(fā)了多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段之后,接收裝置接收到全都包括相同確認號的預定數(shù)據(jù)量的選定確認時,重發(fā)裝置再次重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段,選定確認進一步包括用于標識接收的數(shù)據(jù)分段的選定確認信息,多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段是由這個選定的確認信息標識的。
在又一個優(yōu)選實施例中,在接收裝置接收到包括一個等于一個序列號的確認號的確認的情況下,這個序列號是一個大于包括在重發(fā)裝置重發(fā)的多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段中的序列號的預定號碼,控制裝置根據(jù)緊接著預定時間過去之前的時間點的傳輸率更新傳輸率。
在再一個優(yōu)選實施例中,在接收裝置接收到包括一個大于一個序列號的確認號的確認的情況下,這個序列號是一個大于包括在重發(fā)裝置重發(fā)的多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段中的序列號的預定號碼,重發(fā)裝置可以再次重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段。在接收裝置接收到一個包括一個緊隨包括在已經發(fā)送的數(shù)據(jù)分段中的一個最大序列號之后的確認號的確認的情況下,控制裝置可以將傳輸率更新到低于緊接著預定時間過去之前的時間點的傳輸率。
在再一個優(yōu)選實施例中,在接收裝置接收到包括一個等于一個序列號的確認號的確認的情況下,這個序列號是一個大于包括在重發(fā)裝置重發(fā)的多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段中的序列號的預定號碼,控制裝置可以將傳輸率更新到低于緊接著預定時間過去之前的時間點的傳輸率。
本發(fā)明還提供了一種發(fā)送控制方法,包括步驟經過分組通信網將多個數(shù)據(jù)分段發(fā)送到一個目的地設備,多個數(shù)據(jù)分段中的每一個包括一個序列號,按序列號的順序發(fā)送該多個數(shù)據(jù)分段;接收指示目的地設備請求通信設備下一次發(fā)送的數(shù)據(jù)分段的確認;在當自從發(fā)送步驟發(fā)送了多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段過去了預定的持續(xù)時間,通信設備還沒有接收到包括一個大于一個包括在多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段中的序列號的確認號的確認的情況下,改變傳輸率并且重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段;確定下一個要發(fā)送的后續(xù)數(shù)據(jù)分段,并且根據(jù)確認的種類和包括在確認中的信息控制傳輸率,以發(fā)送后續(xù)數(shù)據(jù)分段。
本發(fā)明也提供了一種使計算機執(zhí)行該傳輸控制方法的程序產品。
以下根據(jù)附圖詳細說明本發(fā)明的優(yōu)選實施例,其中圖1是表示根據(jù)本發(fā)明第一實施例的通信系統(tǒng)1的配置的方框圖;圖2示出了通過基于TCP的分組通信系統(tǒng)通信的數(shù)據(jù)分段的數(shù)據(jù)結構;圖3是表示這六個參數(shù)的相互關系的示意圖;圖4是表示根據(jù)第一實施例的服務器設備10的配置的方框圖;圖5是表示根據(jù)第一實施例的服務器設備10和客戶設備50之間的分組通信的操作的順序圖;圖6是表示根據(jù)第一實施例的服務器設備10中的分組通信的操作的流程圖;圖7是說明擁擠窗口的示意圖;圖8是表示根據(jù)本發(fā)明第二實施例的服務器設備10和客戶設備50之間的分組通信的操作的順序圖;圖9是表示根據(jù)第二實施例的服務器設備10中的分組通信的操作的流程圖;圖10是表示根據(jù)本發(fā)明第三實施例的服務器設備10和客戶設備50之間的分組通信的操作的順序圖;圖11是表示根據(jù)第三實施例的服務器設備10中的分組通信的操作的流程圖;圖12是表示根據(jù)本發(fā)明第四實施例的服務器設備10和客戶設備50之間的分組通信的操作的順序圖;圖13是表示根據(jù)第四實施例的服務器設備10中的分組通信的操作的流程圖;圖14是表示根據(jù)第四實施例的服務器設備10和客戶設備50之間的分組通信的操作的順序圖;和圖15是表示根據(jù)第四實施例的服務器設備10和客戶設備50之間的分組通信的操作的順序圖。
具體實施例方式
以下參考
本發(fā)明的優(yōu)選實施例。在所有附圖中,具有相同功能的機構分別相同的參考號表示。
1.第一實施例1-1.通信系統(tǒng)1的配置圖1是顯示根據(jù)本發(fā)明第一實施例的通信系統(tǒng)1的配置的方框圖。通信終端40連接到客戶設備50,并且執(zhí)行與客戶設備50的分組通信。移動分組通信網30給移動分組通信網30服務的通信終端40提供分組通信服務。服務器設備10經過互聯(lián)網20、移動分組通信網30、和通信終端40執(zhí)行與客戶設備50的分組通信。在本實施例中,服務器設備10根據(jù)TCP執(zhí)行與客戶設備50的分組通信,從而發(fā)送數(shù)據(jù)分段。
1-2.基于TCP的分組通信在說明本實施例之前,先說明基于TCP的分組通信。圖2示出了通過基于TCP的分組通信通信的數(shù)據(jù)分段的數(shù)據(jù)結構。在本說明書中,數(shù)據(jù)分段的源和目的地分別是服務器設備10和客戶設備50。每個數(shù)據(jù)分段具有一個首部,首部包括指示數(shù)據(jù)分段在數(shù)據(jù)序列中的順序的序列號。服務器設備10以序列號順序向客戶設備50發(fā)送多個數(shù)據(jù)分段。客戶設備50響應接收的數(shù)據(jù)分段,發(fā)送確認。確認包括一個首部,首部包含一個指示客戶設備50預期下一個接收的數(shù)據(jù)分段的序列號的確認號。
當滿足以下兩個條件中的每一個時,服務器設備估計發(fā)生了數(shù)據(jù)分段丟失,并且重發(fā)丟失的數(shù)據(jù)分段。第一個條件是,自從服務器設備10發(fā)送了數(shù)據(jù)分段起過去了預定的時間(此后稱為“重發(fā)超時持續(xù)時間”),而沒有接收到來自客戶設備50的對應于發(fā)送的數(shù)據(jù)分段的確認。第二個條件是,接收到預定數(shù)量(例如,三個)的全都具有相同確認號的確認。將這些確認稱為“復制確認”。根據(jù)第二個條件的數(shù)據(jù)分段的重發(fā)不依賴于重發(fā)超時。即,如果服務器設備10接收到三個復制確認,那么服務器設備10立即重發(fā)對應于相同確認號的數(shù)據(jù)分段。由于執(zhí)行重發(fā)而無需等待重發(fā)超時持續(xù)時間過去,因而將根據(jù)第二條件的重發(fā)稱為“快重發(fā)”。
此外,為了保證可靠性,TCP具有兩種用于響應網絡的通信狀態(tài)以及丟失數(shù)據(jù)分段的重發(fā)控制數(shù)據(jù)傳輸率的控制機制。一個是“擁擠控制”,另一個是“流控制”。在一般情況下,流控制是指響應一個目的地(在本例中是客戶設備50)的傳輸率的控制;而擁擠控制是指響應網絡通信狀態(tài)的傳輸率的控制。以下詳細說明服務器設備10執(zhí)行的每個控制機制。
服務器設備10存儲至少六個參數(shù),snd_max,snd_nxt,snd_una,snd_wnd,snd_cwnd,和sstresh。擁擠控制是通過發(fā)送多個根據(jù)這些參數(shù)標識的數(shù)據(jù)分段執(zhí)行的。圖3是顯示這六個參數(shù)的相互關系的圖表。snd_max給出了已經發(fā)送的數(shù)據(jù)分段中的一個包括最大序列號的數(shù)據(jù)分段的序列號(例如,圖3中的序列號“3000”)。snd_nxt給出了下一個要發(fā)送或重發(fā)送的數(shù)據(jù)分段的序列號(例如,圖3中的序列號“3500”)。snd_una給出了已經發(fā)送的數(shù)據(jù)分段中最近未答復的序列號(例如,圖3中的序列號“2000”)。snd_cwnd給出了服務器設備10沒有接收到以前發(fā)送的數(shù)據(jù)分段的確認時可能發(fā)送的數(shù)據(jù)分段數(shù)。即,snd_cwnd代表“擁擠窗口大小”,并且是一個由服務器設備10控制的值。相反,snd_wnd代表一個從客戶設備50通知的通告窗口大??;并且通告窗口大小的值指示客戶設備50的可用緩存器接收空間,并且用字節(jié)表示。服務器設備10根據(jù)執(zhí)行的那一個窗口控制,使用通告窗口大小snd_wnd和擁擠窗口大小snd_cwnd中最小的一個作為發(fā)送窗口大小。結果,發(fā)送窗口大小決不會超過通告窗口大小,并且發(fā)送到客戶設備50的數(shù)據(jù)分段數(shù)量決不會超過客戶設備50的可用緩存器空間。服務器設備10通過把參數(shù)snd_wnd設置到通告窗口大小執(zhí)行流控制。
服務器設備10通過把擁擠窗口大小snd_cwnd更新到適當?shù)闹祦韴?zhí)行擁擠控制。一個數(shù)據(jù)分段用一個被稱作最大分段大小(Maximum SegmentSize,此后稱為“MSS”)的單位表示,其中把1MSS的默認大小定為512字節(jié);并且,例如,snd_cwnd具有1MSS作為其初始值。每當接收到一個發(fā)送數(shù)據(jù)分段的確認時,服務器設備10根據(jù)一種其中指數(shù)遞增發(fā)送的數(shù)據(jù)分段數(shù)量的緩慢啟動算法增加snd_cwnd的值,直到該值達到一個預定的閾值sstresh(例如,65,535字節(jié))。當snd_cwnd的值達到閾值sstresh時,服務器設備10根據(jù)擁擠避免算法增加snd_cwnd的值,直到檢測到一個數(shù)據(jù)分段丟失并且沒有達到客戶設備50。
當服務器設備10檢測到數(shù)據(jù)丟失時,服務器設備10通過更新sstresh和snd_cwnd的值,降低傳輸率。更具體地講,將sstresh的值設置到檢測到數(shù)據(jù)分段丟失時的sstresh值的一半。此外,使擁擠窗口大小最小,即,把snd_cwnd的值設置到1MSS。更新后的操作,根據(jù)是通過重發(fā)超時還是通過復制確認檢測到數(shù)據(jù)分段丟失而不同。
在通過重發(fā)超時檢測到數(shù)據(jù)分段丟失的情況下,用snd_una的值更新snd_nxt的值,并且發(fā)送具有snd_nxt的值的序列號的數(shù)據(jù)分段。然后,每當接收到重發(fā)數(shù)據(jù)分段的確認時,服務器設備10利用上述緩慢啟動算法增加擁擠窗口大小。
在通過復制確認檢測到數(shù)據(jù)分段丟失的情況下,服務器設備10根據(jù)上述快重發(fā)來重發(fā)丟失的數(shù)據(jù)分段。
此外,在服務器設備10遵守快恢復算法的情況下,當檢測到數(shù)據(jù)分段丟失時,服務器設備10用snd_cwnd的值的一半更新snd_cwnd的值。然后,每當接收到重發(fā)數(shù)據(jù)分段的確認時,服務器設備10利用上述緩慢啟動控制算法增加擁擠窗口大小snd_cwnd。服務器設備10利用擁擠窗口大小snd_cwnd發(fā)送已經發(fā)送的數(shù)據(jù)分段中的一個包括最大序列號的數(shù)據(jù)分段后面的數(shù)據(jù)分段。
1-3.服務器設備10的配置接下來,說明服務器設備10的配置。服務器設備10的配置方式與標準計算機相同,因此,僅參考圖4說明與本實施例有關的那些組件。
CPU 100執(zhí)行存儲在存儲單元105中的程序,從而控制服務器設備10的每個組件。CPU 100包括定時器100a,定時器100a在CPU 100設置的預定時間過去時,輸出一個觸發(fā)信號。在本實施例中,定時器100a在重發(fā)超時持續(xù)時間過去時,輸出觸發(fā)信號。存儲單元105包括RAM(隨機存取存儲器)102,ROM(只讀存儲器)103,和HDD(硬盤驅動器)104。ROM 103存儲用于致使CPU 100控制數(shù)據(jù)分段發(fā)送的程序。CPU 100通過以下方式控制數(shù)據(jù)分段發(fā)送。
當服務器設備10接收到包括與重發(fā)超時之后重發(fā)的一個數(shù)據(jù)分段的序列號相同的確認號的確認時,CPU 100估計該確認與重發(fā)數(shù)據(jù)分段相對應。進一步估計一些數(shù)據(jù)分段已經到達客戶設備50,和一些數(shù)據(jù)沒有到達客戶設備50。在這里,如果服務器設備10接收到復制確認,那么服務器設備10根據(jù)上述快重發(fā)來重發(fā)包括與丟失數(shù)據(jù)分段相同序列號的序列號的數(shù)據(jù)分段。當服務器設備10接收到一個指示客戶設備50已經接收到所有丟失數(shù)據(jù)分段的確認時,服務器設備10從緊接著已經發(fā)送的數(shù)據(jù)分段中具有最大序列號的數(shù)據(jù)分段后面的一個數(shù)據(jù)分段開始發(fā)送數(shù)據(jù)分段。將snd_cwnd的值設置到緊接著檢測到重發(fā)超時之前存儲的值。因此,服務器設備10可以用緊接著檢測到超時之前的時間點的傳輸率發(fā)送數(shù)據(jù)分段。
1-4.操作在這一節(jié)中說明根據(jù)本實施例的通信系統(tǒng)1的操作。
圖5是表示服務器設備10與客戶設備50之間的分組通信的操作的順序圖。圖6是表示根據(jù)本實施例的服務器設備10中的分組通信的操作的流程圖。
在本實施例中,最初將擁擠窗口大小snd_cwnd設置到4MSS。首先,服務器設備10向客戶設備50發(fā)送分別具有序列號“500”,“1000”,“1500”,和“2000”的數(shù)據(jù)分段。以后,將這些數(shù)據(jù)分段分別稱為“原始數(shù)據(jù)分段”S1-S4。
在原始數(shù)據(jù)分段S1丟失和沒有到達客戶設備50,并且由于通信中斷而使原始數(shù)據(jù)分段S2-S4在到達客戶設備50之前暫停發(fā)送的情況下,通信恢復之后客戶設備50順序地接收到原始數(shù)據(jù)分段S2-S4。因此,原始數(shù)據(jù)分段S2-S4到達客戶設備50的所需時間被延遲。
當客戶設備50接收到原始數(shù)據(jù)分段S2時,客戶設備50向服務器設備10發(fā)送確認R2,確認R2包括指示客戶設備50請求接收原始數(shù)據(jù)分段S1的確認號“500”。
在客戶設備50順序地接收到原始數(shù)據(jù)分段S3和S4之后,客戶設備50向服務器10發(fā)送分別用于原始數(shù)據(jù)分段S3和S4的確認R3和R4。這些確認R3和R4也包括序列號“500”。
然后,服務器10順序地接收這些確認R2-R4。
現(xiàn)在,參考圖6說明服務器設備10執(zhí)行的操作。
服務器設備10的CPU 100發(fā)送原始數(shù)據(jù)分段S2-S4。如圖7中所示,CPU100可以控制上述參數(shù)。在這一時間點,snd_una,snd_max,snd_nxt,snd_cwnd,snd_wnd,和sstresh的值分別是“500”,“2000”,“2500”,“4MSS”,“100MSS”和“65535字節(jié)”。
在發(fā)送數(shù)據(jù)分段之后,CPU 100等待原始數(shù)據(jù)分段S1的確認。在等待確認中,CPU 100在定時器100a設置重發(fā)超時持續(xù)時間,以致使定時器100a測量過去的時間。
然后,CPU 100確定是否接收到任何確認。當確定為“否”時,CPU 100接下來通過定時器100a確定是否發(fā)生重發(fā)超時。在后面的確定中確定為“否”的情況下,例程返回到前一個確定。在重發(fā)超時發(fā)生之前,只要沒有接收到確認,CPU 100反復進行確定。
在此假設由于數(shù)據(jù)分段S1已丟失并且數(shù)據(jù)分段S2和S3的到達被延遲,在服務器設備10接收到確認R2之前,過去的時間達到重發(fā)超時持續(xù)時間。也就是說,假設CPU 10檢測到重發(fā)超時(步驟C10)。在這種情況下,CPU 100估計所有原始數(shù)據(jù)分段S1-S4都已經丟失而沒有到達客戶設備50。結果,CPU 100重置定時器100a,并且根據(jù)上述擁擠控制算法更新sstresh和snd_cwnd的值。更具體地講,將sstresh的值更新到“2MSS”,這是snd_cwnd的值“4MSS”的一半。此外,響應重發(fā)超時,將snd_cwnd的值更新到“1MSS”,這是窗口大小的最小值。CPU 100將snd_cwnd的以前的值“4MSS”存儲在RAM 102中。
CPU 100將具有序列號“500”的數(shù)據(jù)分段(圖5中的重發(fā)數(shù)據(jù)分段S’1)重發(fā)到客戶設備50(步驟C11)。
接下來,CPU 100確定是否接收到任何確認,并且在確定為“否”的情況下,CPU 100接著通過定時器100a確定是否發(fā)生超時。當后面的確定為“否”時,例程返回到前面的確定。此后,在超時發(fā)生之前,只要沒有接收到確認,CPU 100反復進行確定。
當服務器設備10接收到確認R2時(步驟C12),CPU 100確定接收的確認R2是一個復制確認,并且確認R2對應于該重發(fā)數(shù)據(jù)分段。因此,估計并未丟失所有發(fā)送的數(shù)據(jù)分段,并且客戶設備50已經接收到一些發(fā)送的數(shù)據(jù)分段。
服務器設備10接收到確認R3和R4時,CPU 100執(zhí)行上述的快重發(fā)。然后,CPU 100將包括序列號“500”的數(shù)據(jù)分段(圖5中的重發(fā)數(shù)據(jù)分段S”1)重發(fā)到客戶設備50(步驟C13)。
以上圖5中所述的操作如下。即,在服務器設備10中,由于發(fā)生重發(fā)超時,因而發(fā)送重發(fā)數(shù)據(jù)分段S’1,然后,接收確認R2至R4,并且最終根據(jù)快重發(fā)發(fā)送重發(fā)數(shù)據(jù)分段S”1。另一方面,在客戶設備50中,接收重發(fā)數(shù)據(jù)分段S’1,和包括一個指示下一個接收的數(shù)據(jù)分段的確認號“2500”的確認R’1。
再次參考圖6,當服務器設備100接收到確認R’1時(步驟C14),CPU 100確定客戶設備50已經接收到發(fā)送的具有序列號“500”,“1000”,“1500”,和“2000”的所有數(shù)據(jù)分段。結果,CPU 100用存儲在RAM 104中的、緊接著重發(fā)超時之前的時間點的snd_cwnd的值更新?lián)頂D窗口大小snd_cwnd的值。在本實施例中,將擁擠窗口大小snd_cwnd從“1MSS”更新到“2MSS”,這是存儲值“4MSS”的一半。此外,將閾值sstresh的值更新到與snd_cwnd相同的值。在本實施例中,將snd_cwnd的值更新到“2MSS”。發(fā)送的數(shù)據(jù)分段的數(shù)量是2。然后,CPU 100將包括序列號“2500”和“3000”的兩個數(shù)據(jù)分段發(fā)送到客戶設備50。如圖5中所示,服務器設備10把原始數(shù)據(jù)分段S5和S6發(fā)送到客戶設備50。
服務器10如上所述控制對客戶設備50發(fā)送數(shù)據(jù)分段的傳輸率。
根據(jù)本實施例,由于服務器設備10僅發(fā)送客戶設備50沒有接收到的那些數(shù)據(jù)分段,因而減少了冗余重發(fā)量。
在現(xiàn)有技術中,由于在檢測到重發(fā)超時之后,根據(jù)緩慢啟動算法,將窗口大小減小到最小值,從而使得傳輸率減小到大大低于需要的傳輸率。相反,在根據(jù)本實施例的發(fā)明中,擁擠窗口大小snd_cwnd是根據(jù)緊接著超時之前的時間點的snd_cwnd的值更新的。因此,即使在發(fā)生重發(fā)超時之后,服務器設備10也能夠在適當?shù)膫鬏斅拾l(fā)送數(shù)據(jù)分段。
2.第二實施例本實施例涉及使用SACK(選擇性確認)選項的分組通信。為了避免冗余,省略了對與第一實施例中說明的相同的組件的說明。此外,相同的組件使用相同的參考號表示。
SACK信息是一種將數(shù)據(jù)分段丟失之后接收的,并且沒有到達客戶設備50的數(shù)據(jù)分段通知給服務器設備10的類型的信息。SACK信息包括在圖2中所示的首部中的一個選項字段中。例如,SACK信息“SACK=1500_2999”指示客戶設備50已經接收到包括從1500至2999的序列號的數(shù)據(jù)分段。
通常,根據(jù)本實施例的操作如下服務器設備10在重發(fā)超時之后重發(fā)一個數(shù)據(jù)分段。當服務器設備10接收到包括與重發(fā)的數(shù)據(jù)分段的序列號相同的確認號并且也包括SACK信息的復制確認時,服務器設備10執(zhí)行上述的快重發(fā),并且重發(fā)SACK信息標識的丟失數(shù)據(jù)分段。此后,當服務器設備10接收到一個顯示客戶設備50已經接收到所有丟失數(shù)據(jù)分段的確認時,CPU100將擁擠窗口大小snd_cwnd的值更新到緊接著重發(fā)超時之間的時間點的snd_cwnd的值。因此,將數(shù)據(jù)分段的傳輸率設置到緊接著超時之前的時間點的傳輸率。
服務器設備10的ROM 103存儲用于使服務器設備10執(zhí)行這些操作的傳輸控制程序。
圖8是表示服務器設備10與客戶設備50之間的分組通信的操作的順序圖。圖9是表示服務器設備10中的分組通信的操作的流程圖。如上所述,相同的組件用相同的參考號表示。利用相同的參考號說明與第一實施例中相同的步驟。
在本實施例中,擁擠窗口大小最初設置到6MSS。如圖8中所示,服務器設備10將分別具有序列號“500”,“1000”,“1500”,“2000”,“2500”,和“3000”的數(shù)據(jù)分段發(fā)送到客戶設備50。此后,將這些數(shù)據(jù)分段分別稱為“原始數(shù)據(jù)分段”S11-S16。在這里,假設原始數(shù)據(jù)分段S11和S12已經丟失和沒有到達客戶設備50,并且在一些延遲之后客戶設備50順序地接收到原始數(shù)據(jù)分段S13-S16。
在這種情況下,當客戶設備50接收到原始數(shù)據(jù)分段S13時,客戶設備50將對應于原始數(shù)據(jù)分段S13的確認R13發(fā)送到服務器設備10。確認R13包括一個與原始數(shù)據(jù)分段S11的序列號相同的確認號“500”。確認R13也包括一個指示客戶設備50已經接收到原始數(shù)據(jù)分段S13的SACK信息“SACK=1500_1999”。此后,當客戶設備50接收到原始數(shù)據(jù)分段S14-S16時,客戶設備50順序地將每個分別對應于原始數(shù)據(jù)分段S14-S16的確認R14-R16發(fā)送到服務器設備10。所有這些確認R14-R16也包括與原始數(shù)據(jù)分段的序列號相同的確認號“500”。確認R14,R15和R16也分別包括SACK信息“SACK=1500_2499”,“SACK=1500_2999”,和“SACK=1500_3499”。
因此,服務器設備10順序地接收這些確認R13-R16。
現(xiàn)在參考圖9說明上述服務裝置10執(zhí)行的操作。
服務器設備10的CPU 100發(fā)送原始數(shù)據(jù)分段S11-S16。在這個時間點,也將擁擠窗口大小snd_cwnd和閾值sstresh分別設置到“6MSS”和“65535字節(jié)”。
在本實施例中,原始數(shù)據(jù)分段S1和S2丟失并且沒有到達客戶設備50,而原始數(shù)據(jù)分段S14-S16已經在一些延遲之后被客戶設備50接收。結果,過去的時間達到重發(fā)超時持續(xù)時間;即,CPU 100檢測到重發(fā)超時(步驟C20)。在這種情況下,CPU 100重發(fā)包括序列號“500”的數(shù)據(jù)分段(重發(fā)數(shù)據(jù)分段S’11)??蛻粼O備50接收重發(fā)的數(shù)據(jù)分段S’11,并且響應數(shù)據(jù)分段S’11將確認R13發(fā)送到服務器設備10。當服務器設備10接收到確認R13時,CPU 100估計該重發(fā)的數(shù)據(jù)分段已經被客戶設備50接收。
CPU 100接收(步驟C22)每個都包括確認號“500”的復制確認(確認R13-R15)。在本實施例中,這些確認也包括SACK信息,并且CPU 100根據(jù)SACK信息確定下一個要發(fā)送的數(shù)據(jù)分段(步驟C24)。例如,當服務器設備10接收到包括SACK信息“SACK=1500_2499”,“SACK=1500_2999”,和“SACK=1500_3499”的確認時,CPU 100確定下一個要發(fā)送的數(shù)據(jù)分段是包括序列號“500”和“1000”的數(shù)據(jù)分段,即,原始數(shù)據(jù)分段S11和S12。將擁擠窗口大小設置到1MSS,然后,CPU 100根據(jù)快重發(fā)將包括序列號“500”的數(shù)據(jù)分段(圖8中的重發(fā)數(shù)據(jù)分段S”11)重發(fā)到客戶設備50(步驟C24)。此后,當服務器設備10接收到確認R16時,CPU重發(fā)包括序列號“1000”的數(shù)據(jù)分段(圖8中的重發(fā)數(shù)據(jù)分段S’12)(步驟C24)。
當客戶設備50接收到重發(fā)數(shù)據(jù)分段S”12時,所有發(fā)送的數(shù)據(jù)分段都被接收到。結果,客戶設備50將一個確認(圖8中的確認R’16)發(fā)送到服務器設備10。確認R’16包括對應于一個緊接著發(fā)送的數(shù)據(jù)分段后面的數(shù)據(jù)分段的確認號“3500”。由于客戶設備50已經接收到所有丟失數(shù)據(jù)分段,因而確認R’16不包括SACK信息。
當服務器設備10接收到確認R’16時(步驟C25),CPU 100將擁擠窗口大小snd_cwnd的值更新到緊接著超時之前的時間點的snd_cwnd的值(步驟C26),這與第一實施例的情況相同。接著,CPU 100將snd_cwnd的值設置到snd_cwnd的值的一半,并且把sstresh的值更新到snd_cwnd的值。在本實施例中,snd_cwnd的值從“6MSS”更新到“3MSS”,并且sstresh的值更新到“3MSS”。在這個時間點,擁擠窗口大小,即,要發(fā)送的數(shù)據(jù)分段數(shù)是3。接下來,CPU 100將具有序列號“3500”,“4000”,和“4500”的三個數(shù)據(jù)分段(圖8中的數(shù)據(jù)分段S17-S19)發(fā)送到客戶設備50。
3.第三實施例本實施例涉及使用SACK選項的分組通信的另一個例子。
在本實施例中,服務器設備10不響應復制確認執(zhí)行快重發(fā)。這與第二實施例不同。根據(jù)本實施例的一般操作如下。即,當服務器設備10在向客戶設備50重發(fā)了一個包括一個序列號的數(shù)據(jù)分段之后,接收到一個包括與發(fā)送的數(shù)據(jù)分段的序列號相同的確認號并且也包括SACK信息的確認時,CPU 100估計客戶設備50已經接收到重發(fā)的數(shù)據(jù)分段。也就是說,服務器設備10估計客戶設備50已經接收到一些數(shù)據(jù)分段,并且一些數(shù)據(jù)分段已經丟失而沒有到達客戶設備50。然后,CPU 100根據(jù)包括在超時之后的重發(fā)的數(shù)據(jù)分段中的序列號和包括在接收的確認中的SACK信息,確定下一個發(fā)送的數(shù)據(jù)分段。然后,CPU 100根據(jù)緊接著超時之前的時間點的snd_cwnd的值,更新?lián)頂D窗口大小snd_cwnd的值。因此,將數(shù)據(jù)分段的傳輸率設置到緊接著超時之前的傳輸率。
圖10是示出了服務器設備10與客戶設備50之間的分組通信的操作的順序圖。圖11是表示在根據(jù)本實施例的服務器設備10中的分組通信的操作的流程圖。
在本實施例中,最初將擁擠窗口大小設置到6MSS。如圖10中所示,服務器設備10向客戶設備50發(fā)送分別具有序列號“500”,“1000”,“1500”,“2000”,“2500”和“3000”的數(shù)據(jù)分段。此后,分別將這些數(shù)據(jù)分段稱為“原始數(shù)據(jù)分段”S21-S26。在此,假設原始數(shù)據(jù)分段S21和S22已經丟失而沒有到達客戶設備50,并且客戶設備50在一些延遲之后已經按順序接收到原始數(shù)據(jù)分段S23-S26。
在這種情況下,客戶設備50向服務器設備10發(fā)送包括SACK信息的確認R23-R26,這與第二實施例的情況相同。
由于原始數(shù)據(jù)分段S23-S26到達客戶設備50被延遲,因而這些確認R23-R26在一些延遲之后被服務器設備10按順序接收。
因此,服務器設備10的CPU 100檢測到對應于包括序列號“500”的數(shù)據(jù)分組的確認的重發(fā)超時(步驟C30),并且重發(fā)包括序列號“500”的數(shù)據(jù)分段(圖10中的重發(fā)數(shù)據(jù)分段S’21)(步驟C31)。在檢測到重發(fā)超時之后,閾值sstresh和擁擠窗口大小snd_cwnd的值分別是“3MSS”和“1MSS”。將緊接著超時之前的時間點的sstresh“65535字節(jié)”和snd_cwnd“6MSS”的值存儲在RAM 102中。
當CPU 100接收到包括確認號“500”的確認R23時(步驟C32),CPU 100執(zhí)行以下操作。
首先,CPU 100分析包括在確認R23中的SACK信息(步驟C33)。由于在這種情況下SACK信息是“SACK=1500_1999”,所以CPU 100估計原始數(shù)據(jù)分段S23已經被客戶設備50接收。此外,根據(jù)SACK信息,CPU 100估計每個都具有小于1500的序列號的原始數(shù)據(jù)分段S21和S22已經丟失和沒有到達客戶設備50。結果,由于已經重發(fā)了原始數(shù)據(jù)分段S21(圖10中的重發(fā)數(shù)據(jù)分段S’21),CPU 100重發(fā)原始數(shù)據(jù)分段S22。也就是說,CPU 100重發(fā)了包括序列號“1000”的數(shù)據(jù)分段(圖10中的重發(fā)數(shù)據(jù)分段S’22)。
當CPU 100接收到包括確認號“500”和SACK信息“SACK=1500_2499”的確認R24時,CPU 100重發(fā)緊接著前面重發(fā)的數(shù)據(jù)分段之后的一個數(shù)據(jù)分段,這與接收確認R23的情況相同。因此,只要CPU 100接收到一個確認時,CPU 10總是重發(fā)緊接著前面重發(fā)的數(shù)據(jù)分段之后的一個數(shù)據(jù)分段,直到接收到包括對應于下一個要發(fā)送的數(shù)據(jù)分段的序列號“3500”的確認。
當CPU 100接收到包括確認號“3500”的確認時(圖10中的確認R’26),CPU 100將閾值sstresh和擁擠窗口大小snd_cwnd的值更新到存儲在RAM102中的、在緊接著超時之前的時間點的那些值。CPU 100進一步根據(jù)存儲在RAM 102中的值更新sstresh和snd_cwnd的值。例如,將snd_cwnd的值更新到“3MSS”,這個值是存儲的值“6MSS”的一半。此外,將sstresh的值更新到與snd_cwnd值相同的值“3MSS”。
因此,CPU 100根據(jù)緊接著重發(fā)超時之前的時間點的傳輸率控制分組通信的傳輸率。
4.第四實施例本實施例涉及使用延遲確認算法的分組通信。
在使用延遲確認算法的分組通信中,接收到數(shù)據(jù)分段的客戶設備50暫停確認的發(fā)送。在本實施例中,客戶設備50發(fā)送一個對應于兩個數(shù)據(jù)分段的確認,這個確認被稱為“延遲確認”。即,當客戶設備50順序接收到兩個數(shù)據(jù)分段時,客戶設備50發(fā)送一個包括指示緊接著兩個接收的數(shù)據(jù)分段中后面一個之后的一個數(shù)據(jù)分段的序列號的確認。在接收到前一個數(shù)據(jù)分段之后過去了預定時間的情況下,客戶設備50向服務器設備10發(fā)送一個僅對應于一個數(shù)據(jù)分段的確認。
當服務器設備10接收到延遲確認時,CPU 100估計包括具有與該確認號相同的序列號的一個數(shù)據(jù)分段之前的兩個數(shù)據(jù)分段已經被客戶設備50收到。
在本實施例的以下說明中,確認號A代表包括在一個在已經重發(fā)一個數(shù)據(jù)分段之后接收的確認中的確認號;序列號B代表一個包括在一個在重發(fā)數(shù)據(jù)分段之后按順序第二個發(fā)送的數(shù)據(jù)分段中的序列號(即,當重發(fā)了包括序列號“500”的數(shù)據(jù)分段時,B=“1500”);序列號C代表已經發(fā)送的數(shù)據(jù)分段中的最大序列號。
根據(jù)本實施例的一般操作如下。即,當服務器設備10接收到包括確認號A的確認時,CPU 100首先確定A是否大于B或等于B。如果A大于B,那么CPU 100進一步確定A是否等于C。在A等于B,即,A=B的情況下,CPU 100估計較小的擁擠造成了重發(fā)超時,并且沒有數(shù)據(jù)分段丟失和沒有到達客戶設備50。然后,CPU 100用緊接著超時之前的時間點的snd_cwnd的存儲值更新用戶窗口大小snd_cwnd的值。從而,服務器設備10根據(jù)緊接著超時之前的時間點的傳輸率設置了分組通信的傳輸率。
在A大于B,即,A>B的情況下,估計發(fā)生了嚴重惡化,例如(a)丟失了數(shù)據(jù)分段或確認,或(b)到達順序顛倒。然后,CPU 100將擁擠窗口大小snd_cwnd更新到緊接著超時之前的時間點的snd_cwnd的存儲值的一半。從而,服務器設備10將分組通信的傳輸率設置到小于緊接著超時之前的時間點的傳輸率。
因此,服務器設備10控制了發(fā)送數(shù)據(jù)分段的傳輸率。
4-1.操作的第一實例圖12是表示根據(jù)本實施例的服務器設備10與客戶設備50之間的分組通信的操作的順序圖。圖13是表示服務器設備10中的分組通信的操作的流程圖。
在本實例中,最初把擁擠窗口大小設置到6MSS。如圖12中所示,服務器設備10向客戶設備50發(fā)送分別具有序列號“500”,“1000”,“1500”,“2000”,“2500”,和“3000”的數(shù)據(jù)分段。此后,將這些數(shù)據(jù)分段分別稱為“原始數(shù)據(jù)分段”S41-S46。在此,假設原始數(shù)據(jù)分段S41和S42在一些延遲之后被客戶設備50接收,原始數(shù)據(jù)分段S43-S46被客戶設備50正常接收。
當客戶設備50接收到原始數(shù)據(jù)分段S41和S42時,客戶設備50發(fā)送對應于這兩個數(shù)據(jù)分段的確認R42。確認R42包括確認號“1500”,這個確認號與包括在緊接著原始數(shù)據(jù)分段S42之后的數(shù)據(jù)分段中的序列號相同。在此,進一步假設由于服務器設備10在一些延遲之后接收到確認R42,所以服務器設備10檢測到重發(fā)超時。
現(xiàn)在參考圖13說明服務器設備10執(zhí)行的操作。
服務器設備10的CPU 100發(fā)送原始數(shù)據(jù)分段S41-S46。在這個時間點,擁擠窗口大小snd_cwnd和閾值sstresh的值分別是“6MSS”和“65535字節(jié)”。
當CPU 100檢測到原始數(shù)據(jù)分段S41的重發(fā)超時時,CPU 100估計原始數(shù)據(jù)分段S41已經丟失而沒有到達客戶設備50。然后,CPU 100重置定時器100a并且根據(jù)上述擁擠控制算法更新閾值sstresh和擁擠窗口大小snd_cwnd的值。在本實施例中,將sstresh更新到“3MSS”,這是snd_cwnd值的一半;并且用最小值,“1MSS”,更新snd_cwnd的值。把緊接著超時之前的時間點的sstresh的值“65535字節(jié)”和snd_cwnd值“6MSS”存儲在RAM 102中。
然后,CPU 100向客戶設備50重發(fā)(步驟C42)包括序列號“500”的數(shù)據(jù)分段(重發(fā)數(shù)據(jù)分段S’41)。
當CPU 100接收到(步驟C43)確認R42時,CPU 100根據(jù)確認號A,序列號B,和序列號C進行確定。在本示例中,A,B,和C分別是1500,1500,和3500。
首先,CPU 100確定A是否等于B,或A是否大于B。在本實例中,CPU 100確定A等于B。
結果是,它估計確認R42對應于原始數(shù)據(jù)分段S41和S42。即,它估計沒有數(shù)據(jù)分段丟失,并且客戶設備50已經接收到原始數(shù)據(jù)分段S41和S42。因此,CPU 100確定不需要服務器設備10降低傳輸率。在步驟C45,CPU 100將snd_cwnd和sstresh的值更新到存儲在RAM 102中的、緊接著超時之前的時間點的值。在本實施例中,將擁擠窗口大小snd_cwnd的值從“1MSS”更新到“6MSS”,并且也把閾值sstresh的值從3MSS更新到65535字節(jié)。因此,更新了分組通信的傳輸率,以便等于緊接著超時之間的時間點的傳輸率。接下來,CPU 100將snd_cwnd的值從6MSS增加到7MSS。在這個時間點,擁擠窗口大小是7MSS,已經發(fā)送的數(shù)據(jù)分段數(shù)是7,并且服務器設備10已經接收到對應于七個發(fā)送的數(shù)據(jù)分段中的三個數(shù)據(jù)分段的確認。下一次可以發(fā)送的數(shù)據(jù)分段數(shù)是3。這是由于服務器設備10還沒有接收到對應于剩下的四個數(shù)據(jù)分段的確認。
CPU 100向客戶設備50發(fā)送緊接著已經發(fā)送的數(shù)據(jù)分段S37之后的三個數(shù)據(jù)分段。在本實例中,CPU 100發(fā)送分別包括序列號3500,4000,和4500的三個數(shù)據(jù)分段(圖11中的原始數(shù)據(jù)分段S47和S48)。
在現(xiàn)有技術中,沒有將snd_cwnd和sstresh的值更新到緊接著超時之前的時間點的值。snd_cwnd和sstresh的值分別保持在1MSS和3MSS。盡管沒有發(fā)生數(shù)據(jù)丟失,下一個要發(fā)送的數(shù)據(jù)分段數(shù),即,窗口大小被設置到1MSS,這是最小值。相反,由于適當?shù)馗铝藄nd_cwnd和sstresh的值,因而不會將窗口大小設置到不合適的狹窄。
4-2.操作的第二實例圖14是表示根據(jù)本實施例的第二示例的服務器設備10與客戶設備50之間的分組通信的操作的順序圖。
在本實例中,擁擠窗口最初設置到6MSS。如圖14中所示,服務器設備10向客戶設備50發(fā)送分別具有序列號“500”,“1000”,“1500”,“2000”,“2500”,和“3000”的數(shù)據(jù)分段。此后,將這些數(shù)據(jù)分段分別稱為“原始數(shù)據(jù)分段”S51-S56。在此,假設原始數(shù)據(jù)分段S51和S55已經丟失并且沒有到達客戶設備50,并且客戶設備50接收到原始數(shù)據(jù)分段S52-S54和S56。
在此,假設客戶設備50首先接收原始數(shù)據(jù)分段S52,并且在客戶設備50接收到下一個數(shù)據(jù)分段之前已經過去了預定時間。在這種情況下,客戶設備50向服務器設備10發(fā)送僅對應于原始數(shù)據(jù)分段S52的確認R52。確認R53包括指示下一個要接收的數(shù)據(jù)分段的確認號“500”。
此后,客戶設備50接收原始數(shù)據(jù)分段S53和S54,并且向服務器設備10發(fā)送包括確認號“500”的確認R54。接下來,由于原始數(shù)據(jù)分段S55已經丟失并且沒有到達客戶設備50,客戶設備50在預定時間內僅接收到原始數(shù)據(jù)分段S56??蛻粼O備50向服務器設備10發(fā)送包括確認號“500”的確認R56。
在本實施例的第二實例中,進一步假設由于無線通信環(huán)境惡化,確認R52,R54,和R56已經丟失并且沒有到達服務器設備10。
現(xiàn)在參考圖13說明上述服務器設備10執(zhí)行的操作。
在步驟C41,服務器設備10的CPU 100檢測到重發(fā)超時。CPU 100將擁擠窗口大小snd_cwnd更新到“1MSS”,并且向客戶設備50重發(fā)(步驟C42)包括序列號“500”的數(shù)據(jù)分段(重發(fā)數(shù)據(jù)分段S’51)。CPU 100將緊接著超時時間點之前的snd_cwnd和sstresh的值,分別是“6MSS”和“65535字節(jié)”,存儲在RAM 102中。
再參考圖14,當客戶設備50接收到重發(fā)數(shù)據(jù)分段S’51時,客戶設備50發(fā)送包括一個指示下一個要接收的數(shù)據(jù)分段的確認號2500的確認R’51。
在步驟C44,CPU 100確定A是否大于B。如果A大于B,那么CPU 100在步驟C46進一步確定A是否等于C,或A是否等于B。在本實施例的這個實例中,A,B和C分別是2500,1500,和3500。因此,確定A大于B,并且A不等于C。
在這種情況下,估計在通信環(huán)境中發(fā)生了嚴重惡化,結果確定應當降低傳輸率。因此,CPU 100將擁擠窗口大小snd_cwnd的值更新(步驟C47)到小于存儲在RAM 102中的、緊接著超時之前時間點的值。在這個時間點,本實例中的擁擠窗口大小是3MSS,對應于確認的已經發(fā)送的,而沒有接收到的數(shù)據(jù)分段數(shù)是2,因此服務器設備10下一次可以發(fā)送的數(shù)據(jù)分段數(shù)是1。
然后,CPU 100重發(fā)包括序列號“2500”的數(shù)據(jù)分段(圖14中的重發(fā)數(shù)據(jù)分段S’55),這個序列號“2500”與包括在確認R’51中的確認號相同。
再參考圖14,當客戶設備50接收到重發(fā)數(shù)據(jù)分段S’55時,客戶設備50發(fā)送包括指示下一個接收的數(shù)據(jù)分段的確認號3500的確認R’55。
再參考圖13,當服務器設備10接收到包括確認號3500的確認R’55時,它估計客戶設備50已經接收到所有發(fā)送的數(shù)據(jù)分段S51-S56,這些數(shù)據(jù)分段的最大序列號是3000。結果,CPU 10確定下一個要發(fā)送的數(shù)據(jù)分段是包括序列號3500的數(shù)據(jù)分段。為了發(fā)送后續(xù)數(shù)據(jù)分段,CPU 100將擁擠窗口大小snd_cwnd的值更新到小于存儲在RAM 102中的、緊接著超時之前的時間點的值。例如,將snd_cwnd的值更新到存儲值的一半。在本實例中,將snd_cwnd的值從6MSS更新到3MSS。此外,CPU 100將sstresh的值從65535字節(jié)更新到32767字節(jié),這是存儲值的一半。
然后,CPU 100利用窗口大小3發(fā)送數(shù)據(jù)分段,即,CPU 100發(fā)送分別包括序列號“3500”,“4000”,和“4500”的三個數(shù)據(jù)分段(圖14中的原始數(shù)據(jù)分段S57,S58,和S59)。
如上所述,在通信環(huán)境嚴重惡化的情況下,由于將snd_cwnd和sstresh的值更新到低于在緊接著超時之前的時間點存儲的值,因而將傳輸率控制到適當?shù)膫鬏斅省?br>
4-3.操作的第三示例圖15是表示根據(jù)本實施例的第三實例的服務器設備10與客戶設備50之間的分組通信的操作的順序圖。
這個實例在下面的點與第二示例不同。即,當客戶設備50接收到包括序列號“500”的重發(fā)數(shù)據(jù)分段S’61時,客戶設備50向服務器設備10發(fā)送包括確認號“3500”的確認R’66。因此,作為在步驟C44和C46確定的結果,確定在通信環(huán)境中發(fā)生了嚴重惡化,與上述第二實例相同,結果確定應當降低傳輸率。
在本實例中,服務器設備10的CPU 100在數(shù)據(jù)分段S66之后,不重發(fā)數(shù)據(jù)分段,而是發(fā)送包括序列號“3500”的數(shù)據(jù)分段。為了發(fā)送這個數(shù)據(jù)分段,CPU 100將擁擠窗口大小snd_cwnd和閾值sstresh的值更新到低于存儲在RAM 102中的、緊接著超時之前的時間點的值。例如,將值更新到存儲值的一半。即,將snd_cwnd的值從“6MSS”更新到“3MSS”。然后,CPU100發(fā)送分別包括序列號“3500”,“4000”,和“4500”的三個數(shù)據(jù)分段(圖15中的原始數(shù)據(jù)分段S67,S68,和S69)。
在根據(jù)上述實施例的發(fā)明中,不需要把諸如時間標記選項之類的信息加到數(shù)據(jù)分段或確認中。此外,不需要對服務器設備10或客戶設備50進行實質性的系統(tǒng)改變。也可以使用現(xiàn)有的個人計算機或移動電話作為客戶設備50。因此,本發(fā)明給用戶提供了適當?shù)耐ㄐ刨M用。
5.改進本發(fā)明不限于上述實施例,熟悉本領域的人員知道可以有各種不同的改進,而不脫離實施例中提出的發(fā)明的精神和范圍。
在上述實施例中,盡管分組通信是參考TCP說明的,但是實施例中定義的發(fā)明并不限于在TCP下使用,并且可以將其它通信協(xié)議用于分組通信。
在上述實施例中,客戶設備50經過通信終端40與服務器設備10通信。通信系統(tǒng)的配置并不限于上述的配置,并且客戶設備50可以利用無線通信,因而可以不用通信終端40與服務器設備10通信。
根據(jù)快速恢復算法,在快速重發(fā)之后,服務器設備10可以發(fā)送在一個包括具有已經發(fā)送的數(shù)據(jù)分段中最大序列號的數(shù)據(jù)分段之后的數(shù)據(jù)分段。在這種情況下,當服務器設備10接收到一個包括緊跟隨在一個包括已經發(fā)送的數(shù)據(jù)分段中最大序列號的數(shù)據(jù)分段之后的確認號的確認時,服務器設備10更新?lián)頂D窗口大小snd_cwnd和閾值sstresh。
權利要求
1.一種通信設備,包括發(fā)送裝置,用于經過分組通信網將多個數(shù)據(jù)分段發(fā)送到目的地設備,多個數(shù)據(jù)分段中的每一個包括一個序列號,多個數(shù)據(jù)分段按照序列號順序發(fā)送;接收裝置,用于接收指示下一個要接收的數(shù)據(jù)分段的確認;重發(fā)裝置,用于改變傳輸率,和用于在發(fā)送裝置發(fā)送了多個數(shù)據(jù)分段中的一個之后過去了預定的時間時,通信設備沒有接收到包括大于包括在多個數(shù)據(jù)分段中這個數(shù)據(jù)分段中的序列號的確認號的確認的情況下,重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段;和控制裝置,用于確定下一個要發(fā)送的后續(xù)數(shù)據(jù)分段,并且用于根據(jù)確認的種類和包括在確認中的信息控制傳輸率,以發(fā)送后續(xù)的數(shù)據(jù)分段。
2.根據(jù)權利要求1所述的通信設備,其中重發(fā)裝置在重發(fā)了多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段之后,當接收裝置在接收到預定數(shù)量的全都包括相同的確認號的確認時,重發(fā)裝置再次重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段;和在接收裝置接收到一個包括緊接著包括在已經被發(fā)送的數(shù)據(jù)分段中最大序列號之后的確認號的確認的情況下,控制裝置根據(jù)緊接著預定時間過去之前的時間點的傳輸率更新傳輸率。
3.根據(jù)權利要求1所述的通信設備,其中在已經重發(fā)了多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段之后,當接收裝置接收到預定數(shù)量的全都包括相同確認號的選擇的確認時,重發(fā)裝置再次重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段,選擇的確認進一步包括用于識別接收的數(shù)據(jù)分段的選擇確認信息,多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段是由選擇的確認信息識別的;和在接收裝置接收到一個包括緊接著包括在已經發(fā)送的數(shù)據(jù)分段中的最大序列號之后的確認號的確認的情況下,控制裝置根據(jù)緊接著預定時間過去之前的時間點的傳輸率更新傳輸率。
4.根據(jù)權利要求1所述的通信設備,其中在接收裝置接收到包括一個等于一個序列號的確認號的確認的情況下,控制裝置根據(jù)緊接著預定時間過去之前的時間點的傳輸率更新傳輸率,所述序列號是一個大于包括在重發(fā)裝置重發(fā)的多個數(shù)據(jù)分段中一個數(shù)據(jù)分段中的序列號的預定號碼。
5.根據(jù)權利要求1所述的通信設備,其中在接收裝置接收到包括一個大于一個序列號的確認號的確認的情況下,重發(fā)裝置再次重發(fā)多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段,所述序列號是一個大于包括在重發(fā)裝置重發(fā)的多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段中的序列號的預定號碼;和在接收裝置接收到包括一個緊接在一個包括在已經發(fā)送的數(shù)據(jù)分段中的最大序列號之后的確認號的確認的情況下,控制裝置將傳輸率更新到小于緊接著預定時間過去之前的時間點的傳輸率。
6.根據(jù)權利要求1所述的通信設備,其中在接收裝置接收到包括一個等于一個序列號的確認號的確認的情況下,控制裝置將傳輸率更新到小于緊接著預定時間過去之前的時間點的傳輸率,所述序列號是一個大于包括在重發(fā)裝置重發(fā)的多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段中的序列號的預定號碼。
7.一種傳輸控制方法,包括步驟經過分組通信網向目的地設備發(fā)送多個數(shù)據(jù)分段,多個數(shù)據(jù)分段中的每一個數(shù)據(jù)分段包括一個序列號,多個數(shù)據(jù)分段被按序列號順序發(fā)送;接收指示下一個要接收的數(shù)據(jù)分段的確認;當在發(fā)送步驟中發(fā)送了多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段之后過去了預定時間時,通信設備沒有接收到包括一個大于一個包括在多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段中的序列號的確認號的確認的情況下,改變傳輸率,并且重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段;確定下一個要發(fā)送的后續(xù)數(shù)據(jù)分段;和根據(jù)確認的種類和包括在確認中的信息來控制傳輸率,以發(fā)送后續(xù)數(shù)據(jù)分段。
8.一種使計算機執(zhí)行以下過程的程序產品,所述過程包括經過分組通信網向目的地設備發(fā)送多個數(shù)據(jù)分段的過程,多個數(shù)據(jù)分段中的每一個數(shù)據(jù)分段包括一個序列號,多個數(shù)據(jù)分段被按序列號順序發(fā)送;接收指示下一個要接收的數(shù)據(jù)分段的確認的過程;當在發(fā)送步驟中發(fā)送了多個數(shù)據(jù)分段中的一個數(shù)據(jù)分段之后過去了預定的時間時,通信設備沒有接收到包括一個大于一個包括在多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段中的序列號的確認號的確認的情況下,改變傳輸率并且重發(fā)多個數(shù)據(jù)分段中的這個數(shù)據(jù)分段的過程;確定下一個要發(fā)送的后續(xù)數(shù)據(jù)分段,和根據(jù)確認的種類和包括在確認中的信息控制傳輸率以發(fā)送后續(xù)數(shù)據(jù)分段的過程。
全文摘要
本發(fā)明提供了一種通信設備,包括用于經過分組通信網發(fā)送多個數(shù)據(jù)分段的發(fā)送裝置,每個數(shù)據(jù)分段包括一個序列號,數(shù)據(jù)分段是以序列號順序發(fā)送的;用于接收指示目的地設備請求通信設備下一個發(fā)送的數(shù)據(jù)分段的確認的接收裝置;用于在當原始數(shù)據(jù)分段發(fā)送之后過去了預定的時間時,通信設備沒有接收到包括一個大于一個包括在重發(fā)數(shù)據(jù)分段中的序列號的確認號的確認的情況下,改變傳輸率并且重發(fā)這個數(shù)據(jù)分段的重發(fā)裝置;用于確定下一個要發(fā)送的后續(xù)數(shù)據(jù)分段,和用于根據(jù)確認的種類以及包括在確認中的信息控制傳輸率的控制裝置。
文檔編號H04L1/16GK1533083SQ20041003178
公開日2004年9月29日 申請日期2004年3月25日 優(yōu)先權日2003年3月25日
發(fā)明者三宅基治, 稻村浩, 高橋修 申請人:株式會社Ntt都科摩