针对广播或无线网络修改tcp/ip的制作方法

文档序号:7886515阅读:166来源:国知局
专利名称:针对广播或无线网络修改tcp/ip的制作方法
技术领域
本发明涉及一种用于路由数据分组的方法和系统,并涉及用于发送数据分组的设备和用于接收数据分组的设备。
许多因特网应用利用TCP/IP协议进行通信。TCP/IP是为基于电缆互联的网络设计的。技术的进步现在正逐渐将这类因特网应用置入到其它设备中-例如数字电视和移动电话。这些设备是通过其它方式-例如广播电视网络或无线远程通信链路连接到因特网上的。
当用在广播或无线网络中时,TCP/IP存在一些缺点。例如,TCP/IP要求按照有规律的间隔通过网络发送信号以告知对所接收数据分组的确认。这就带来许多问题,因为以这种方式从一部移动电话发送数据可能是很昂贵的,并且/或者会产生来自大量设备的太多的数据通信量。
本发明的一个目的是克服这些缺点。
按本发明的第一个方面,提供了一种用于路由数据分组的方法,该方法包括从一个服务器接收多个数据分组,缓存那些是TCP/IP分组的数据分组,向一个客户端发送所述的多个数据分组,并向所述服务器发送一个接收到所述TCP/IP分组的确认。
该方法还有利地包括应客户端的请求,重新发送任何缓存的TCP/IP分组。
该方法优选地包括如果没有从客户端接收到数据或确认,则发送一个确认以确保其它的数据分组被发送到路由器。
该方法可以包括接受来自客户端的任何否定确认分组,并从数据分组缓存器重新发送数据分组。
另外,该方法可以包括在下列情况下发送丢失的数据分组(i)当一个连接已被关闭,并且还存在未完成的数据分组时;(ii)当丢失分组列表已满时;和/或(iii)当数据分组缓存器快要满时。
本发明还提供了一种可直接加载到数字计算机的内部存储器中的计算机程序产品,包含有软件代码部分,该软件代码部分用于在计算机上运行所述产品时执行按照本发明方法的步骤。
本发明还提供了一种计算机程序,用于执行按照本发明方法的步骤。
本发明还提供了按照本发明的计算机程序产品或计算机程序的电子分发。
按本发明的第二个方面,提供了一种路由数据分组的系统,该系统包含一个用于接收和发送数据分组的路由器和一个用于接收所述数据分组的客户端,所述路由器被安排成缓存那些是TCP/IP分组的数据分组,并且用于发送一个接收到所述TCP/IP分组的确认。
所述路由器有利地包含用于从客户端重新发送任何缓存的TCP/IP分组的装置。
所述路由器优选地包含这样的装置,用于在没有从客户端接收到任何数据或确认的情况下,向服务器发送一个确认,以确保其它数据分组被发送到所述路由器。
所述路由器可包含接收装置,用于从客户端接收任何否定的确认分组,还包括发送装置,用于从数据分组缓存器重新发送数据分组。
该发送装置还可以在下列情况下操作(i)当一个连接已关闭,并且还存在未完成的数据分组时;(ii)当丢失分组列表已满时;和/或(iii)当数据分组缓存器将满时。
按本发明的第三个方面,提供了用于发送数据分组的设备,该设备包括用于接收多个数据分组的接收装置,用于缓存是TCP/IP分组的数据分组的存储装置,用于发送所述数据分组并发送一个接收到所述TCP/IP分组的确认的发送装置。
该设备有利地包含有用于应客户端的请求重新发送任何缓存的TCP/IP分组的装置。
该设备优选地包含这样的装置,用于在没有从客户端接收到数据分组或确认的情况下,向服务器发送一个确认,以确保其它的数据分组被发送到路由器。
该设备可以包含用于从客户端接收任何否定确认分组的接收装置,还包括从数据分组缓存器重新发送数据分组的发送装置。该设备还可以包括在下列情况下操作的发送装置(i)当一个连接已关闭,并且还存在未完成的数据分组时;
(ii)当丢失分组列表已满时;和/或(iii)当数据分组缓存器将满时。
按本发明的第四个方面,提供了用于接收数据分组的设备,该设备包含用于接收数据分组的接收装置,用于识别TCP/IP分组的处理装置,用于存储丢失TCP/IP分组列表的存储装置,和用于周期性地发送所述丢失TCP/IP分组列表的发送装置。
其中的处理装置有利地是以软件实现的,并且与该设备的操作系统通信。
其中的发送装置优选地在下列情况下操作(i)当一个连接已关闭并且还存在未完成的数据分组时;(ii)当丢失分组列表已满时;和/或(iii)当数据分组缓存器将满时。
利用本发明,可以在广播和无线网络中很容易地实现TCP/IP,而不会生成大量的返回通信量。从应用程序方面来说,可以保持同样的接口。另外,无需修改用户的操作系统,因此,可以使用该操作系统的联网库,以确保与当前代码的兼容性。
在主要是单向通信量时,本发明确保显著提高并增强半双工网络的利用。
另外,在一个典型信道上从客户端设备返回的分组数量被减少。从而减少网络和无线带宽的拥塞,尤其是在按单元收费的情况下可以降低费用。
下面,将参照附图介绍本发明的实施例,这些实施例只是为了举例说明本发明,其中

图1是一个路由器和一个客户端的示意图;图2和3是驱动器中的程序流程图;图4显示了TCP/IP单元;图5到7显示了系统中分组的流向。
本发明分两部分,第一部分是一个位于广播路由器的前端的路由器,数据分组借此通过该系统,该路由器将该网络与因特网的其余部分连接起来。第二部分是客户端设备中的低层软件。其介于硬件驱动器和操作系统网络层之间。
所述路由器与标准路由器的操作不同。它缓存通过它的所有TCP/IP分组。如果没有来自客户端的数据或确认,则它向因特网服务器S发送一个确认(ACK),以保证服务器继续发送数据。该数据被转发到客户端。随后,路由器从客户端接收任何否定确认(NACK)分组,从数据分组缓存器中重新发送数据。一旦一个连接已关闲了一个特定时间段,并且没有来自客户端的NACK分组,则从缓存器中删除为该特定连接所缓存的所有分组。
客户端中的TCP/IP单元的作用是为一个连接分离出TCP/IP分组。随后,该单元使用TCP/IP序列号和由操作系统自动生成的ACK数据以维持一个丢失分组列表。当一个连接已关闭但还存在未完成的数据分组(所述分组在超时后将被重新发送)时,或丢失分组列表已满时,或数据分组存储快要满时,该丢失分组列表被发送到路由器。
在图1中,经由因特网12,路由器10通过其网络接口14与服务器S相连。一旦接收到客户端16(可以是一个移动电话)的请求,路由器10就从服务器S下载资料。该资料包括数据分组,该数据分组可以是TCP/IP和UDP分组的混合。UDP分组不是基于连接的,因此只是流经路由器,不做任何智能的处理。
不过,TCP是基于连接的网络。客户端10中的处理器18可以通过TCP首部中的IP地址和套接字值,跟踪出哪些分组属于哪个连接。处理器18还必须处理从客户端16接收的ACK和NACK信号。
路由数据分组的方法的原理包括从服务器S接收多个数据分组,在存储装置20中缓存那些是TCP/IP分组的数据分组,向客户端16发送数据分组,并向服务器S发送一个接收到所述TCP/IP分组的确认。
路由器10通过一个天线22向客户端16发送数据分组。客户端16经自己的天线24接收数据分组。这些分组经过一个硬件驱动器26到达TCP/IP单元28。分组可作为原始IP分组被传送,或能够被封装在以太网分组中。TCP/IP单元28可以处理这两种类型的分组。TCP/IP单元28将数据分组传递到操作系统并存储由操作系统生成的ACK数据。该ACK数据是按TCP协议自动生成的。TCP/IP单元28利用该ACK数据来保持一个丢失分组的列表。客户端16周期性地向路由器10发送该丢失分组列表,路由器10从其缓存器20重新发送所请求的TCP/IP分组。
用于路由数据分组的系统包含用于接收和传送数据分组的路由器10以及用于接收所述数据分组的客户端16。路由器10被安排成用于缓存那些是TCP/IP分组的数据分组,并用于反向向这些分组的源发送一个确认,该确认表明已接收到所述TCP/IP分组。
通过在路由器10中缓存这些分组并从路由器发送ACK数据,系统可以有效地模拟处理TCP/IP数据分组的常规操作。服务器S仍按其正常的方式工作。如果在路由器10和客户端16之间丢失或损坏了任何数据,则通过TCP/IP单元28的操作,客户端16就知道这一点了。
TCP/IP单元28建立一个丢失分组的列表,并周期性地将该列表发送给路由器10,路由器10从其缓存器20重新发送这些丢失的分组。由于TCP/IP单元28独立于客户端设备16的常规操作系统并且是对该系统的补充,因此,该操作系统及其上的所有浏览器完全就象正在处理正常的TCP/IP协议数据一样工作。
用于接收数据分组的设备包括用于接收数据分组的接收装置(驱动器26)和用于识别TCP/IP分组的处理装置(单元28)。另外,存储装置与单元28提供在一起的,该存储装置用于存储丢失TCP/IP分组列表。驱动器26还充当用于周期性地发送该丢失TCP/IP分组列表的发送装置。
图4更加详细地描述了TCP/IP单元28,该单元位于驱动器26和客户端操作系统之间。
路由器路由器10位于客户端16和因特网12之间。在所有的非TCP连接而言,路由器16仅仅转发分组。在TCP连接上,路由器10从来自客户端的分组的首部中提取信息,随后将其转发。目标是客户端的一个特定连接上的所有分组都被缓存起来,随后转发给该客户端。
从因特网服务器S方面看,它与客户端16之间的所有经过路由器10的连接都遵守TCP标准。
路由器10接收的所有TCP分组都与一个客户端16相关联,在该客户端上,所述TCP/IP分组(通过TCP首部中的端口号)又与一个特定的连接相关联。
路由器10通过分析离开客户端的分组来读取最大窗口尺寸。当路由器10在该连接上已接收到等于该窗口尺寸的数据量时,则该路由器10创建一个零数据长度的TCP分组,该分组用于确认已收到了至此所接收的所有连续的数据。类似的,如果在一短的时间段内(该时间是一个在路由器中的设定,但是必须小于500ms)都没有从因特网服务器S或客户端16接收到数据,则创建一个零数据长度的TCP分组,用于确认数据的接收。这些确认分组被发送给因特网服务器S。
所述路由器必须识别出来自客户端16的所有设置了同步(SYN)标志的分组。这些就导致路由器就初始化一个新的TCP链接所需要的数据单元和存储器。来自因特网12带有设置了SYN标志的任何分组都被转发到所述客户端。此时设置一个超时,以致在一定时间段内没有从客户端16接收到应答信号,则重新发送该(包含SYN标志的)分组。这将一个设定的最大次数(重新发送是在该分组在路由器和客户端之间丢失了的情况下进行的)。
如果一个数据分组在因特网16上被丢失了,则路由器10就充当TCP客户端,并且路由器10重复地发送带有ACK序列号等于丢失数据的第一个字节的分组。随后,因特网服务器S重复发送这一数据。服务器存储发送给因特网服务器S的任何分组中的最后ACK值。
路由器10对来自客户端16的分组进行分析。其ACK值小于因特网上发送到S的ACK值的任何分组均被修补,从而使这一ACK值等于所发送的最后ACK值。
如果路由器10从客户端16接收到一个带ACK值的分组,则客户端16就能够清理分组缓存器,直到它知道的数据已被接收。
客户端图2和3显示了驱动器中程序流程的简化例子。图2显示了在从网络(经由低层硬件驱动器)接收到一个分组时的流程,图3显示了在从OS接收到一个分组时(要被发送给网络)的流程。
从网络接收分组当一个分组是从网络接收的时,其端口号可被提取出来,并用于为该连接定位存储区。如果一个分组的SYN标志被置位,并且当前没有为该端口号建立连接,则仅仅将该分组转发到OS。
随后,一个单一过滤器删除已接收的旧的分组(按照TCP标准)。
下一个判断所使用的信息是从离开OS的分组中获取的,是来自OS的最后ACK值和窗口尺寸。该判断转发那些在OS看来符合当前连接窗口的分组。
在转发一个分组时,检查该分组的FIN标志是否被置位。若是,并且非零分组列表非空,则向路由器发送一个NACK分组。并在存储器中记录该被转发分组的序列号和长度;随后,该存储器被清理,以删除被转发过的小于当前序列号减去最大窗口尺寸的任何分组。
如果一个分组没被转发到OS,则它被放置在临时存储器中,以扩展客户端上的接收缓存器大小。若该数据存储到达或超过了某一容量等级,则每添加一个数据分组该连接的重试计数器就递增。当该重试计数器达到一个限定值时,向路由器发送一个NACK分组。如果没有丢失任何分组,则发送一个NACK分组-这将节流路由器,使它以一个较低的速率转发数据。
从OS接收分组一个分组是与一个特定的连接相关联的。如果设置了SYN选项,则为这个新的连接初始化一个新的连接。从这个SYN分组中提取一些选项,例如网络上的最大分段长。
下一个测试为这一连接使用在从OS接收的前一个分组中的ACK值。若相等,并且多于已从网络转发的数据,则这就表明有丢失的数据。
如果没有丢失任何数据,则转发该分组,但只有在它不是零长度时,或者其中有任何标志被置位的情况下,才进行转发。
在一个分组被转发时,进行一个检查,以便确认是否可以转发临时分组存储器上的任何数据,最多到当前可用的窗口尺寸(该尺寸是在从OS接收的分组中发布的)。
如果存在数据丢失,则计算丢失的数据,并将其加入丢失分组列表(如果该丢失数据还没有在列表中的话)。有时,可能无法确切地确定丢失了多少分组(和使用TCP一样,只有丢失数据的长度是已知的)。不过,通过获取丢失数据的长度,并将其适用于那些最大尺寸等于该链路的最大分段长的分组中,可以获得这一长度的准确近似。
如果当一个丢失分组被加入到丢失分组列表中时,列表长度大于某一占用量,则重试计数器就递增。如果该重试计数器等于一个设定的重试超时值的一倍或几倍,则向路由器发送一个NACK分组。
NACK分组一个NACK分组列出了在客户端丢失的数据。因此它列出了代表该丢失数据的多个序列号和长度值。由路由器在被请求分组中发送该数据。
一个NACK分组还能充当一个对路由器的警示,提示路由器它现在发送数据的速度大于客户端上的应用程序正消耗数据的速度。这一点的实现,是通过在NACK分组中放置来自OS的一个分组的最后ACK序列号。路由器利用该信息计算应该以多快的速度发送任何其他分组。
图4显示了驱动器中分组和数据的流向。对来自网络和OS的分组进行过滤,以便仅仅转发非TCP分组。对于TCP分组,则要进行分析。数据被存入与该分组所属连接相对应的区域。
分组流向5到7举例说明了系统的分组流向。图中时间流向下,每条带箭头的线代表一个分组。
图5请求一个web页面的简单例子(包括一个丢失的分组)图5被分为四个阶段。阶段1显示了连接打开阶段的分组流向。由图中可见,其中带有置位的SYN标志的分组被转发。在第二个SYN标志之后,路由器向服务器发回一个分组(A1),因为这是一个零长度的确认。
阶段2显示了一个离开客户端的非零长度的分组,在一个web例子中,这是一个‘GET’命令,详细说明了客户端所要求的信息。
阶段3显示了因特网服务器S流送的大量数据(例如一个web页面或图像)。这些分组是由路由器10转发并缓存的。在传送了一定数量(最大到客户端16报告的窗口尺寸)的分组之后,路由器创建一个零长度的ACK分组(A2),将其发送到因特网服务器。
注意,在路由器10和客户端16之间的网络上,丢失了分组13。不过,路由器继续接收数据并转发该数据。
阶段4显示了连接被关闭。当因特网服务器S完成了数据的发送,它发送一个带有置位了FIN标志的分组。路由器10向服务器S返回一个确认分组,也带有一个被置位的FIN标志,这就关闭了从服务器来看的连接。FIN分组还被转发到客户端16。在接收到该分组时,客户端分析丢失了什么样的数据;如果有丢失的数据,则向路由器发送一个NACK分组(B1)。随后路由器10在一个新分组(B2)中重新发送所请求的数据(该数据已被缓存);在该例中,该分组中的数据与所丢失分组P13中的数据相同。在接收到丢失的数据之后,客户端发送一个置位了FIN标志的确认分组,路由器看到该信息后,它就清除为该连接(该连接现在被关闭)所保持的所有信息。
图6双向通信量的例子当该通信量是双向时,标准TCP允许有效地实现向前和向后发送ACK分组。因此,在该系统中,系统包含了采用传统TCP方式的工作。
在图中,数据分组在这两个方向上行进。除了分组A1之外,路由器10不创建任何用于确认接收到数据的分组。
注意,当丢失了一个分组(例如分组10)时,标准TCP机制是使用其数据长度不为零的分组中的一个ACK值,这种标准TCP机制可以用来获取被重新发送的分组。
图7数据节流如果数据仅仅被转发通过路由器到达客户端16,则很可能的是数据将被以比客户端可以处理该数据的速度更快的速度发送。因此,系统需要通知路由器10降低向客户端发送分组的速率。
其做法是,一旦临时数据存储超过某一边界值,则向路由器发送从OS接收的当前ACK值。
图7显示了一个这样的例子。
阶段1和2显示了标准的连接打开和对数据的请求(和图5中一样)。
阶段3显示,服务器正在发送大量的数据并将其转发到客户端。如果这一数据是以比客户端使用该数据的速度快的速度到达的话,则将出现一个临时数据存储达到了一特定占用量的时间点。此时(图中恰好是在分组16之后),该客户端发送一个NACK信号。在该例中,没有丢失分组;不过,如果路由器要是以该速度转发分组的话,则分组就会丢失。
该NACK信号在其中具有来自OS的最近ACK值。这样就允许路由器来计算客户端以其正在消耗数据的近似速率。若客户端滞后,则路由器在一段时间内不再发送任何分组(阶段4),在该时间段结束时,路由器再次开始发送分组(阶段5),但是以每分组之间更大的时间间隔进行的。应注意,来自服务器S的输入仍保持与以前同样的速率(该速率是由因特网服务器和服务器与路由器之间的网络决定的)。
多重连接NACK分组在当前的描述中,NACK分组的发送是基于每个连接的。在另一种方式中,在发送一个NACK分组时,这就代表该时刻所有打开连接的丢失数据。
这可以进一步减少客户端返回的分组的数量(如果有多个连接被打开的话)。
组合的因特网代理缓存器和路由器当前存在的系统是这样的,这些系统提供能够在服务器上缓存因特网web页面、图像等的能力。这类系统存储这些页面,从而使一个网络上的多个客户端都能从因特网缓存器中阅读被缓存的web页面,从而减少了因特网服务器上的负荷。
这些系统可以被并入到本发明中,从而使路由器也成为一个代理缓存器。在连接终止时,从因特网服务器接收的数据不被丢弃,而是存储在缓存器中。如果其他客户端也需要同样的数据的话,在因特网服务器S和路由器/缓存器之间没有出现任何连接,那么就利用相同协议从缓存器流送数据。
权利要求
1.一种路由数据分组的方法,该方法包括从一个服务器接收多个数据分组,缓存那些是TCP/IP分组的数据分组,向一个客户端发送所述多个数据分组,以及向所述服务器发送一个接收到所述TCP/IP分组的确认。
2.如权利要求1所述的方法,其中该方法还包括应所述客户端的请求,重新发送任何所缓存的TCP/IP分组。
3.如权利要求1或2所述的方法,该方法包括如果没有从客户端接收到任何数据或确认,则发送一个确认,以确保向路由器发送其它的数据分组。
4.如前面任一个权利要求所述的方法,该方法包括从客户端接收任何否定确认分组,并从数据分组缓存器重新发送数据分组。
5.如权利要求4所述的方法,该方法包括在下列情况下发送丢失的数据分组(1)当一个连接已被关闭,并且还有未完成的数据分组时;和/或(2)在丢失分组列表已满时;和/或(3)在数据分组缓存器快满时。
6.一种可直接加载到数字计算机内部存储器中的计算程序产品,该计算机程序产品包括软件代码部分,当所述计算机程序产品在计算机上运行时,所述软件代码部分执行权利要求1到5中的任何一个或多个步骤。
7.一种计算机程序,当所述计算机程序产品在计算机上运行时,该计算机程序执行权利要求1到5中的任何一个或多个步骤。
8.如权利要求6所述的计算机程序产品或如权利要求7所述的计算机程序的电子分发。
9.一种用于路由数据分组的系统,该系统包括一个用于接收和发送数据分组的路由器,和一个用于接收所述数据分组的客户端,所述路由器被安排用来缓存那些是TCP/IP分组的数据分组并用于发送一个接收到所述TCP/IP分组的确认。
10.如权利要求9所述的系统,其中所述路由器包含用于应客户端的请求重新发送任何被缓存的TCP/IP分组的装置。
11.如权利要求9或10所述的系统,其中所述路由器包含这样的装置,该装置用于在没有从客户端接收到任何数据或确认的情况下去,向服务器发送一个确认,以确保其它的数据分组被发送到路由器。
12.如权利要求9到11中任一项所述的系统,其中所述路由器包括用于从客户端接收任何否定确认分组的接收装置,和用于从数据分组缓存器重新发送数据分组的发送装置。
13.如权利要求12所述的系统,其中的发送装置在下列情况下操作(1)当一个连接已被关闭,并且还有未完成的数据分组时;(2)在丢失分组列表已满时;和/或(3)在数据分组缓存器快满时。
14.用于发送数据分组的设备,该设备包括用于接收多个数据分组的接收装置,包括用于接收多个数据分组的接收装置,用于缓存那些是TCP/IP分组的数据分组的存储装置,和用于发送所述数据分组并用于发送一个接收到所述TCP/IP分组的确认的发送装置。
15.如权利要求14所述的设备,该设备包括用于应客户端的请求重新发送任何被缓存的TCP/IP分组的装置。
16.如权利要求14或15所述的设备,该设备包含这样的装置,该装置用于在没有从客户端接收到任何数据或确认的情况下,向服务器发送一个确认,以确保其它的数据分组被发送到路由器。
17.如权利要求14或15所述的设备,该设备包括用于从客户端接收任何否定确认分组的装置,和用于从数据分组缓存器重新发送数据分组的发送装置。
18.如权利要求17所述的设备,其中所述发送装置在下列情况下操作(1)当一个连接已被关闭,且还有未完成的数据分组时;(2)在丢失分组列表已满时;和/或(3)在数据分组缓存器快满时。
19.用于接收数据分组的设备,该设备包含用于接收数据分组的接收装置,用于识别TCP/IP分组的处理装置,用于存储丢失TCP/IP分组列表的存储装置,和用于周期性地发送所述丢失的TCP/IP分组列表的发送装置。
20.如权利要求19所述的设备,其中所述处理装置是用软件实现的,并与该设备的操作系统通信。
21.如权利要求19或20所述的设备,其中所述发送装置在下列情况下操作(1)当一个连接已被关闭,且还有未完成的数据分组时;(2)在丢失分组列表已满时;和/或(3)在数据分组缓存快满时。
全文摘要
一个在广播系统或移动网络的前端处的路由器缓存所有经过的TCP/IP分组。该路由器周期性地从其缓存器重新发送在客户端没收到的任何数据分组。该系统使得TCP/IP能够被很容易地实现,而不会导致生成大量返回通信量,同时保持着相同接口。
文档编号H04L29/06GK1633796SQ03803858
公开日2005年6月29日 申请日期2003年1月29日 优先权日2002年2月15日
发明者R·M·米勒-史密斯 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1