用于网络通信的知道时间的最大努力的填孔再试方法和系统的制作方法

文档序号:7593290阅读:226来源:国知局
专利名称:用于网络通信的知道时间的最大努力的填孔再试方法和系统的制作方法
技术领域
本发明主要涉及网络通信技术。
背景技术
在电子通信的领域中,至少有某种程度的假设的不可靠性,许多通信系统具有一种机制,用于确定是否成功地接收特定的通信或者通信是否以某种方式失败或者两者。
例如采用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·格林 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1