透明协商的方法和设备的制作方法

文档序号:7611740阅读:172来源:国知局
专利名称:透明协商的方法和设备的制作方法
技术领域
一般来说,本发明涉及计算网络,具体来说,涉及使用传输或传输层协议(例如,传输控制协议(TCP))的计算网络。在一个实施例中,本发明是用于进行透明TCP协商的方法和设备。
背景技术
关于缩小计算机网络上的延迟并增大带宽的需求越来越强烈,特别是在网络中部署的服务器的数量越来越多的情况下。实现这些目标的一种方法是允许服务器将客户端请求重定向到网络中的另一个服务器。对于使用TCP/IP协议的网络,如因特网,重定向可以在应用程序层进行,因为这通常是在Web服务器上进行的,也可以通过其他装置来实现,如网络负载平衡器或动态域名系统(DDNS)。然而,这些装置也有它们自己的缺点。
例如,尽管负载平衡器可以将客户端请求重定向到服务器集内的后端服务器,但是,这样的方法通常要求专门的负载平衡机制,而这又会对网络造成瓶颈。在DDNS的情况下,额外的负担被施加于标准DNS服务器,以从给定IP地址集返回一个IP地址,其中,根据随机、循环复用或基于某些其他外部事件(例如,来自外部源的DNS更新)选择返回的地址。返回到客户端的地址的分布难以优化,这可能导致特定服务器超载或负载不足。此外,在没有某些外部反馈机制的情况下,DDNS服务器也不可能察觉到,对于各种服务器,当前状态是什么。
如此,需要一种用于针对传输或传输层协议(例如,TCP)进行透明协商的方法和设备。

发明内容
在一个实施例中,本发明是针对透明传输或传输层协议协商(例如,TCP协商)的方法和设备。在一个实施例中,端点机器(例如,客户端和服务器)通过使用TCP报头字段来协商网络特征,这提供了反向的能力。协商可以由任何一个端点请求或启动,如果正在接收的端点不能够进行协商,则现有的TCP连接将继续正常地工作。


为了详细理解实现本发明的上文列举的实施例的方式,通过参考附图中所显示的实施例,可以获得简要概括的本发明的特定的说明。然而,值得注意的是,所附的图只显示了本发明的典型的实施例,因此,不视为对其范围进行限制,对于本发明,可以允许其他同样有效的实施例。
图1是显示了其中可以实现本发明的一个实施例的网络的示意图;图2是显示根据本发明的用于协商网络特征的方法的一个实施例的流程图;图3是显示可以与图2中显示的方法一起使用的TCP报头的一个实施例的方框图;图4是显示根据本发明的用于使客户端和服务器协商网络特征的传输层处理单元的一个实施例的示意图;以及图5是使用通用计算设备实现的本发明的高级别方框图。
为便于理解,只要有可能,便使用完全相同的附图标记,以表示图中所共有的相同元素。
具体实施例方式
在一个实施例中,本发明提供了在网络连接(例如,TCP连接)上的两个端点之间进行透明网络特征协商的方法和设备。协商可以由连接上的任何一个端点启动,并可以涉及诸如计算机或网络管理之类的网络特征(例如,TCP窗口大小、服务器重定向等等)。
图1是显示其中可以实现本发明的网络100的一个实施例的示意图。网络100包括连接到局域网(LAN)108上的至少一个客户端104和多个服务器1061-n(在下文中统称为“服务器106”)的因特网102。或者,网络100可以作为内部网来实现,服务器106不位于同一个LAN上。如此,图1只作为示例,而不对本发明的体系结构作出限制。
客户端104和服务器106作为网络100的端点。即,通过传输层连接(例如,TCP连接),客户端104可以从网络100上的服务器106请求数据。数据请求通过网络100传输到相应的服务器106,该服务器通常通过将请求的数据发送回客户端104来作出响应。
根据本发明,客户端104或与客户端104相连接的服务器106都可以启动一个或多个网络特征的协商。可以协商的网络特征包括,但不仅限于,诸如窗口大小(例如,TCP窗口大小)、服务器重定向和服务器关闭或脱机调度之类的计算机或网络管理特征。
图2是显示根据本发明的用于协商网络特征的方法200的一个实施例的流程图。方法200在步骤202中启动,在步骤204中,方法200在客户端和服务器之间建立网络连接(例如,TCP连接)。在建立TCP连接期间或之后,方法200进入步骤206,在此,方法200请求协商一个或多个网络特征。步骤206可以在客户端或服务器上进行(即,任何一个网络端点都可以启动协商)。在一个实施例中,下面结合图3所进一步详细描述了,方法200通过修改由主动启动端点发送的数据包中的TCP报头的一个或多个字段来请求协商。
在步骤208中,方法200查询接收端点是否能够进行协商,或是否知道在步骤206中启动的请求。如果接收端点察觉到请求,则方法200在步骤210中执行请求。如果接收端点没有察觉到请求,则方法200在步骤212中维持正常的网络操作。如此,协商请求变成“透明的”,因为正常的TCP操作不会受执行请求的协商的失败的影响。
如此,方法200可使诸如图1的网络100之类的网络的端点协商网络特征,以便优化网络操作。方法200的透明特性可使方法200在其中不一定所有支持TCP的设备都能够改变它们的操作模式的网络中实现,从而不会对网络操作造成不利影响。
图3是显示可以与上文所描述的的方法200一起使用的标准TCP报头300的一个实施例的方框图。TCP报头300包括包含有关诸如源端口和目标端口号之类的数据包的信息的多个字段。对于本发明的一个实施例,有意义的字段包括序列号302、确认号码304、紧急指针306和紧急位308。具体来说,在一个实施例中,与协商有关的信息包含在序列号和紧急指针字段302、306内。
例如,在本发明的一个实施例中,一个服务器通过以下方式将客户端重定向到网络上的另一个服务器将另一个服务器的IP地址编码在序列号字段内302,将紧急指针字段306的一部分设置为指出序列号字段302和紧急指针字段306两者都包含另一个服务器的IP地址的位模式。如此,紧急指针字段306包含另一个服务器的IP地址和指出重定向请求的位模式两部分。如果客户端察觉到服务器的重定向请求,则客户端将识别紧急指针字段306内的位模式,并连接到其IP地址在序列号字段302和紧急指针字段306中指出的另一个服务器。
例如,下列序列显示了由服务器启动的协商服务器重定向的请求的一个实施例,其中,客户端察觉到请求。SEQ表示序列号(例如,图3中的序列号302),ACK表示确认号码(例如,确认号码304),URG表示紧急指针(例如,紧急指针306),CTL表示控制位(例如,图3中的位U、A、P、R、S和F)。在下面的序列中,在所显示的协商过程中,紧急位(例如,位308)没有设置。那些精通本技术的人将认识到,由于紧急位308没有设置,紧急指针306在标准的TCP功能下没有意义;因此,紧急指针306可以为协商而实现客户端 服务器TCP状态设置的TCP字段TCP状态a)关闭 侦听b)SYN-SENT→ SEQ(X),CTL(SYN)→ SYN-RECV*由客户端发送的正常的SYN数据包*
c)SYN-RECV←SEQ(Y),ACK(X+1),URG(Z),CTL(SYN,ACK)←SYN-SENT*服务器使用SEQ和URG字段对重定向地址进行编码*d)ACK-SENT→SEQ(X+1),ACK(Y+1),URG(Z′),CTL(ACK)→ACK-RECV*客户端用紧急字段确认重定向*e)关闭侦听在上文显示的说明性序列中,第一个端点(例如,客户端)的初始TCP状态为关闭,第二个端点(例如,服务器)的初始TCP状态是侦听传输(例如,在步骤(a)中)。客户端在步骤(b)中通过正常的TCP连接向服务器发送正常的SYN数据包。在步骤(c)中,服务器通过发送TCP数据包作出响应,在TCP数据包中,编码了到另一个服务器的重定向(例如,将到另一个服务器的地址编码在序列号和紧急指针字段中)。客户端通过将确认编码到发回服务器的数据包中来在步骤(d)中确认收到重定向请求。如此,在步骤(e)中,客户端的结束TCP状态为关闭,而服务器的结束TCP状态为侦听来自其他源的传输。
如果客户端未察觉到服务器的重定向请求,则客户端只需通过到原始服务器的连接正常地工作。例如,下列序列显示了由服务器启动的协商服务器重定向的请求的一个实施例,其中,客户端没有察觉到请求。在下面的序列中,在所显示的协商过程中,紧急位(例如,位308)没有设置TCP状态 设置的TCP字段 TCP状态a)关闭侦听b)SYN-SENT→SEQ(X),CTL(SYN)→SYN-RECV*由客户端发送的正常的SYN数据包*c)SYN-RECV←SEQ(Y),ACK(X+1),URG(Z),CTL(SYN,ACK)←SYN-SENT*服务器使用SEQ和URG字段对重定向地址进行编码*d)ACK-SENT→SEQ(X+1),ACK(Y+1),CTL(ACK)→ACK-RECV*维持正常的TCP连接*e)建立建立在上文显示的说明性序列中,第一个端点(例如,客户端)的初始TCP状态为关闭,第二个端点(例如,服务器)的初始TCP状态是侦听传输(例如,在步骤(a)中)。客户端在步骤(b)中通过正常的TCP连接向服务器发送正常的SYN数据包。在步骤(c)中,服务器通过发送TCP数据包作出响应,在TCP数据包中,编码了到另一个服务器的重定向(例如,将到另一个服务器的地址编码在序列号和紧急指针字段中)。客户端没有觉察到服务器的重定向请求;因此,在步骤(d)中维持了客户端和服务器之间的正常TCP连接。如此,在步骤(e)中客户端和服务器两者的结束TCP状态都反映了建立的TCP连接。
在另一个实施例中,是由客户端,而不是,而不是服务器通过在从客户端发送到原始服务器的第一个数据包的TCP报头内设置紧急指针字段306来请求重定向到另一个服务器。如果服务器察觉到重定向请求,则服务器将设置紧急指针字段并在序列号和紧急指针字段内返回另一个服务器的IP地址。下列序列显示了由客户端启动的协商服务器重定向的请求的一个实施例,其中,服务器察觉到请求。在下面的序列中,在所显示的协商过程中,紧急位(例如,位308)没有设置TCP状态设置的TCP字段 TCP状态a)关闭侦听b)SYN-SENT→SEQ(X),URG(Z),CTL(SYN)→SYN-RECV*客户端请求服务器重定向*c)SYN-RECV←SEQ(Y),ACK(X+1),URG(Z′),CTL(SYN,ACK)←SYN-SENT*服务器使用SEQ和URG字段对重定向地址进行编码*d)ACK-SENT→SEQ(X+1),ACK(Y+1),URG(Z″),CTL(ACK)→ACK-RECV*客户端用紧急字段确认重定向*e)关闭侦听在上文显示的说明性序列中,第一个端点(例如,客户端)的初始TCP状态为关闭,第二个端点(例如,服务器)的初始TCP状态是侦听传输(例如,在步骤(a)中)。客户端通过将请求编码到发送到服务器的TCP数据包中来在步骤(b)中发送重定向到服务器的请求。在步骤(c)中,服务器通过发送TCP数据包作出响应,在TCP数据包中,编码了另一个服务器的地址(例如,将到另一个服务器的地址编码在序列号和紧急指针字段中)。客户端通过将确认编码到紧急指针字段中来在步骤(d)中确认收到新的服务器地址。如此,在步骤(e)中,客户端的结束TCP状态为关闭,而服务器的结束TCP状态为侦听来自其他源的传输。
如果客户端未察觉到客户端的重定向请求,则客户端只需通过原始TCP连接正常地工作。例如,下列序列显示了由客户端启动的协商服务器重定向的请求的一个实施例,其中,服务器没有察觉到请求。在下面的序列中,在所显示的协商过程中,紧急位(例如,位308)没有设置TCP状态 设置的TCP字段 TCP状态a)关闭 侦听b)SYN-SENT→SEQ(X),URG(Z)CTL(SYN)→SYN-RECV*客户端请求服务器重定向*c)SYN-SENT←SEQ(Y),ACK(X+1),CTL(SYN,ACK)←SYN-RECV*服务器不能重定向*d)ACK-SENT→SEQ(X+1),ACK(Y+1),CTL(ACK)→ACK-RECV*维持正常的TCP连接*e)建立 建立在上文显示的说明性序列中,第一个端点(例如,客户端)的初始TCP状态为关闭,第二个端点(例如,服务器)的初始TCP状态是侦听传输(例如,在步骤(a)中)。客户端通过将请求编码到发送到服务器的TCP数据包中来在步骤(b)中发送重定向到服务器的请求。服务器未察觉到客户端的请求,因此,在步骤(c)中由服务器发送到客户端的TCP数据包不包含对客户端的请求的响应。如此,在步骤(d)中维持了正常的TCP连接,在步骤(c)中,客户端的结束TCP状态为关闭,在步骤(e)中客户端和服务器两者的结束TCP状态都反映了建立的TCP连接。
在一个实施例中,如果客户端或服务器在建立了TCP连接之后企图启动协商,则主动启动的端点通过用特定位模式设置TCP报头的紧急指针字段来表示协商请求。主动启动的端点也停止发送正常的数据包,并等待TCP连接的另一端(例如,联系的端点)通过发送TCP数据包(其中用特定位模式设置了紧急指针字段)来指出它察觉到协商。协商数据不被当做正常的TCP数据对待,不提供给连接到客户端的应用程序。一旦完成协商阶段,并发送了所有带外数据,正常的TCP功能可以继续,例如,从协商之前保留的点。
图4是显示根据本发明的用于使客户端和服务器协商网络特征的传输层处理单元400的一个实施例的示意图。传输层处理单元400是适于并入支持TCP的设备的网络接口,并包括TCP数据包接收器402和TCP数据包发送器404。TCP数据包接收器402用于对由支持TCP设备接收到的所有数据包进行扫描,以查找协商数据的指示(例如,包含在传入的数据包的TCP报头内)。TCP数据包发送器用于将协商数据编码到传出的数据包(例如,通过将协商数据编码到数据包的TCP报头中)。或者,可以使传输层处理单元400忽略所有协商请求。在另一个实施例中,诸如单元400之类的传输层处理单元可以在软件应用程序中实现。
图5是使用通用计算设备500实现的当前TCP协商系统的高级别方框图。在一个实施例中,通用计算设备500包括处理器502、存储器504、TCP协商器或模块505(例如,被配置为类似于传输层处理单元400)和各种输A/输出(I/O)设备506,如显示器、键盘、鼠标、调制解调器等等。在一个实施例中,至少一个I/O设备是存储设备(例如,磁盘驱动器、光盘驱动器、软盘驱动器)。应该理解,TCP协商器505可以作为通过通信信道连接到处理器的物理设备或子系统来实现。
或者,TCP协商器可以由一个或多个软件应用程序(甚至软件和硬件的组合,例如,使用特定用途集成电路(ASIC))代表,其中,软件从存储介质(例如,I/O设备506)加载,并由通用计算设备500的存储器504中的处理器502进行操作。如此,在一个实施例中,对于参考前面的图形在这里所描述的实体之间分配资源的TCP协商器505可以存储在计算机可读的介质或载体中(例如,RAM、磁性驱动器或光驱动器或磁盘等等)。
如此,本发明代表了通过TCP连接进行数据传输领域的很大的进步。提供了在TCP连接上的两个端点之间进行透明网络特征协商的方法和设备,从而优化通过网络进行的数据传输。协商可以由连接上的任何一个端点启动,并可以涉及诸如计算机或网络管理之类的网络特征(例如,TCP窗口大小、服务器重定向等等)。
尽管前述的内容针对本发明的优选实施例,在不偏离本发明的基本范围的情况下,可以设计出本发明的其他实施例,本发明的范围由随后的权利要求确定。
权利要求
1.一种用于在网络连接上的第一和第二端点之间协商网络特征的方法,该方法包括下列步骤将来自第一端点的至少一个协商请求传输到第二端点;如果第二端点察觉到至少一个协商请求,则响应至少一个协商请求;以及如果第二端点未察觉到协商请求,则维持正常的网络操作。
2.根据权利要求1所述的方法,其中,网络连接是TCP连接。
3.根据权利要求1所述的方法,其中,第二端点察觉到至少一个协商请求表示第二端点能够进行协商。
4.根据权利要求1所述的方法,其中,第一端点是服务器,第二端点是连接到服务器的客户端。
5.根据权利要求1所述的方法,其中,第一端点是客户端,第二端点是连接到客户端的服务器。
6.根据权利要求2所述的方法,其中,正在协商的网络特征是至少一个计算机或网络管理特征。
7.根据权利要求6所述的方法,其中,至少一个计算机或网络管理特征是TCP窗口大小、服务器重定向、服务器关机时间和服务器脱机调度中的某一个。
8.根据权利要求2所述的方法,其中,传输至少一个协商请求的步骤是在第一和第二端点之间建立TCP连接的过程中进行的。
9.根据权利要求2所述的方法,其中,传输至少一个协商请求的步骤是在第一和第二端点之间建立TCP连接之后进行的。
10.根据权利要求2所述的方法,其中,至少一个协商请求,以及对至少一个协商请求的响应,是在第一和第二端点之间发送的数据包的TCP报头内传输的。
11.根据权利要求10所述的方法,其中,传输至少一个协商请求的步骤包括将至少一个协商请求编码在发送到第二端点的TCP报头的序列号字段内;将TCP报头的紧急指针字段的一部分设置为指出序列号和紧急指针字段包含协商数据的位模式;以及其中,未设置TCP报头中的紧急位。
12.根据权利要求11所述的方法,其中,响应至少一个协商请求的步骤包括识别紧急指针字段中的位模式,紧急位未设置;以及执行至少一个请求的协商。
13.根据权利要求12所述的方法,进一步包括下列步骤通过修改从第二端点发送到第一端点的数据包中的紧急指针字段确认至少一个协商请求,其中,修改包括将紧急指针字段的一部分设置为指出将满足至少一个协商请求的位模式,其中未设置TCP报头中的紧急位。
14.一种包含用于在网络连接上的第一和第二端点之间协商网络特征的可执行程序的计算机可读的介质,其中,程序执行下列步骤将来自第一端点的至少一个协商请求传输到第二端点;如果第二端点察觉到至少一个协商请求,则响应至少一个协商请求;以及如果第二端点未察觉到协商请求,则维持正常的网络操作。
15.根据权利要求14所述的计算机可读的介质,其中,网络连接是TCP连接。
16.根据权利要求15所述的计算机可读的介质,其中,正在协商的网络特征是至少一个计算机或网络管理特征。
17.根据权利要求16所述的计算机可读的介质,其中,至少一个计算机或网络管理特征是TCP窗口大小、服务器重定向、服务器关机时间和服务器脱机调度中的某一个。
18.根据权利要求15所述的计算机可读的介质,其中,传输至少一个协商请求的步骤是在第一和第二端点之间建立TCP连接的过程中进行的。
19.根据权利要求15所述的计算机可读的介质,其中,传输至少一个协商请求的步骤是在第一和第二端点之间建立TCP连接之后进行的。
20.根据权利要求15所述的计算机可读的介质,其中,至少一个协商请求,以及对至少一个协商请求的响应,是在第一和第二端点之间发送的数据包的TCP报头内传输的。
21.根据权利要求20所述的计算机可读的介质,其中,传输至少一个协商请求的步骤包括将至少一个协商请求编码在发送到第二端点的TCP报头的序列号字段内;将TCP报头的紧急指针字段的一部分设置为指出序列号和紧急指针字段包含协商数据的位模式;以及其中,未设置TCP报头中的紧急位。
22.根据权利要求21所述的计算机可读的介质,其中,响应至少一个协商请求的步骤包括识别紧急指针字段中的位模式,紧急位没有设置;以及执行至少一个请求的协商。
23.根据权利要求22所述的计算机可读的介质,进一步包括下列步骤通过修改从第二端点发送到第一端点的数据包中的紧急指针字段确认至少一个协商请求,其中,修改包括将紧急指针字段的一部分设置为指出将满足至少一个协商请求的位模式,其中未设置TCP报头中的紧急位。
24.一种用于将网络端点连接到网络的设备,该设备包括用于接收数据包的装置;以及用于对传入的数据包的TCP报头进行扫描以查找是否包含协商数据的装置,其中,协商数据涉及对网络特征的协商的请求。
25.根据权利要求24所述的设备,进一步包括用于将协商数据编码到传出的数据包的TCP报头中的装置。
26.一种用于在网络连接上协商网络特征的方法,该方法包括下列步骤传输包含至少一个协商请求的第一数据包;响应第一数据包接收第二数据包;如果第二数据包不确认至少一个协商请求,则维持正常的网络操作;以及如果第二数据包确认至少一个协商请求,则根据第二数据包中的指令修改网络特征。
27.一种用于在网络连接上协商网络特征的方法,该方法包括下列步骤接收包含至少一个协商请求的第一数据包;如果接收器察觉到至少一个协商请求,则通过根据至少一个协商请求发送包含指令的第二数据包响应至少一个协商请求;以及如果接收器未察觉到协商请求,则维持正常的网络操作。
全文摘要
公开了透明协商的方法和设备。在一个实施例中,本发明是用于进行透明TCP协商的方法和设备。在一个实施例中,端点机器(例如,客户端和服务器)通过使用TCP报头字段来协商网络特征,这提供了反向的能力。协商可以由任何一个端点请求或启动,如果正在接收的端点不能够进行协商,则现有的TCP连接将继续正常地工作。
文档编号H04L29/06GK1694453SQ20051000642
公开日2005年11月9日 申请日期2005年1月31日 优先权日2004年4月30日
发明者雷蒙德·B.·詹宁斯三世 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1