專利名稱:用于網絡通信的知道時間的最大努力的填孔再試方法和系統的制作方法
技術領域:
本發明主要涉及網絡通信技術。
背景技術:
在電子通信的領域中,至少有某種程度的假設的不可靠性,許多通信系統具有一種機制,用于確定是否成功地接收特定的通信或者通信是否以某種方式失敗或者兩者。
例如采用TCP。這是傳輸控制協議(Transmission Control Protocol)的簡略。它是TCP/IP網絡中的主要協議之一。然而,IP協議只處理數據包,TCP使兩個主機能夠建立連接和交換數據流。
總而言之,TCP保證數據的傳送,以及還保證將以數據被發送的相同順序傳送數據。要完成那個,TCP使用基于確認的再試過程來檢測和再試失敗的通信。
在TCP中,主機發送一群(即窗口)數據包至通信網絡上的接收器。群可被稱為“窗口(window)”。TCP窗口是,在發送器從接收器取得返回的ACK之前,即接收器已經取得它的一些數據之前,允許發送器在特定的連接上未完成的(即接受者未確認的)數據的數量。
ACK是確認碼(acknowledgement code)的簡略。它一般是一個傳輸控制指示符,表示接收到未破壞的或者沒有錯誤的被傳輸的消息,或者表示接收站準備好接受更多的傳輸。接收器發送代碼至發送器,表示已經接受了傳輸。
在主機發送了包的窗口,它等待來自那個接收器的、表示成功接收到窗口的所有或某些包的ACK。如果它未能在規定的再試時間段內接收到ACK,則主機再發窗口的所有包。因此,如果發送器沒有接收到ACK,它假設接收器自從上次發送器從接收器取得ACK起,沒有接收到任何數據。
由主機接收的ACK可表示成功接收窗口的上一次連續的包。如果這樣,主機再發在窗口中的在由ACK指定為成功接收的包之后的所有包。
常規的再試方法常規的再試方法一般再發大群的數據-可能甚至相當于整個窗口的包--當檢測到通信失敗時。而且,這些常規的方法一般是基于ACK的。此外,這些常規的方法一般不考慮任何接收數據的時間臨界性質。這樣一個常規方法的例子是上面討論的TCP再試方法。
那些本領域普通技術人員通常熟悉常規的再試方法,尤其是TCP的再試方法。
概述本發明主要涉及網絡通信技術。在此所述的實現,在通信網絡上執行一個知道時間的、最大努力的、填孔的通信再試功能。除非接收器不同地表示,則假設成功的接收數據,以這種方式來完成這個功能。該表示明確地識別丟失數據。有了這個表示,發送器只再發送明確識別的丟失數據。
這個概述本身不是想要限制本發明的范圍。此外,本發明的標題不是想要限制本發明的范圍。為了更好地理解本發明,請結合附圖看下面詳細的描述和所附的權利要求書。在所附的權利要求書中指出本發明的范圍。
在全部附圖中,使用相同的數字引用同樣的元件和特征。
圖1是例示按照在此所述的實現的典型網絡和通信狀態的快照的圖。
圖2是流程圖,示出在此所述的方法實現。
圖3是流程圖,示出在此所述的方法實現。
圖4例示可使用在此所述的實現的示例性環境。
圖5例示實例顯示設備,電視,以及與顯示設備交互的各種輸入設備。
圖6是能夠(完整地或部分地)實現在此所述的至少一個實施例的計算機操作環境。
詳細說明在下面的描述中,為了說明,闡述特定的數字、材料和配置,以便提供本發明的完整理解。不過,對于本領域中一個熟練的技術人員這是顯而易見的,即可在沒有特定的示例性細節的情況下實施本發明。在其它實例中,省略或簡化眾所周知的特征以闡明本發明的示例性實現的描述,并且因此更好地說明本發明。而且,為了易于理解,將某些方法步驟描繪成獨立的步驟;不過,這些獨立地描述的步驟不應被解釋為它們的性能必須依賴于順序。
下面的描述闡述用于網絡通信的知道時間的最大努力的填孔的再試方法和系統的一個或多個示例性實現,所述網絡通信包括在所附權利要求書中所述的要素。以特征描述這些實現,以便滿足法定的書面描述、允許和最佳模式要求。不過,描述本身不是想要限制本發明的范圍。
發明者想要使這些示例性實現作為實例。發明人不想使這些示例性實現限制所要求的本發明的范圍;而是,發明人已經預期,可能結合其它現在或將來的技術以其它方法實施和實現所要求的本發明。
用于網絡通信的知道時間的最大努力的填孔再試方法和系統的實施例的例子,可稱為“示例性填孔再試方法”。
導言在此所述的所要求的本發明的一個或多個示例性實現,可由圖4和5的顯示設備408、圖6的計算機602、和/或作為與在圖4-6中所示的相似的計算環境來實現。
常規的再試方法一般在響應通信失敗時再發大群的數據。一般地,這些常規的方法基于ACK并且不考慮任何接收數據的時間臨界性質。
這種常規的再試方法在將大量數據單向地涌入通過網絡的情況下效率很差,例如,在時間敏感的流多媒體數據應用中。常規的方法效率差,因為頻繁地使用從接收器到發送器的ACK包,并且因為當只有部分再發送的數據丟失時(而不是僅當所有再發數據丟失時),它們傾向于在再試期間再發送大塊數據。
有了常規的基于ACK的方法,通常在選擇窗口大小時存在涉及的權衡。在沒有錯誤時,大的窗口大小允許通過高等待延遲連接以高帶寬發送許多數據。小的窗口大小在減少了不必要地再發送的數據量。
一般地,這個權衡產生具有長超時的情況(例如,發送器等待ACK)。如果從發送器到接收器的等待延遲與位速率相比較長,這些常規的基于ACK的方法隨著包丟失增加變得更無效率。
示例性填孔再試方法克服這些常規的再試方法的缺點。它增加通信的效率--尤其對于大量數據單向地涌過網絡的情況。諸如具有流多媒體數據的情況。
示例性填孔再試方法在通信網絡上執行知道時間的、最大努力的填孔通信再試功能。使用基于NACK的方法,發送器只再發接收器識別為還沒有接收到的數據至接收器。
最大努力是因為不保證接收器將取得數據。但示例性填孔再試方法不保證接收器將或者取得所有數據包或者知道它沒有取得所有數據包。
而且,示例填孔再試方法具有放棄獲得丟失數據的嘗試的能力,在那個數據因為太久而變得不相干的時候。不象常規的方法,示例性填孔再試方法可越過通信網絡(例如因特網)維持有效的、非突發的高吞吐量連接,甚至在存在與數據速率相比高的等待延遲以及顯著的包丟失的情況下。
示例性填孔再試方法圖1例示典型通信網絡,具有主機110(在此即發送器)、通信網絡基礎設施130(諸如因特網)和客戶設備140(在此即接收器)。
示例性填孔再試方法基于序列號再試。序列號是對于每個發送的包按一遞增的數字。示例性填孔再試方法利用UDP而不是TCP,它可以或者是單播或者是多播。
群120代表發送器110越過網絡130發送的包的群的例子。它可具有幫助識別特殊的群的偏移量122。每個包是單獨和順序地編號的。在本例中,將它們編號為1-13。
發送器110發送這個包的窗口至接收器140,一次一個包。群150代表接收器140可能在與發送器通信期間的一個時間片內已經接收的內容的例子。
在接收器140接收已編號的包時,它按照它們的順序編號緩沖它們。它們可能不按順序或者沒有全部到達,但在它們到達時,接收器將它們放在接收群150中它們適當的位置中。一種建立適當位置的方法是規定所有包具有不變的大小。這是一種可檢測到孔并且容易確定其邊界的方法。可使用其它方法定義孔的邊界。
當接收器140接收具有不按順序的序列號的包時,它意味著接收器已經丟失介于其間編號的包。這些丟失的包或包的集聚(grouping)被稱為“孔(hole)”。孔的邊界是由接收的圍繞孔的包的存在定義的。
實例的接收群150具有三個孔。孔152代表丟失包#5、6和7。孔154代表丟失的包#10。孔156表示丟失的包#12。
當接收器檢測到一個新孔時,它將孔添加到活動孔的表。表中的每個表項具有規定的再試時間-這是一個可配置的參數。
由于UDP不保證順序,包可能不按順序到達。丟失的包可能還在到接收器的運輸中。那是由在運輸中的包124例示的-這是丟失的包#12。
因此,令人想要的是在報告孔之前等待一會兒。那一會兒時間可稱為拖延(HO)期。因此,HO期避免了在丟失的包有可能在到接收器的路上時,接收器請求再發送丟失的包的問題。因此,再試時間最初被設置為所規定的“拖延”期。
如果再試時間期滿并且孔仍在,則接收器140發送“孔報告”UDP包至發送器110,通知發送器關于一個或多個孔。這個報告實際上是丟失包的否定確認(negative-acknowledgement)(NACK)。
因為孔報告可能到達發送器,或者可能到不了發送器,再試定時器一般被重置為再報告值(RR),它是直到進行再報告為止的一段時間。RR的值可以是一個可定制的參數,但一般是一個比所觀測到的網絡的來回程延遲稍微長一些的值。RR期被設計為給出用于發送器接收報告、響應以及用于接收器接收那個響應的時間。
再報告值一般比拖延值大,因為再報告值大約是網絡的來回程等待延遲,而拖延時間一般是網絡的單向等待延遲的某一分數。
在收到孔報告時,發送器110再發送由包含在孔報告中的序列號范圍表示的UDP包。如果接收器140暫時沒有接收到響應-例如,當再試請求或者再試請求的響應丟失了-接收器在再試定時器期滿時再次發送對丟失包的再試請求。
任何時候一個包到達,它部分地填入一個孔,這個孔的剩余部分(或者作為結果得到的孔的兩個剩余部分)的再試定時器被設置成拖延期。
在此所述的用于通過IP的流多媒體應用的實現具有下列特性·每個包是相同大小的。
·所保證的傳送信道具有在正在進行的基礎上通過它正在發送的數據·它在UDP的頂部運行。
這些是一個特殊實現的特性。然而,其它實現可能具有其它特性。例如,其它實現可能在其它數據報傳送協議而不是UDP上運行。
活動孔表當接收器140檢測到一個新孔,它將這個孔添加到活動孔的表。表中每個表項具有動態計算的再試時間(RT)。這個表存儲在接收器的存儲器中。
由于包可能不按順序到達,令人想要的是在報告孔之前等待一會兒。因此,最初將再試時間設置成所規定的拖延(HO)期以避免,當丟失包可能還在到接收器的運輸中時接收器就請求再發送那個丟失包的問題。
再報告時間(RR)和初始的“拖延”(HO)期是動態可調整的,基于許多因素諸如網絡的觀測到的行為。
拖延期一般設置成一個值,它包含當包處于錯誤的順序中時在包之間觀測到的延遲的大的百分比。換句話說,如果A、B是包,以這個順序不必相鄰,并且觀測到它們以B、A到達(可能有介于其間的包),延遲A-B是由拖延期一般包含的值。不過,A-B延遲應該只在還沒有NACK(否定確認)A的時候觀測到的,因為否則A在B之后可能是再試的結果。
可供替換地,HO期可設置成通過網絡的最大單向等待延遲減去通過網絡的的最小單向等待延遲加上有些小調整(例如增量)。
由于孔報告可能到達發送器或者可能不到達發送器,接收器等待一個短時間(例如RR值)用于發送器在再發送報告之前響應。
下面是接收器140可能產生的“活動孔表”的例子。它列出用于活動孔的表項(基于圖1的接收群150),它們的當前再試時間以及它們的期滿時間。
示例活動孔表在上表中的時間值是以毫秒為單位,并且只作為說明性例子提供的。典型的拖延(HO)期可大約是10ms的數量級,以及典型的再報告(RR)期可大約是100ms的數量級。
而且,在這個表中列出的時間相對于當前時間并且已經完成,因此只是用于說明的目的。在現實中,一個實現可能規定絕對的時間值(而不是相對的)。
下面列出一些條件,在這些條件下,當使用示例性填孔再試方法時,用于進入活動孔表的表項的RT是動態計算或重新計算的·當產生在孔表中的表項時,初始RT設置成now(現在)+HO·當發送用于一個特殊孔的報告時,RT重新設置成now(現在)+RR。
·當一個包部分地填充或拆分一個孔時,那么用于作為結果而發生的孔(或多個孔)的RT設置成now(現在)+HO。
用示例性填孔再試方法,基于RT保持在表中的表項的順序。那樣最近要再試的表項總是第一個。
拆分孔當接收器140接收了只部分地填充一個孔的包時,那個孔可能被拆分或者縮小。例如,如果圖1的接收群150的丟失包#5到達接收器140,則縮小孔#152。孔152的新的范圍是包6-7。如果,例如,接收群150的丟失包#6到達,則孔152實際上被拆分成兩個孔其中一個是包#5,一個是包#7。
如果新到達的包填充孔的中間,則它實現上將這個孔拆分成兩個孔。這兩個新的孔取得now(現在)+HO的再試時間(RT),因為HO正好足以通常保持從被生成起的一個孔報告,由于按順序發送的UDP包的正常重新排序,以及按順序發送填充孔的包,因為整個孔最初被報告為單個孔。
期滿時間每個包具有一個期滿時間標記(ETS)。由于在包中的數據是時間敏感的,所以存在一個其數據是不相干的時間。那意味著存在一個時間,它不再關心接收器是否實際上接收到這個包的時間。那個時間是它的期滿時間。
關聯于活動孔表中每個表項的期滿時間是定義關聯的孔的結束邊界的包的ETS。例如,圖1的接收群150的包#11的ETS是輸入到活動孔表中孔154的值(用于丟失包#10)。
如果活動孔表中一個表項的RT>ETS,那么認為這個丟失包是不相干的。象這樣,接收器140將不再嘗試獲得那些丟失包以填充那個孔。從表中移除那個表項并且標記流中的不連續。
在傳輸中暫停在某些條件下,對于接收器有可能未能識別出傳輸中一個短暫暫停之前剛發生的孔。由于后面的包還沒有到達接收器(因為它們還沒有被發送),接收器沒有識別出孔的存在。一個包未能到達,但接收器還不知道這個。因此,接收器一定要直到全部傳輸重新開始才識別出孔的存在。
不過,通過發送臨時的狀態包,尤其是在傳輸中存在一個暫停時,可能減輕這種情況。狀態包通知接收器直接在前的包應該是什么和/或下一個包將是什么。假設存在一個孔,接收器現在可識別它并且相應地行動。
在接收器處示例性填孔再試方法的操作圖2示出示例性填孔再試方法的方法實現。這個方法實現可以用軟件、硬件或它們的組合來執行。
在圖2的210,圖1的接收器140接收一群包的一系列編號的包。
在212,它將數據包的一個集合(諸如圖1的群150)接收到接收緩沖器中。它按編號包的編號放置每個包。它使用偏移量(諸如定義的恒定的包大小)確定每個包放在緩沖器中的位置。在完成這個的同時,它留下丟失的編號包的孔。例如,圖1的孔152是用于丟失包#5,6和7的。
在214,接收器將新的表項填入活動孔表。它輸入每個新的孔作為一個新的表項到表中。對于每個新的表項,它為新的表項計算和輸入初始的再試時間(RT)為現在+拖延(HO)期。對于每個新的表項,接收器還為在那個表項的孔的之后和邊界處所接收的包輸入期滿時間標記(ETS)。
在216,當當前時間匹配表中一個表項的RT時,接收器140產生和發送一個“孔報告”包至發送器110,通知發送器關于一個或多個孔。
在218,在發送孔報告之后,接收器更新被報告的表項的RT。它將RT重新設置成現在+再報告(RR)期。
在220,當一個給定表項的RT>ETS時,那么它從表中移除那個表項并且標記流中的不連續。這意味著一個孔已經期滿,以及它從表中移除意味著接收器將不再嘗試取回它。
在222,當它接收一個丟失包時,它填充孔(或者部分地或者全部地)。如果丟失包完全填充這個孔,那么移除表中它的相應表項。如果丟失包只部分地填充它,那么它重新調整孔的大小。如果丟失包將孔拆分成兩個孔,那么它重新調整一個孔的大小,以及為新產生的孔產生新的表項,對于較小的原來的孔和新產生的孔,兩者都具有現在+HO的RT。
這個過程隨著收到接收群的包而繼續。
在接收器處示例性填孔再試方法的操作圖3示出示例性填孔再試方法的方法實現。這個方法實現可以用軟件、硬件或它們的組合來執行。
在圖3的310,圖1的發送器110將順序列舉的包發送至接收器140,并且它將這些包存儲在歷史緩沖器中。發送器保持這個歷史緩沖器,因此它能當請求再發送包時再發送這些包。而且,發送器給每個包分配一個ETS。
在312,發送器從接收器接收識別哪個包未收到的“孔報告”。
在314,在響應那個報告時,發送器從它的歷史緩沖器取回所識別的包,并且再次將它們發送至接收器。如果發送器得到再發送一個不再在歷史緩沖器中的包的請求,它忽略這個請求。
示例性環境圖4例示示例性環境400,其中可(部分地或全部地)實現在此所述的技術、系統和其它方面。示例性環境400是一個促進多媒體分發的電視娛樂系統。典型的數字視頻廣播(DVB)網絡是這樣一個環境的例子。
環境400包括一個或多個多媒體內容供應者402,一內容分發系統406,以及一個或多個呈現設備408(1),408(2),...,408(N),它們通過廣播網絡410耦合到內容分發系統406。
多媒體內容供應者402包括內容服務器412和存儲的內容414,諸如電影、電視節目、商業廣告節目、音樂和類似的音頻和/或視頻內容。內容服務器412控制存儲的內容414從內容供應者402到內容分發系統406的分發。另外,內容服務器402控制實況轉播內容(例如,不是預先存儲的內容,諸如實況轉播供給)和/或存儲在內容分發系統406之外的其它位置的內容的分發。
內容分發系統406可耦合到網絡420,諸如企業內部互聯網或因特網。內容分發系統406包括廣播發射器428,以及一個或多個內容處理器430。廣播發射器428通過廣播網絡廣播信號,諸如有線電視信號。
內容分發系統406是頭端(headend)服務的代表,它提供多媒體內容至多個訂戶。
廣播網絡410能包括有線電視網絡、RF、微波、衛星和/或數據網絡諸如因特網,以及還可包括使用任何廣播格式和廣播協議的有線的或無線的介質。另外,廣播網絡410可以是任何類型的網絡,使用任何類型的網絡拓撲以及任何網絡通信協議,以及可以表示或者以另外方式實現為兩個或多個網絡的組合。
內容處理器430在通過廣播網絡408發射內容之前,處理從內容供應者402接收的內容。特定的內容處理器430可編碼或者以另外的方式處理所接收的內容成為一種格式,耦合到廣播網絡410的多個呈現設備408(1),408(2),...,408(N)理解所述格式。
呈現設備408能以許多方法實現。例如,呈現設備408(1)通過衛星天線434從基于衛星的發射器接收廣播內容。呈現設備408(1)也稱為機頂盒或衛星接收設備。呈現設備408(1)耦合到電視436(1),用于呈現由呈現設備接收到的內容(例如音頻數據和視頻數據),以及呈現圖形用戶接口。特殊的呈現設備408能耦合至任何數量的電視436和/或能實現以顯示或者再現內容的相似設備。同樣,任何數量的呈現設備408能耦合至單個電視436。
還耦合呈現設備408(2)以從廣播網絡410接收廣播內容,并且提供內容至關聯的電視436(2)。呈現設備408(N)是組合電視和集成的機頂盒440的例子。在本例中,機頂盒的各種組件和功能被結合到電視中,而不是使用兩個分開的設備。結合在電視中的機頂盒可通過衛星天線(與衛星天線434相似)和/或廣播網絡410接收廣播信號。在可替換的實現中,呈現設備406可通過因特網或任何其它廣播介質接收廣播信號。
示例性環境400還包括存儲的點播內容442,諸如視頻點播(VOD)電影內容。存儲的點播內容能用呈現設備408例如通過在屏幕上的電影向導來觀看,以及觀眾能輸入指令以使一個特定的電影,或者其它存儲的內容,向下流到相應的呈現設備408。
至此,已經按照數字視頻廣播(DVB)環境描述了這個示例性環境400。確實,那是一個示例性環境。不過,在沒有完整的DVB環境本身的情況下,可實現示例性填孔再試方法。代之以,可由獨立的呈現設備,諸如由設備408(1),408(2),...,408(N)例示的,來實現它。
獨立的呈現設備408(1),408(2),...,408(N)從存儲介質444諸如DVD盤訪問數字視頻。它提供來自介質的內容至關聯的電視439。這樣一個獨立的呈現設備的例子包括DVD播放器、個人錄像機等。
示例性呈現設備圖5例示被示為連接至電視436的獨立設備的呈現設備408的示例性實現500。呈現設備408可以在任何數量的實施例中實現,包括作為機頂盒、衛星接收器、具有硬盤的TV錄像機、游戲控制臺、信息電器、DVD播放器、個人錄像機、個人計算機、媒體中心等等。
呈現設備408包括一無線接收端口502,諸如紅外線(IR)或藍牙無線端口,用于從遙控設備504接收無線通信,一手持輸入設備506,或者任何其它無線設備,諸如無線鍵盤。手持輸入設備506可以是個人數字助理(PDA)、手持計算機、無線電話等等。另外,耦合無線鍵盤508以與呈現設備408通信。在可替換的實施例中,遙控設備504、手持設備506和/或鍵盤508可使用RF通信鏈路或其它傳輸方式以與呈現設備408通信。
呈現設備408可具有存儲介質閱讀器509,用于閱讀內容存儲介質諸如DVD盤。獨立的或非獨立的呈現設備408可包括存儲介質閱讀器509。
呈現設備408可從一個或多個廣播源接收一個或多個廣播信號510,諸如從衛星或者從廣播網絡。呈現設備408包括硬件和/或軟件用于接收和解碼廣播信號510,諸如NTSC、PAL、SECAM或其它TV系統視頻信號。
呈現設備408還包括硬件和/或軟件用于為用戶提供圖形用戶接口,通過圖形用戶接口,用戶能例如訪問各種網絡服務,配置呈現設備408以及執行其它功能。
呈現設備408可能能夠通過一個或多個連接,包括常規的電話鏈路512、ISDN鏈路514、電纜鏈路518、DSL鏈路520等等,與其它設備通信。呈現設備408可使用任何一個或多個各種通信鏈路512-520在特定的時刻與任何數量的其它設備通信。
呈現設備408產生視頻信號520和音頻信號522,兩者都被傳送到電視436。視頻信號和音頻信號可以從呈現設備408傳送到電視436,通過RF(無線電頻率)鏈路、S-視頻鏈路、復合視頻鏈路、分量視頻鏈路或其它通信鏈路。
盡管在圖5中未示出,但呈現設備408可包括一個或多個指示燈或其它指示器識別設備的當前狀態。另外,本設備可包括一個或多個控制按鈕、開關或其它可選擇的控制用于控制設備的操作。
示例性計算系統和環境圖6例示適合的計算環境600的例子,在其中可實現(或者全部地或者部分地)如在此所述的示例性填孔再試方法。可在此所述的計算機和網絡結構中利用計算環境600。
示例性計算環境600只是計算環境的一個例子,并且不是想要建議對任何關于計算機和網絡結構的使用范圍和功能的限制。也不應將計算環境600解釋為對于在示例性計算環境600中例示的任何一個組件或其組合具有任何依賴性和要求。
可用眾多的其它通用或專用計算系統環境或配置實現示例性填孔再試方法。可適用的眾所周知的計算系統、環境和配置的例子包括,但不限于,個人計算機、服務器計算機、瘦客戶機、胖客戶機、手持或膝上型設備、多處理器系統、基于微處理器的系統、機頂盒、可編程消費電子產品、網絡PC、小型機、大型計算機、包括任何上述系統或設備的分布式計算系統等等。
可在由計算機執行的計算機可執行指令諸如程序模塊的一般環境中描述示例性填孔再試方法。通常,程序模塊包括執行特殊任務或實現特殊抽象數據類型的例程、程序、對象、組件、數據結構等。示例性填孔再試方法也可在分布式計算環境中實施,在分布式計算機環境中通過通信網絡鏈路的遠程處理設備執行任務。在分布式計算機環境中,程序模塊可位于本地和遠程兩者包括存儲器設備在內的計算機存儲介質中。
計算環境600包括計算機602形式的通用計算設備。計算機602的組件可包括,但不限于,一個或多個處理器或處理單元604,系統存儲器606,以及將包括處理器604在內的各種系統組件耦合到系統存儲器606的系統總線608。
系統總線可實現為任何幾種類型的總線結構的一種或多種,包括存儲器總線或存儲控制器、外圍設備總線、加速圖形接口或使用各種總線結構中任意一種的本地總線。作為例子,這樣的結構可以插件卡總線(Card Bus)、個人計算機存儲卡國際協會(PCMCIA)、加速圖形端口(AGP)、小型計算機系統接口(SCSI)、通用串行總線(USB)、IEEE 1394、視頻電子標準協會(VESA)本地總線以及也稱為夾層總線的外設組件互連(PCI)總線。
計算機602一般包括各種各樣的計算機可讀介質。這樣的介質可以是任何可由計算機110訪問的可用介質,并包括易失性和非易失性介質、可移動和不可移動介質兩者。
系統存儲器606包括以易失性和/或非易失性的存儲器形式的計算機存儲介質,諸如只讀存儲器(ROM)610和隨機存取存儲器(RAM)612。基本輸入/輸出系統614(BIOS),包含幫助計算機602內組件之間傳送信息的基本例程,諸如在起動期間,它一般被存儲在ROM 612中。RAM 610一般包含可由處理單元604直接訪問和/或目前操作的數據和/或程序模塊。
計算機602還可包括其它可移動的/不可移動的、易失性/非易失性計算機存儲介質。作為例子,圖6示出用于讀寫不可移動的、非易失性磁介質(未示出)的硬盤驅動器616,用于讀寫可移動的、非易失性的磁盤620(例如“軟盤”)的磁盤驅動器618,以及用于讀和/或寫可移動的、非易失性光盤624諸如CD-ROM、DVD-ROM或其它光介質的光盤驅動器622。硬盤驅動器616、磁盤驅動器618和光盤驅動器622各自通過一個或多個數據媒體接口626耦合到系統總線608。可供替換地,硬盤驅動器616、磁盤驅動器618和光盤驅動器622可通過一個或多個接口(未示出)耦合到系統總線608。
磁盤驅動器及其關聯的計算機可讀介質為計算機602提供計算機可讀指令、數據結構、程序模塊和其它數據的非易失性存儲。盡管本例例示了硬盤616、可移動磁盤620和可移動光盤624,但要意識到,存儲計算機可訪問數據的其它類型的計算機可讀介質,諸如磁帶盒或其它磁存儲設備、閃存卡、CD-ROM、數字通用盤(DVD)或其它光存儲器、隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除的可編程只讀存儲器(EEPROM)等等,也可用于實現示例性計算系統和環境。
任何數量的程序模塊可存儲在硬盤616、磁盤620、光盤624、ROM 612和/或RAM 610上,包括作為例子,操作系統626、一個或多個應用程序628、其它程序模塊630和程序數據632。
用戶可通過輸入設備,諸如鍵盤634、指點設備636(例如“鼠標”),將命令和信息輸入到計算機602中。其它輸入設備638(未明確示出)可包括話筒、操縱桿、游戲墊、衛星天線、串行口、掃描儀等等。這些和其它輸入設備常常通過耦合到系統總線的用戶輸入/輸出接口640耦合至處理單元604,但是也可以通過其它接口和總線結構連接,諸如并行端口、游戲端口或通用串行總線(USB)。
監視器642或其它類型的顯示設備也通過一個接口諸如視頻接口644連接至系統總線608。除監視器642之外,計算機還可包括其它外部輸出設備諸如揚聲器(未示出)和打印機646,它們可通過輸入/輸出接口640連接。
計算機602可在一個使用邏輯連接至一或多個遠程計算機諸如遠程計算機648的網絡化環境中運行。遠程計算機648可以是個人計算機、便攜式計算機、服務器、路由器、網絡計算機、對等設備或其它普通網絡節點等等。遠程計算設備648例示為可包括在此相對于計算機602所述的許多或全部元件和特征的便攜式計算機。
在計算機602與遠程計算機648之間的邏輯連接被示為局域網(LAN)650和一般廣域網(WAN)652。這樣的網絡環境在辦公室、企業級計算機網絡、內部互聯網和因特網是很普通的。
當在LAN網絡環境中實現時,計算機602通過網絡接口或適配器654耦合到局域網650。當在WAN網絡環境中實現時,計算機602一般包括調制解調器656或其它裝置,用于在廣闊的因特網上建立通信。調制解調器656,可以是內置的或者外置的,可通過輸入/輸出接口640或其它適當的機制耦合到系統總線608。要意識到,所例示的網絡連接是示例性的,并且可使用用于在計算機602與648之間建立通信的其它裝置。
在網絡化環境中,諸如由計算環境600所例示的環境,相對于計算機602所述的程序模塊或者其部分,可存儲在遠程存儲器設備中。作為例子,遠程應用程序658駐留在遠程計算機648的存儲器設備上。為了說明,應用程序和其它可執行程序組件,諸如操作系統,在此被示為離散的塊,盡管認識到這樣的程序和組件在不同的時間駐留在計算設備602的不同存儲組件中,以及是由計算機的數據處理器執行的。
計算機可執行指令示例性填孔再試方法的實現可在由一個或多個組件或其它設備執行的計算機可執行指令諸如程序模塊的一般環境中描述。通常,程序模塊包括執行特殊任務或實現特殊抽象數據類型的例程、程序、對象、組件、數據結構等。一般地,程序模塊的功能可在需要時組合或分布在各種實施例中。
示例性操作環境圖6例示適合的操作環境600的例子,在其中可實現示例性填孔再試方法。具體地說,在此所述的示例性填孔再試方法可由圖6中任何程序模塊628-630和/或操作系統626或其部分來實現。
操作環境只是適合的操作環境的一個例子,并且不是想要建議對關于在此所述的示例性填孔再試方法的范圍或功能的使用的任何限制。可適用的眾所周知的計算系統、環境和/或配置包括,但不限于,個人計算機、手持或膝上型設備、多處理器系統、基于微處理器的系統、可編程消費電子產品、無線電話和裝置、通用或專用電器、特定用途集成電路(ASIC)、網絡PC、小型機、大型計算機、包括任何上述系統或設備的分布式計算系統等等。
計算機可讀介質示例性填孔再試方法的實現可存儲在某些形式的計算機可讀介質上或者通過它傳輸。計算機可讀介質可以是可由計算機訪問的任何可用介質。作為例子,計算機可讀介質可包括,但不限于,“計算機存儲介質”和“通信介質”。
計算機存儲介質包括易失性和非易失性、可移動和不可移動介質,它們是以任何存儲諸如計算機可讀指令、數據結構、程序模塊或其它數據的信息的方法或技術被實現的。“計算機存儲介質”包括,但不限于,RAM、ROM、EEPROM、閃存或其它存儲技術、CD-ROM、數字通用盤(DVD)或其它光盤存儲器、磁盒、磁帶、磁盤存儲器或其它磁存儲設備,或者能用于存儲想要的信息和能由計算機存取的任何其它介質。
“通信介質”一般包含在調制的數據信號諸如載波或其它傳輸機制中的計算機可讀指令、數據結構、程序模塊或其它數據,并且包括任何信息傳輸介質。
術語″調制的數據信號″指具有以這樣一種關于編碼信號中信息的方式設置或改變的一個或多個特性的信號。作為例子,而非限制,通信介質包括有線的介質,諸如有線的網絡或直接線連接、以及無線的介質,諸如聲音的、RF(射頻)、紅外線和其它無線介質。任意上述各項的組合也包括在計算機可讀介質的范圍之內。
結論盡管已經以特定于結構特征和/或方法步驟的語言描述了本發明,但要理解,在所附的權利要求書中定義的本發明不必限制在所述的特定特征或步驟中。而是,特定的特征和步驟是作為實現所要求的本發明的較佳形式揭示的。
權利要求
1.具有計算機可執行指令的計算機可讀介質,當由計算機執行所述指令時,執行一個包括下列步驟的方法接收具有規定的連續順序的一個群的數據包;確定那個群的包是否丟失;請求僅被確定為丟失的包的重新傳輸;等待一個或多個丟失包的重新傳輸的接收;在等待的同時,重復確定和請求,直到不再有所述群的包是丟失的,或者直到剩余的丟失包被視為不相干的。
2.如權利要求1所述的介質,其特征在于,當群的一個或多個接收的包鄰近丟失包時,丟失包被視為不相干的。
3.如權利要求1所述的介質,其特征在于,每個包具有期滿時間標記(ETS),以及當當前時間過了鄰近丟失包的一個或多個接收的包的ETS時,丟失包被視為不相干的。
4.如權利要求1所述的介質,其特征在于,所述方法還包括,當確定一個包是丟失的時,將指定的再試時間與丟失包相關聯,其中,這個時間定義了請求那個丟失包的重新傳輸何時發生。
5.如權利要求1所述的介質,其特征在于,所述重復的步驟包括將指定的再試時間與丟失包相關聯,其中,指定的再試時間定義了請求那個丟失包的重新傳輸何時發生;如果在指定的再試時間那個丟失包仍是丟失的,那么動態地調整那個丟失包的指定的再試時間,以加上指定的再報告時間段。
6.如權利要求1所述的介質,其特征在于,在群中的包具有規定的期滿時間,以及當一個或多個接收的包的規定的期滿時間已經發生時,丟失包被視為不相干的。
7.如權利要求1所述的介質,其特征在于,群的包是順序地編號的。
8.如權利要求1所述的介質,其特征在于,群的每個包在大小上是相等的。
9.如權利要求1所述的介質,其特征在于,對重新傳輸的初始請求在確定之后規定的時間間隔發生。
10.一計算設備包括到通信網絡的接口,用于發送和接收數據;如權利要求1所述的介質。
11.具有計算機可執行指令的計算機可讀介質,當由計算機執行所述指令時,執行包括下列步驟的方法接收具有規定順序的一個群的數據包;識別群的哪個包是丟失的;發送標識丟失包的否定確認(NACK);等待一個或多個識別的丟失包的重新傳輸的接收;在等待時,重復識別和發送,直到剩余的丟失包被視為不相干的。
12.如權利要求11所述的介質,其特征在于,當群的一個或多個接收的包鄰近丟失包時,丟失包被視為不相干的。
13.如權利要求11所述的介質,其特征在于,每個包具有期滿時間標記(ETS),以及當當前時間過了鄰近丟失包的一個或多個接收的包的ETS時,丟失包被視為不相干的。
14.如權利要求11所述的介質,其特征在于,所述方法還包括接收一個或多個丟失包的重新傳輸;重復識別和發送。
15.如權利要求11所述的介質,其特征在于,所述方法還包括接收一個或多個丟失包的重新傳輸;重復識別和發送,直到不再有群的包是丟失的。
16.如權利要求11所述的介質,其特征在于,所述方法還包括,當確定一個包是丟失的時,將指定的再試時間與丟失包相關聯,其中,這個時間定義了請求那個丟失包的重新傳輸何時發生。
17.如權利要求11所述的介質,其特征在于,所述方法還包括當確定一個包是丟失的時,將指定的再試時間與丟失包相關聯;在那個包的指定的再試時間,執行對那個丟失包的重新傳輸的請求;重復確定;如果確定那個丟失包仍然是丟失的,那么動態地調整指定的再試時間以加上指定的再報告時間段;在那個包的調整的再試時間,重復請求那個丟失包的重新傳輸。
18.如權利要求11所述的介質,其特征在于,所述方法還包括接收一個或多個丟失包的重新傳輸;重復確定和請求,直到剩余的丟失包被視為不相干的,或者直到不再有丟失包。
19.如權利要求11所述的介質,其特征在于,在群中的包具有規定的期滿時間,所述方法還包括接收一個或多個丟失包的重新傳輸;重復確定和請求,直到剩余的丟失包被視為不相干的,因為一個或多個包的規定的期滿時間已經發生,或者直到沒有丟失包。
20.如權利要求11所述的介質,其特征在于,包的群的指定次序是順序的。
21.如權利要求11所述的介質,其特征在于,群的包是順序地編號的。
22.如權利要求11所述的介質,其特征在于,請求重新傳輸在確定之后規定的時間間隔發生。
23.一計算設備包括到通信網絡的接口,用于發送和接收數據;如權利要求11所述的介質。
24.一通信再試方法包括接收具有規定順序的一個群的數據包;確定那個群的包是否是丟失的;請求僅被確定是丟失的包的重新傳輸。
25.如權利要求24所述的方法,還包括接收一個或多個丟失包的重新傳輸;重復確定和請求。
26.如權利要求24所述的方法,還包括接收一個或多個丟失包的重新傳輸;重復確定和請求,直到不再有群的包是丟失的。
27.如權利要求24所述的方法,還包括,當確定一個包是丟失的時,將指定的再試時間與丟失包相關聯,其中,這個時間定義了請求那個丟失包的重新傳輸何時發生。
28.如權利要求24所述的方法,還包括當確定一個包是丟失的時,將指定的再試時間與丟失包相關聯;在那個包的指定的再試時間,執行對那個丟失包的重新傳輸的請求;重復確定;如果確定那個丟失包仍然是丟失的,那么動態地調整指定的再試時間以加上指定的再報告時間段;在那個包的調整的再試時間,重復請求那個丟失包的重新傳輸。
29.如權利要求24所述的方法,還包括接收一個或多個丟失包的重新傳輸;重復確定和請求,直到剩余的丟失包被視為不相干的,或者直到不再有丟失包。
30.如權利要求24所述的方法,其特征在于,在群中的包具有規定的期滿時間,所述方法還包括接收一個或多個丟失包的重新傳輸;重復確定和請求,直到剩余的丟失包被視為不相干的,因為一個或多個包的規定的期滿時間已經發生,或者直到不再有丟失包。
31.如權利要求24所述的方法,其特征在于,包的群的規定次序是順序的。
32.如權利要求24所述的方法,其特征在于,群的包是順序地編號的。
33.如權利要求24所述的方法,其特征在于,請求重新傳輸在確定之后規定的時間間隔發生。
34.包括一個或多個具有計算機可執行指令的計算機可讀介質的計算機,當由所述計算機執行所述指令時,執行如權利要求24所述的方法。
35.具有計算機可執行指令的計算機可讀介質,當由計算機執行所述指令時,執行包括下列步驟的方法通過通信網絡發送具有規定順序的一個群的數據包至接收器;接收識別接收器未能接收的群的包的請求;再發送識別的包至接收器,其中,再發送的包僅是由請求識別的那些。
36.如權利要求35所述的介質,其特征在于,所述方法還包括將發送的包存儲到歷史緩沖器中;在響應請求時,從歷史緩沖器取回識別的包。
37.如權利要求35所述的介質,其特征在于,所述方法還包括,將期滿時間標記指派給發送的群的一個或多個包,其中如果接收器沒有按期滿時間標記接收到這一個或多個包,則所述一個或多個包是不相干的。
38.如權利要求35所述的介質,其特征在于,包的群的規定次序是順序的。
39.如權利要求35所述的介質,其特征在于,群的包是順序地編號的。
40.一計算設備包括到通信網絡的接口,用于發送和接收數據;如權利要求35所述的介質。
41.一通信再試方法包括通過通信網絡發送規定順序的一個群的數據包至接收器;接收識別接收器未能接收的群的包的請求;再發送識別的包至接收器,其中,再發送的包僅是由請求識別的那些。
42.如權利要求41所述的方法還包括將發送的包存儲到歷史緩沖器中;在響應請求時,從歷史緩沖器取回識別的包。
43.如權利要求41所述的方法,還包括,將期滿時間標記指派給發送的群的一個或多個包,其中如果接收器沒有按期滿時間標記接收到,則所述一個或多個包是不相干的。
44.如權利要求41所述的方法,其特征在于,包的群的規定次序是順序的。
45.如權利要求41所述的方法,其特征在于,群的包是順序地編號的。
46.包括一個或多個具有計算機可執行指令的計算機可讀介質的計算機,當由所述計算機執行所述指令時,執行如權利要求41所述的方法。
全文摘要
本發明主要涉及網絡通信技術。在此所述的實現,在通信網絡上執行一個知道時間的、最大努力的、填孔的通信再試功能。除非接收器不同地表示,則假設成功的接收數據,以這種方式來完成這個功能。該表示明確地識別丟失數據。有了這個表示,發送器只再發送明確識別的丟失數據。在所附的權利要求書中指出本發明的范圍。
文檔編號H04L1/16GK1574719SQ20041004894
公開日2005年2月2日 申請日期2004年6月11日 優先權日2003年6月13日
發明者J·H·格羅斯曼四世, D·L·格林 申請人:微軟公司