用于管理客户与服务器之间的连接的系统和方法

文档序号:6534948阅读:228来源:国知局
专利名称:用于管理客户与服务器之间的连接的系统和方法
发明
背景技术
领域本发明一般涉及网络服务器,特别涉及驻留大量客户连接的服务器,更加特别涉及驻留大量相对慢的客户连接的服务器(例如,因特网web服务器)。
背景技术
对于网络文件服务器,如因特网web服务器,驻留大量相对慢的客户连接,是常见的。只是管理所打开的连接,大量所打开连接就对服务器中央处理器(central processing unit,CPU)施加有沉重的负担。例如,管理在负载服务器上的所打开连接会消耗CPU操作量的30-40%或更多。该负担大大减少用来执行服务器主要功能,即提供数据给客户的CPU周期的百分率。
加在服务器CPU上的连接管理负担降低服务器软件例程的性能,并且减少可以同时打开的最大客户连接数。结果,web驻留公司必须提供额外、冗余的服务器来为数目增加的客户服务。获取并维护额外web服务器的成本是相当大的。
代理服务器执行一些客户连接管理功能,并且在本领域内为人所知。然而,在本领域内为人熟知且常见的是,这种代理服务器在位置上必须与服务器进行分开,并且因此必须通过服务器必须管理的,相对慢、易出错的网络连接与服务器进行通信。例如,请参见Ari Luotonen,Web代理服务器(PrenticeHall,1997),在此加入以作参考。
因此,需要一种用于减轻服务器CPU的连接管理负担,从而让服务器更有效地驻留数目增加的客户的系统和方法。
概要本发明通过提供一种用于管理多个客户和一个服务器之间的连接的系统和方法,克服现有技术相关的问题。本发明帮助将连接管理负担从主机CPU转移到介入网络和主机总线之间的适配卡。
适配卡包括网络控制器、存储器设备、处理单元和协议适配器。存储器设备提供数据和代码的存储。代码包括通过网络控制器在网络上与客户进行通信,并且通过直接连接到服务器总线的协议适配器与服务器进行通信的代理应用。
当由处理单元进行执行时,代理应用通过利用网络建立代理应用与客户之间的网络连接,并且利用服务器总线建立代理应用与服务器之间的总线连接,管理客户连接。另外,存储器设备提供数据缓冲,这允许打开很多与客户的网络连接,而打开相对少的到服务器的总线连接。在具体实施例中,代理从大量慢的客户连接将客户数据累积在缓冲区中,然后通过快总线连接将客户数据提交给服务器。相反,代理通过快总线连接接收服务器数据,临时存储服务器数据,然后通过慢客户连接将服务器数据转发给客户。
在更为特定的实施例中,代码包括由应用代理使用以与客户和服务器进行通信的通信协议栈。在更加特定的实施例中,通信协议栈为传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)栈。
在一个实施例中,只有在代理确定已接收完整的客户请求之后,才打开服务器连接。然后在代理从服务器接收对客户请求的响应之后关闭服务器连接。可选地,在系统启动时打开预定数目的持久性服务器连接,并且代理使用这些持久性连接,与服务器进行通信。
代理应用可选地包括很多应用特定代理,包括但不限于HTTP代理、安全代理,和/或中转(pass-through)代理。在特定实施例中,代理的主进程模块从客户数据辨别应用标识符(例如,为人熟知的端口号),并且调用一个或多个与该标识符的值对应的应用特定代理。
附图简述参照下面附图对本发明进行描述,其中相同的参考号表示相当类似的元素

图1是本发明的服务器和适配卡的方框图;图2是更加详细地示出代理模块的图1的适配卡的工作存储器的方框图;图3是更加详细地示出图2的代理模块的方框图;图4是示出存储在图2的数据缓冲区中的至少一些数据的示例性数据结构的方框图;
图5是概述本发明的一种用于管理客户和服务器之间的连接的方法的流程图图6是概述一种用于执行图5的方法的第一步骤的方法的流程图;图7是概述一种用于执行图5的方法的第二步骤的方法的流程图;图8是概述一种用于执行图5的方法的第三步骤的方法的流程图;图9是概述一种用于执行图5的方法的第四步骤的方法的流程图;图10是概述一种用于执行图5的方法的第五步骤的方法的流程图;图11是概述一种用于执行图5的方法的第六步骤的方法的流程图。
详细描述本发明通过使用运行在不同处理单元上的代理应用将大量连接管理负担从服务器的主处理器转移出来,克服现有技术的问题。在下面描述中,对众多特定细节进行阐述(例如,特定通信协议、特定软件和数据结构等),以彻底地理解本发明。然而,本领域的技术人员将知道,本发明在实施时可以不同于这些特定细节。另外,省略为人熟知的网络组件和程序实现的细节(例如,利用通信协议栈建立连接),以免不必要地使本发明变得不明了。
图1是示出利用物理网络介质104连接到网际网络102的系统100的方框图。在特定实现中,系统100是因特网web服务器,并且网际网络102是因特网,但是本领域的技术人员将知道,可以在任何类型的网络服务器中实现本发明。
系统100包括文件服务器(例如HTTP web服务器)106和适配卡108。文件服务器106利用适配卡108,在网际网络102上向客户109(1-n)提供数据,并且从其接收数据。适配卡108建立并维护客户109(1-n)和适配卡108之间的网络连接,并且建立服务器106和适配卡108之间的总线连接。如此连接之后,适配卡108代表服务器106从客户109(1-n)接收通信,并且将该通信转发给服务器106,代表客户109从服务器106接收响应,并且将该响应转发给客户109。
服务器106包括非易失性存储器110、工作存储器112、服务器海量数据存储器114、处理单元116,和一个或多个用户输入/输出(input/output,I/O)设备118,所有这些组件均利用服务器总线120(例如,PCI总线)进行相互通信。非易失性存储器110(例如,只读存储器和/或一个或多个硬盘驱动器)提供甚至当服务器106断电时仍保留的数据和代码存储。工作存储器112(例如,随机存取存储器)为服务器106提供工作存储器,并且包括在启动时载入到工作存储器112中的可执行代码(例如,操作系统)。在其它程序中,工作存储器112包括服务器应用121和通信协议栈122。服务器应用121包括让服务器106用作网络服务器的网络软件应用(例如,FTP、HTTP等)。通信协议栈122是帮助通过网际网络与其它机器进行通信的标准协议栈(例如,TCP/IP)。标准协议栈在本领域内为人熟知。例如,参见W.Richard Stevens,TCP/IP阐述,卷1(Addison-Wesley,1994),在此加入以作参考。服务器海量数据存储器114为服务器向连接到网际网络102的客户109(1-n)提供的数据提供数据存储(例如,一个或多个硬盘驱动器)。处理单元116执行工作存储器112中的指令,以使服务器106执行它的主要功能(例如,向客户提供数据,并且从其接收数据)。I/O设备118典型地包括键盘、监视器和/或帮助与服务器106的用户交互的其它设备。在网络服务器如因特网web服务器中,典型地提供有上述组件中的每个组件。
适配卡108包括非易失性存储器123、工作存储器124、处理单元126、总线协议桥128和网络控制器129,所有这些组件均利用适配器总线130进行相互通信。非易失性存储器123提供甚至当适配器108断电时仍保留的数据和代码(例如,引导代码)存储。处理单元126通过执行工作存储器124中的代码,实现适配卡108的功能。总线协议桥128提供适配器总线130与服务器总线120之间的接口,并且网络控制器129提供适配器总线130与网络介质104之间的接口。
工作存储器124为适配器108提供工作存储器,并且包括代理应用132和通信协议栈134。代理132和协议栈134在启动时从非易失性存储器123载入到工作存储器134中。可选地,代理132和协议栈134可以从一个或多个其它源,包括但并不限于服务器106的非易失性存储器110或服务器海量数据存储器114,进行载入。代理132,当由处理单元126执行时,建立并管理上述适配器108与服务器106,和适配器108与客户109之间的连接。
在本发明的这个特定实施例中,协议栈122和134是标准(例如,TCP/IP)协议栈。在适配器108中使用标准通信协议栈帮助使用在绝大多数网络服务器中已存在的标准通信软件(例如,协议栈122)。然而,本领域的技术人员将知道,该特定元素(和其它所述元素,即使没有明确陈述)不是本发明的根本元素。例如,本发明可以在服务器106和适配器108中使用可定制通信软件(例如,服务器应用121与协议栈134或代理132之间的直接通信)进行实现。而且,在本发明的特定实施例中,通过向代理132提供对服务器106的资源(例如,服务器海量数据存储器114)进行直接访问,可以省略该元素。
适配卡108利用总线协议桥128和服务器总线120之间的总线连接136连接到服务器106。在该特定实施例中,总线连接136是典型的总线扩展槽,例如PCI插槽。然而,本领域的技术人员将知道,本发明可以使用其它类型的总线连接,包括但不限于ISA插槽、USB端口、串行端口或并行端口,进行实现。总线连接136帮助在代理132和服务器应用121之间进行高速、大包、相对不易出错(与网络连接相比较)的通信,大大减轻了加在服务器106的处理单元116上的连接管理负担。总而言之,代理132(运行在处理单元116上)通过慢且易于出错的网络连接与客户109进行通信,然后通过高速总线连接136代表客户109与服务器应用121进行通信。
图2是更加详细地示出代理132和协议栈134的工作存储器124的方框图。本领域的技术人员将知道,虽然代理132的各种软件模块作为相互连接的功能块进行示出,但是这些软件模块实际上是当由处理单元126(图1)执行时可以进行相互通信的存储在工作存储器124中的可执行代码块。
代理132包括主进程模块202、多个客户过程模块204(1-n)、数据缓冲区206和应用代理模块208。主进程模块202提供对代理132的各个模块的全面控制和协调。对来自网际网络102上的客户109(图1)的连接请求进行响应,主进程模块202接受连接请求,初始化数据缓冲区206中用于那个客户连接的数据结构,启动一个新的单独客户连接进程204,以处理该连接,然后通知应用代理模块208,已经建立特定客户连接。每个客户进程204处理一个这种客户连接。应用代理模块208建立并管理与服务器106的总线连接。数据缓冲区206提供对从客户109接收且目的地为服务器106的数据,从服务器106接收且目的地为客户109的数据,和与所建立客户和/或服务器连接相关的连接数据的存储。
通信协议栈134是TCP/IP栈,包括套接字层210、TCP层212、IP层214和包括网络驱动程序216和服务器总线驱动程序218的设备层。协议栈134各层的功能在本领域内为人熟知,因此在此不作详细的讨论。通过套接字层210、TCP层212、IP层214和服务器总线驱动程序218建立代理132的各个模块与服务器应用121之间的连接。通过套接字层210、TCP层212、IP层214和网络驱动程序216建立代理132的各个模块与客户109之间的连接。
图3是示出包括多个应用特定代理208(1-f)的应用代理模块208的方框图,其中应用特定代理208包括超文本传输协议(Hypertext Transfer Protocol,HTTP)代理208(1)、中转代理208(2)、安全代理208(3)和“其它”代理208(f)。通过配置一个或多个应用特定代理208(1-f)来对客户连接进行服务,主进程202将所建立客户连接通知给应用代理208。配置应用特定代理(例如,HTTP代理208(1))的一个方法是在应用特定代理的处理队列中输入客户进程标识符。
主进程202从包含在客户连接请求中的端口号确定为特定用户进程执行哪个应用特定代理。标准做法是使用为人所知的端口号标识特定网络应用和/或协议(例如,文件传输协议(File Transfer Protocol,FTP)、HTTP等)。例如,端口号80对应于HTTP连接请求。主进程202因此将启动用来响应表示端口80的连接请求的所有客户进程204通知给HTTP代理208(1)。
HTTP代理208(1)监控它被通知的每个客户进程。当HTTP代理208(1)确定完整的HTTP请求由客户进程(例如204(n))接收并存储在数据缓冲区206中时,HTTP代理208(1)打开到服务器的连接,将该请求传输到服务器,并且从服务器接收响应,并将该响应存储在数据缓冲区206中,然后关闭服务器连接。服务器响应然后由相关联的客户进程204(n)传输到客户109(n)。
当主进程202接收端口号不对应于任何一个其它应用特定代理的连接请求时,主进程202通知中转代理208(2)。中转代理208(2)简单地打开服务器连接,将从相关联的客户进程204接收的数据从数据缓冲区206传输到服务器106,然后关闭服务器连接。
主进程202可以将所有客户连接通知给一些应用特定代理,而不管相关联的端口号。例如,安全代理208(3)用来通过例如终止任何因响应缺少一些授权标记的连接请求而启动的客户进程,在执行一个其它应用特定代理之前,对所有客户连接请求进行过滤。
图3包括“其它”代理208(f),以示出应用代理208可以包括任何适合特定应用的目前所知或将来开发的代理,包括但不限于,缓存HTTP代理应用、电子邮件应用和文件传输应用。
图4示出在数据缓冲区206中实现以完成通过代理132的数据传输的客户数据结构402(1-n)和代理数据结构404(1-f)的例子。主进程202为每个客户进程204创建并初始化一个客户数据结构402,并且为应用代理208中的每个应用特定代理创建并初始化一个代理数据结构404。
每个客户数据结构402包括客户套接字406、服务器套接字408、连接状态410、输入队列412、输出队列414和应用代理数据416。对于每个客户连接(例如,连接(n)),客户套接字406(n)和服务器套接字408(n)每个分别包括客户109(n)和服务器106的IP地址和端口号,从而唯一地将每个客户数据结构402(n)与一个客户进程204(n)相关联。连接状态410(n)表示连接(n)的当前状态(例如,所接收的完整请求、所接收的响应等)。输入队列412(n)用于存储和累积由与特定数据结构402(n)相关联的客户进程204(n)从客户109(n)接收的数据。输出队列414(n)用来存储由客户进程204(n)转发到客户109(n)的来自应用代理208的数据。应用代理数据416(n)用来存储任何特定于特定应用代理的信息(例如,标志等)每个代理数据结构(例如,404(f))包括客户队列418(f)、客户就绪队列420(f)和待读取(read pending)队列422(f)。客户队列418(f)包括与对应于代理数据结构404(f)的特定应用代理(f)相关联的每个客户进程204的客户进程描述符(例如,指向相关客户数据结构402的指针)。客户就绪队列420(f)包括在其输入队列412中有准备由相关联的应用代理(f)进行处理(例如传输到服务器(106))的数据的每个客户数据结构402的客户进程描述符。待读取队列422(f)包括等待来自服务器106的响应的每个客户进程的客户进程描述符。
本领域的技术人员将理解,上述客户数据结构402和代理数据结构404在性质上是示例性的,并且本发明可以使用其它数据结构。这种替换数据结构的配置必须依赖于所采用特定应用特定代理的功能和结构。
图5是概述本发明的一种用于管理客户和服务器之间的连接的特定方法500的流程图。在第一步骤502,代理132与客户109建立网络连接,然后在第二步骤504,利用网络连接从客户109接收通信(例如,HTTP请求)。下一步,在第三步骤506,代理132与服务器106建立总线连接,然后在第四步骤508,利用总线连接将所接收的客户通信转发给服务器106。然后,第五步骤510,代理132从服务器106接收对客户通信的响应(例如,HTML数据),并且在第六步骤512,利用客户网络连接将响应传输到客户109。最后,在第七步骤514,代理132确定是否存在终止(如,关闭)信号,并且如果存在终止信号,那么方法500结束。如果在第七步骤514不存在终止信号,那么方法500返回到第一步骤502,以与另一客户109建立网络连接。
图6是概述一种执行方法500的第一步骤502(与客户建立网络连接)的特定方法600的流程图。在第一步骤,主进程202连接到网际网络102。然后在第二步骤604,主进程202监听网际网络102上的通信,并且确定是否存在来自客户109的连接请求。如果不存在客户连接请求,那么方法600结束。如果存在来自客户109(n)的连接请求,那么在第三步骤606,主进程202接受来自客户109(n)的连接请求,启动客户进程204(n)以处理该连接,并且初始化数据缓冲区206中的客户数据结构402(n)。下一步,在第四步骤608,主进程202从客户连接请求辨别代理应用标识符(例如,端口号),并且通过将客户进程描述符(例如,指向客户数据结构402(n)的指针)写入到各个代理数据结构404的客户队列418中,根据标识符的值通知一个或多个应用代理208(1-f)。最后,在第五步骤610,主进程202确定是否打开最大客户连接允许数。如果打开最大客户连接数,那么方法600结束。如果没有打开最大客户连接数,那么方法600返回到第二步骤604,监听另一客户请求。
图7是概述一种执行方法500的第二步骤504(从客户109接收通信)的方法700的流程图。在第一步骤702,主进程202确定是否存在任何客户进程204要进行处理以接收数据。如果主进程202已经处理完所有客户进程204(1-n),那么方法700结束。否则,在第二步骤704,主进程202调用第一客户进程204(1)。然后,在第三步骤706,客户进程204(1)检查它的客户连接(例如,TCP缓冲区),确定是否存在来自客户109(1)的任何输入数据。如果没有第一客户进程204(1)的输入数据,那么方法700返回到第一步骤702,以处理任何剩余的客户进程204(2-n)。如果在第三步骤706,客户进程204(1)确定存在来自客户109(1)的输入数据,那么在第四步骤708,客户进程204(1)检查客户数据结构402(1),确定输入队列412(1)是否可用于接收客户数据。如果输入队列412(1)不可用,那么方法700返回到第一步骤702,以处理任何剩余的客户进程204(2-n)。如果在第四步骤708,客户进程204(1)确定输入队列412(1)可用于接收数据,然后在第五步骤710,客户进程204(1)将输入客户数据传输到输入队列412(1)中。然后,在第六步骤712,客户进程204(1)确定累积在输入队列中的数据是否构成完整的请求(即,准备传输到服务器106的数据,例如完整的HTTP请求)。如果该数据不构成完整的请求,那么方法700返回到第一步骤702,以处理任何剩余的客户进程204(2-n)。然而如果在第六步骤712,客户进程204(1)确定输入队列412(1)中的数据构成完整的请求,那么,在第七步骤714,客户进程例如通过设置相应的连接状态410(1),通知代理应用208存在一个完整的请求。然后,方法700返回到第一步骤702,以确定是否存在任何更多要进行处理的客户进程204(2-n)。
图8是概述一种执行方法500的第三步骤506(与服务器106建立总线连接)的方法800的流程图。在第一步骤802,第一个应用代理208(1)从它的代理数据结构404(1)的客户队列418(1)提取第一客户描述符。然后在第二步骤804,代理208(1)检查由第一客户描述符标识的客户数据结构402的连接状态412,确定第一客户在它的输入队列412中是否存在完整的请求。如果连接状态412表示完整的请求,然后在第三步骤806,代理208(1)将该客户描述符加到它的客户就绪队列420(1)。下一步,在第四步骤808,代理208(1)确定是否打开服务器106的最大连接数。如果已经打开最大服务器连接数,那么方法800结束。如果尚未打开最大服务器连接数,那么在第五步骤810,代理208(1)打开与服务器106的总线连接,并且将连接信息写入相关联的客户数据结构402的服务器套接字408。下一步,在第六步骤812,代理208(1)确定是否它已检查它的客户队列418(1)中的最后一个客户描述符。如果已检查最后一个描述符,那么方法800结束。否则,方法800返回到第一步骤802,以提取客户队列418(1)中的下一个客户描述符。如果在第二步骤804,代理208(1)确定尚未接收完整的客户请求,那么方法800直接前进到第六步骤812。一旦处理完代理数据结构404(1)的客户队列418(1)中的所有描述符,对每个其它应用代理208(2-f),重复方法800或类似方法。
图9是概述一种执行方法500的第四步骤508(将客户通信转发给服务器106)的方法900的流程图。在第一步骤902,代理208(1)从它的代理数据结构404(1)的客户就绪队列420(1)接收第一客户描述符。然后,在第二步骤904,代理208(1)检查第一客户的数据结构402的服务器套接字408,确定是否打开服务器连接。如果打开服务器连接,那么在第三步骤906,代理208(1)通过所打开的服务器连接将客户数据(例如,HTTP请求)从客户输入队列412传输到服务器106。下一步,在第四步骤908,代理208(1)将客户描述符从客户就绪队列420(1)移到待读取队列422(1)。然后在第五步骤910,代理208(1)确定是否已检查客户就绪队列420(1)中的最后一个客户。如果没有,那么方法900返回到第一步骤902,以检查客户就绪队列420(1)中的下一客户。如果已检查最后一个客户,那么方法900结束。如果在第二步骤904,代理208(1)确定没有打开特定客户的服务器连接,那么方法900直接前进到第五步骤910,以确定是否已检查客户就绪队列420(1)中的最后一个客户。一旦处理完代理数据结构404(1)的客户就绪队列420(1)中的所有描述符,对每个其它应用代理208(2-f),重复方法900或类似方法。
图10是概述一种执行方法500的第五步骤510(从服务器106接收响应)的方法1000的流程图。在第一步骤1002,代理208(1)确定待读取队列422(1)是否为空,并且如果为空,那么方法1000结束。如果待读取队列422(1)不为空,那么在第二步骤1004,代理208(1)从待读取队列提取第一客户描述符。下一步,在第三步骤1006,代理208(1)检查由用第一客户描述符标识的客户数据结构402的服务器套接字408标识的所打开服务器连接,以确定在那个连接上是否存在任何输入服务器数据(即,对客户请求的响应)。如果在那个连接上不存在输入服务器数据,那么方法1000返回到第二步骤1004,以检查待读取队列中的下一客户。如果存在输入服务器数据,那么在第四步骤1008,代理208(1)检查确定由客户描述符标识的客户数据结构402的输出队列414是否可用。如果输出队列414不可用,那么方法1000返回到第二步骤1004,以检查待读取队列422(1)中的下一客户描述符。如果输出队列414可用,那么在第五步骤1010,代理208(1)将输入服务器数据移到客户数据结构402的输出队列414。下一步,在第六步骤1012,代理208(1)确定服务器数据是否包含“文件结束”指示符。如果否,那么在第七步骤1014,代理208(1)检查确定是否已处理待读取队列422(1)中的最后一个客户描述符。如果是,方法1000结束。如果否,方法1000返回到第二步骤1004,以从待读取队列422(1)读取下一客户描述符。
如果,在第六步骤1012,代理208(1)确定服务器数据包含文件结束指示符,那么方法1000前进到第八步骤1016,其中,代理208(1)从待读取队列删除该客户描述符,然后在第九步骤1018,关闭服务器连接。在第九步骤1018之后,方法1000返回到第七步骤1014。一旦处理完代理数据结构404(1)的待读取队列422(1)中的所有描述符,对每个其它应用代理208(2-f),重复方法1000或类似方法。
图11是概述一种执行方法500的第六步骤512(将数据传输到客户109)的方法1100的流程图。在第一步骤1102,主进程202调用第一客户进程204(1)。然后在第二步骤1104,第一客户进程204(1)确定在客户数据结构402(1)的输出队列414(1)中是否有任何数据。如果在输出队列414(1)中没有任何数据,那么方法1100返回到第一步骤1102,其中,主进程202调用剩余客户进程204(2-n)的下一个进程。然而,如果在第二步骤1104,客户进程204(1)确定在输出队列414(1)中有数据,那么在第三步骤1106,客户进程204(1)确定客户网络连接是否就绪以接收数据。如果客户网络连接没有就绪,那么方法1100返回到第一步骤1102。如果客户网络连接已经就绪,那么在第四步骤1108,客户进程204(1)将输出队列414(1)中的至少部分数据移到客户连接(例如,TCP输出缓冲区)。下一步,在第五步骤1110,主进程202确定是否已调用最后一个客户进程。如果是,则方法1100结束。如果否,则方法1100返回到第一步骤1102,以调用剩余客户进程204(2-n)的下一个进程。
现在已完成对本发明的特定实施例的描述。很多所述特性可以在不脱离本发明的范围的情况下进行替换、修改或省略。例如,适配器108的工作组件(例如处理单元126或代理132)可以直接合并到服务器中,而不是在可卸载适配卡中进行提供。而且,可以用其它数据结构代替所提供的示例性数据结构。另外,在此公布的方法和例程的特定次序不认为是本发明的本质元素。作为另一个例子,主进程202可以配置为在启动时打开预定数目的与服务器106的持久性总线连接,并且管理应用代理208(1-f)对这些连接的使用,从而消除服务器106重复打开和关闭总线连接的需要。对于本领域的技术人员,特别鉴于前述公布,将理解这些和其它与所示特定实施例的偏差。
权利要求
1.一种用于管理至少一个客户和服务器之间的连接的方法,所述方法包括利用网络与所述客户中的一个建立网络连接;利用所述网络连接从所述客户接收通信;利用所述服务器的内部总线,与所述服务器建立总线连接;和利用所述总线连接将所述客户通信转发给所述服务器。
2.如权利要求1所述的方法,其中,从所述客户接收通信的所述步骤包括在缓冲区中存储所述通信。
3.如权利要求2所述的方法,其中,在缓冲区中存储所述通信的所述步骤包括在所述缓冲区中累积一个或多个来自所述客户的单独传输。
4.如权利要求3所述的方法,其中,与所述服务器建立总线连接的所述步骤包括在与所述服务器建立所述总线连接之前,等待直到在所述缓冲区中累积出一个完整的客户请求。
5.如权利要求4所述的方法,进一步包括利用所述总线连接从所述服务器接收对所述客户通信的响应;和利用所述网络连接将所述响应转发给所述客户。
6.如权利要求5所述的方法,其中,从所述服务器接收所述响应的所述步骤包括在缓冲区中存储所述响应。
7.如权利要求6所述的方法,其中,从所述服务器接收所述响应的所述步骤包括在接收到所述响应之后终止所述总线连接。
8.如权利要求1所述的方法,进一步包括利用所述总线连接从所述服务器接收对所述客户通信的响应;和利用所述网络连接将所述响应转发给所述客户。
9.如权利要求8所述的方法,其中,从所述服务器接收所述响应的所述步骤包括在缓冲区中存储所述响应。
10.如权利要求9所述的方法,其中,从所述服务器接收所述响应的所述步骤包括在接收到所述响应之后终止所述总线连接。
11.如权利要求8所述的方法,其中,所述客户通信包括HTTP请求。
12.如权利要求11所述的方法,其中,来自所述服务器的所述响应包括HTTP页面。
13.如权利要求1所述的方法,其中,所述与客户建立网络连接的步骤包括利用所述网络与多个客户中的每个建立单独的网络连接。
14.如权利要求13所述的方法,其中,与所述服务器建立所述总线连接的所述步骤包括利用所述服务器的所述内部总线与所述服务器建立多个连接。
15.如权利要求14所述的方法,其中,最大同时客户连接数超过最大同时服务器连接数。
16.如权利要求1所述的方法,进一步包括在将所述客户通信转发给所述服务器之前,对所述客户执行安全操作。
17.如权利要求1所述的方法,其中接收所述客户通信的所述步骤包括从所述客户通信辨别应用标识符;和将所述客户通信转发给所述服务器的所述步骤包括根据所述应用标识符调用多个代理应用中的一个。
18.如权利要求17所述的方法,其中,所述应用标识符为连接端口号。
19.如权利要求1所述的方法,其中,接收所述客户通信的所述步骤包括接收HTTP请求的至少一部分。
20.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求1的步骤的代码。
21.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求2的步骤的代码。
22.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求3的步骤的代码。
23.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求4的步骤的代码。
24.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要水5的步骤的代码。
25.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求6的步骤的代码。
26.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求7的步骤的代码。
27.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求8的步骤的代码。
28.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求9的步骤的代码。
29.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求10的步骤的代码。
30.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求11的步骤的代码。
31.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求12的步骤的代码。
32.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求13的步骤的代码。
33.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求14的步骤的代码。
34.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求15的步骤的代码。
35.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求16的步骤的代码。
36.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求17的步骤的代码。
37.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求18的步骤的代码。
38.一种计算机可读介质,具有嵌入其中的用于使一个电子设备执行权利要求19的步骤的代码。
39.一种使用内部总线将服务器连接到网络的适配卡,所述适配卡包括网络控制器,用于在所述网络上与客户进行通信;存储器设备,用于存储数据和代码,所述代码包括代理应用;处理单元,连接到所述存储器设备,用于执行所述代码;和协议适配器,连接到所述处理单元,并且用来连接到所述内部总线,以与所述服务器进行通信。
40.如权利要求39所述的适配卡,其中,所述代码进一步包括通信协议栈。
41.如权利要求40所述的适配卡,其中,所述通信协议栈包括标准TCP/IP协议栈。
42.如权利要求39所述的适配卡,其中,所述代理应用包括安全代理。
43.如权利要求39所述的适配卡,其中,所述代理应用包括中转代理。
44.如权利要求39所述的适配卡,其中,所述代理应用包括HTTP代理。
45.如权利要求39所述的适配卡,进一步包括用于存储从所述客户接收的数据的数据缓冲区。
46.如权利要求39所述的适配卡,其中,所述代理应用包括一主进程模块,该模块对从所述客户中的一个接收的连接请求进行响应,并且用来与所述客户建立连接,并且启动新的客户进程模块来维护所述所建立连接。
47.如权利要求46所述的适配卡,其中,所述主进程模块进一步用来将所述所建立连接通知给所述代理应用。
全文摘要
一种用于管理客户(109)和网络服务器(106)之间的连接的适配卡(108),将连接管理的负担从服务器(106)转移出来。适配卡(108)包括带嵌入式代理应用(132)和通信协议栈(134)的存储器(124)、用于执行应用代码的处理单元(126)、用于与网际网络(102)接口的网络控制器(129)和用于与网络服务器(106)的内部总线(120)接口的总线协议桥(128)。代理应用(132)通过相对慢且不可靠的网络连接代表服务器(106)接收客户请求,并且通过快且可靠的总线连接将该请求提交给服务器。
文档编号G06F13/00GK1408089SQ00814155
公开日2003年4月2日 申请日期2000年9月22日 优先权日1999年9月24日
发明者杰克·J·史密斯, 理查德·T·伯赖特, W·斯潘塞·沃利第三, 约恩·B·麦克唐奈, 约翰·A·瓦斯塔诺, 威廉·T·韦瑟福德 申请人:阿坎巴公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1