CN1413325A - 管理具有独立连接和数据缓冲器的服务器和客户机间的连接的系统和方法 - Google Patents
管理具有独立连接和数据缓冲器的服务器和客户机间的连接的系统和方法 Download PDFInfo
- Publication number
- CN1413325A CN1413325A CN00817781A CN00817781A CN1413325A CN 1413325 A CN1413325 A CN 1413325A CN 00817781 A CN00817781 A CN 00817781A CN 00817781 A CN00817781 A CN 00817781A CN 1413325 A CN1413325 A CN 1413325A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- data
- buffer
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/15—Flow control; Congestion control in relation to multipoint traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/18—End to end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/72—Admission control; Resource allocation using reservation actions during connection setup
- H04L47/722—Admission control; Resource allocation using reservation actions during connection setup at the destination endpoint, e.g. reservation of terminal resources or buffer space
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2871—Implementation details of single intermediate entities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
一种管理网络服务器(106)和多个客户端(109)间的连接的适配卡(108),从服务器(106)卸载连接管理负担。该适配卡(108)包括带有嵌入的代理应用程序(132)和通信协议栈(134)的存储器(124)、用于执行应用程序代码的处理单元(126)、用于与互连网络(102)接口的网络控制器(129)、和用于与网络服务器(106)的内部总线(120)接口的总线协议桥(128)。代理应用程序(132)通过较慢的和不可靠的网络连接来为服务器(106)接收客户端请求,并通过快速可靠的总线连接向服务器(106)提交请求。缓冲器(1212)仅在确定数据将在服务器(106)和客户端(109)之间交换后被分配给具体的客户端连接。
Description
相关申请
本申请是共同等待批准的、1999年9月24日提交的美国专利申请序列第09/405,608号的部分延续,该申请具有至少一个与此处有共同之处的发明人,并且被转让给一个共同的受让方。此父申请在此整体并入供参考。
技术领域
本发明一般涉及一网络服务器,具体涉及具有具有大量的客户端连接的作为主机的服务器。更具体来说,本发明涉及具有大量的较慢的客户端的服务器(如因特网网络服务器)。
背景技术
对于诸如因特网网络服务器的网络文件服务器来说,通常作为主机具有大量的较慢的客户端连接。此大量的开放(open)连接为服务器中央处理单元(CPU)仅仅要管理这些开放连接就带来很大的负担。例如,在一加载服务器上管理的开放连接可以消耗30-40%或更多的CPU的运行能力。此负担实质地降低了可以用来执行服务器的主要功能--即向客户端提供数据--的CPU周期的百分比。
对于服务器CPU的连接管理负担使得服务器软件程序的性能降级,并减少了可以在一个时间开放的客户端连接的的最大数量。结果,万维网网站托管公司必须提供另外的、多余的服务器来服务数量增加的客户端。获得和维护另外的网络服务器的成本是较多的。
代理服务器执行一些客户端连接管理功能,是业内所公知的。但是,这样的代理服务器必须与服务器分离放置是业内公知的和通常被接受的,因此它们必须与服务器通过较慢的、易于出错的网络连接来通信,服务器必须管理该连接。请参见例如在此并入供参考的Ari Luotonen的“网络代理服务器(Web Proxy Severs)”(Prentice Hall,1997)。
因此所需要的是一种用于将服务器CPU从连接管理负担中解放出来、因此允许使得服务器可以更有效地作为主机连接数量增加的客户端的系统和方法。
发明内容
本发明通过提供用于管理在多个客户端和服务器之间的连接的一种系统和方法而克服了与现有技术相关的问题。本发明便利了从主机CPU卸载连接管理给插入在网络和主总线之间的适配卡。
该适配卡包括网络控制器、存储装置、处理单元和协议适配器。该存储装置为数据和代码提供存储。该代码包括与网络上的客户端通过网络控制器通信的一代理应用程序,并通过协议适配器与服务器通信,该协议适配器直接与服务器总线连接。
当由处理单元执行的时候,所述代理应用程序通过建立在代理应用程序和客户端之间经由网络的网络连接和通过建立在代理应用和服务器之间经由服务器总线的总线连接而管理客户端连接。另外,存储装置提供数据缓冲,这允许许多网络连接对客户端开放,而较少的总线连接对服务器开放。在一个具体的实施例中,代理(proxy)在缓冲器中存储来自大量的慢速客户端连接的数据,并随后将客户端数据通过快速总线连接提供给服务器。相反,代理经由快速总线接收服务器数据,暂时存储服务器数据,和经由慢速客户端连接向客户端提供服务器数据。
在一个更具体的实施例中,代码包括应用代理使用来与客户端和服务器通信的通信协议栈。在一个更具体的实施例中,所述通信协议栈是传输控制协议/网际协议(TCP/IP)栈。
在一个实施例中,服务器连接仅仅在代理确定已经接收到一个完整的客户端请求后才开放。该服务器连接随后在代理从服务器接收到一个对客户端请求的响应后关闭。可选的是,在系统启动的时候,预订数量的持续服务器连接开放,代理使用这些持续连接来与服务器通信。
代理应用可选地包括多个应用专用代理,其中包括但不限于HTTP代理、安全代理和/或传递代理。在一个具体的实施例中,代理的主处理模块从客户端数据辨别应用标识(如公知的端口号),并调用对应于该标识值的一个或多个应用专用代理。
一种用于分配缓冲器的系统和方法也被公开,其中可以由代理应用程序开放和管理的客户端连接的数量被大大地提高。按照该方法,缓冲器仅仅在确定需要该缓冲器来帮助在客户端和服务器之间的数据传送后被分配到客户端连接。一个具体的方法包括步骤:为服务器建立与客户端的连接;从所述客户端接收通信,从所述通信确定是否将在所述客户端和所述服务器之间交换数据(如所述通信包括一数据请求吗?);和如果要在所述客户端和所述服务器之间交换数据,则向所述客户端分配输入缓冲器。另一个具体的方法包括步骤:为服务器建立与客户端的连接;从所述客户端接收通信;确定是否将从所述服务器接收数据(如是否已经从所述客户端接收到完整的数据请求);和仅仅如果从服务器接收到数据,则分配输出缓冲器。在一个示意实施例中,本发明的方法在用于将服务器与网络连接的适配卡中实现。
附图说明
下面参照附图说明本发明,其中相同的标号表示实际类似的器件:
图1是按照本发明的服务器和适配卡的方框图;
图2是图1的适配卡的工作存储器的方框图,详细地示出了代理模块;
图3是详细示出了图2的应用代理模块的方框图;
图4是示出了存储在图2的数据缓冲器中的至少一些数据的示意数据结构的方框图;
图5是概括按照本发明用于管理在客户端和服务器之间的连接的方法的流程图;
图6是概括用于执行图5的方法的第一步骤的一个方法的流程图;
图7是概括用于执行图5的方法的第二步骤的一个方法的流程图;
图8是概括用于执行图5的方法的第三步骤的一个方法的流程图;
图9是概括用于执行图5的方法的第四步骤的一个方法的流程图;
图10是概括用于执行图5的方法的第五步骤的一个方法的流程图;
图11是概括用于执行图5的方法的第六步骤的一个方法的流程图;
图12是示出了存储在图2的数据缓冲器中的至少一些数据的一替换的客户端数据结构和缓冲方案的方框图;
图13是详细示出了图12的缓冲器状态信息的方框图;
图14是概括用于执行图5的方法的第二步骤的一替换方法的流程图;
图15是概括用于执行图5的方法的第四步骤的一替换方法的流程图;
图16是概括按照本发明的、用于将数据传送到输入缓冲器或输出缓冲器的方法;和
图17是概括按照本发明的、用于将数据从输入缓冲器或输出缓冲器传送出来的方法。
具体实施方式
本发明通过从服务器的主处理器卸载许多连接管理负担并在不同的处理单元上运行一代理应用程序而克服了与现有技术相关的问题。在下面的描述中,给出了很多的具体细节(如具体的通信协议、具体的软件和数据结构等)以便提供对本发明的彻底了解。但是,本领域的技术人员将意识到本发明可以脱离这些具体细节而应用。在其他的情况下,省略了公知的网络部件和程序设计惯例(如通过通信协议栈来建立连接),以便不会没有必要地混淆本发明。
图1是示出了经由物理网络介质104与互连网络102连接的系统100的方框图。在一个具体的实现中,系统100是一个因特网网络服务器,互连网络102是因特网,但是本领域的技术人员会意识到本发明可以以任何类型的网络服务器来实现。
系统100包括文件服务器(如HTTP网络服务器)106和适配卡108。文件服务器106经由适配卡108向在互连网络102上的客户端109(1-n)提供数据并从它们接收数据。适配卡108建立和保持在客户端109(1-n)和适配卡108之间的网络连接,并建立在服务器106和适配卡108之间的总线连接。因此在连接后,适配卡108从客户端109(1-n)为服务器106接收通信、向服务器106提供该通信、为客户端109从服务器106接收响应和向客户端109提供该响应。
服务器106包括非易失性的存储器110、工作存储器112、服务器大量数据存储器114、处理单元116和一个或多个用户输入/输出(I/O)装置118,它们都通过服务器总线120(如PCI总线)互相联系。非易失性存储器110(如只读存储器和/或一个或多个硬盘驱动器)提供数据和代码的存储,它们即使在服务器106掉电时也被保留。工作存储器112(如随机存取存储器)112提供了服务器106的操作存储器,并包括在启动时被装入工作存储器112的可执行的代码(如操作系统)。在其他程序中,工作存储器112包括服务器应用程序121和通信协议栈122。服务器应用程序121包括网络软件应用程序(如FTP、HTTP等),这允许服务器106作为网络服务器。通信协议栈122是标准协议栈(如TCP/IP),它帮助通过互连网络与其他机器的通信。标准协议栈是业内公知的。例如参见在此并入供参考的W.Richard Stevens的“图解TCP/IP(TCP/IP Illustrated)”卷1(Addison-Wesley,1994)。服务器大量数据存储器114提供用于数据(如HTML网页、图形文件等)的数据存储(一个或多个硬盘驱动器),所述数据被服务器提供给与互连网络102连接的客户端109(1-n)。处理单元116执行在工作存储器112中的指令以使得服务器106执行它的主要功能(如向客户端提供数据和从客户端接收数据)。I/O器件118一般包括键盘、监视器和/或有利于用户与服务器106相互作用的其他这样的器件。上述的每个部件一般可以在诸如因特网网络服务器的网络服务器中找到。
适配卡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装入工作存储器124。可选的是,代理132和协议栈134可以从一个或多个替换的来源装入,包括但不限于非易失性存储器110或服务器106的服务器大量数据存储器114。当被处理单元126执行的时候,代理132建立和管理在适配器108与服务器106之间和适配器108与客户端109之间的上述连接。
在本发明的这个具体实施例中,协议栈122和134是标准(如TCP/IP)协议栈。在适配器108中使用标准通信协议栈有利于已经存在于绝大多数网络服务器中的标准通信软件(如协议栈122)的使用。但是,本领域的技术人员将意识到该具体元件(以及其他所述的元件,即使未清楚地说明)不是本发明的必不可少的元件。例如,本发明可以利用定制的通信软件(如在服务器应用121和协议栈134或代理132之间的直接通信)在服务器106和适配器108中应用。而且,则本发明的具体实施例中,此元件可以通过使代理132直接访问服务器106的资源(如服务器大量数据存储器114)而被省略。
适配卡108通过在总线协议桥126和服务器总线120之间的总线连接136与服务器106连接。在此具体实施例中,总线连接136是典型的总线扩展插槽,例如PCI插槽。但是本领域的技术人员会意识到本发明可以通过其他类型的总线连接来实现,包括但不限于ISA插槽、USB端口、串行端口或并行端口。总线连接136有利于在代理132和服务器应用121之间的高速度、大数据包大小、相对无误差(与网络连接相比)的通信,极大地减少了服务器106的处理单元116的连接管理负担。总之,代理132(运行在处理单元116上)通过慢的、易产生误差的网络连接与客户端109通信,并随后通过高速总线连接136为客户端109与服务器应用121通信。
图2是详细示出代理132和协议栈134的工作存储器的一方框图。本领域的技术人员将意识到在代理132的各种软件模块被示出为相互连接的功能块的同时,软件模块实际上是存储在工作存储器124中的可执行代码的块,它们可以在被处理单元126执行的时候相互通信(图1)。
代理132包括一主处理模块202、多个客户端处理模块204(1-n)、数据缓冲器206和一应用代理模块208。主处理模块提供代理132的各种模块的全面的控制和协调。响应于来自互连网络102上的客户端109(图1)的连接请求,主处理202接收连接请求、初始化在数据缓冲器206中对于那个客户端连接的数据结构、启动一个新的独立的客户端连接处理204以处理连接、并随后通告应用代理208已经建立了具体的客户端连接。每个客户端处理204处理一个这样的客户端连接。应用代理208建立和管理与服务器106的总线连接。数据缓冲器206提供对于从客户端109接收并要发向服务器106的数据的存储、提供对于从服务器106接收并要发向客户端109的数据的存储和提供对于与所建立的客户端和/或服务器连接相关的连接数据的存储。
通信协议栈134是TCP/IP栈,包括插口(socket)层210、TCP层212、IP层214和包括网络驱动器216和服务器总线驱动器218的器件层。协议栈134的每个独立层的功能是业内公知的,因此不在此讨论。在代理132的各种模块和服务器应用121之间的连接通过插口层210、TCP层212、IP层124和服务器总线驱动器216而建立。
图3是示出应用代理模块208的方框图,包括多个应用专用代理208(1-f),其中包括一超文本传输协议(HTTP)代理208(1)、一传递代理208(2)、安全代理208(3)和“其他”代理208(f)。主处理202通过配置应用专用代理208(1-f)的一个或多个以服务客户端连接而向应用代理208通告已经建立的客户端连接。配置应用专用代理(如HTTP代理208(1))的一个方法是在应用专用代理的处理队列中输入客户端处理标识符。
主处理202确定哪个应用专用代理来从包含在客户端连接请求中的端口号完成具体的客户端处理。标准的实施是利用公知的端口号来识别具体的网络应用和/或协议(如文件传输协议(FTP)、HTTP等)。例如,端口号80对应于HTTP连接请求。主处理202因此向HTTP代理208(1)通告响应于指示端口80的连接请求而启动的所有客户端处理204。
HTTP代理208(1)监视被每个被通告的客户端处理。当HTTP代理208(1)确定客户端处理(如204(n))的完整的HTTP请求被接收和存储到数据缓冲器206中的时候,HTTP代理208(1)开放与服务器的连接、向服务器传送该请求、从服务器接收响应、在数据缓冲器206中存储响应和随后关闭服务器连接。服务器响应随后被通过相关的客户端处理204(n)发送到客户端109(n)。
当主处理202接收到不对应于任何其他应用专用代理的一带有端口号的连接请求时,主处理202通告传递(pass-through)代理208(2)。传递代理208(2)仅仅开放服务器连接,将从相关的客户端处理204接收的数据从数据缓冲器206传送到服务器106,然后关闭该服务器连接。
主处理202可以向一些应用专用代理通告所有的客户端连接,而不管相关的端口号如何。例如,安全代理208(3)在完成其他应用专用代理之一之前,通过例如终止响应于缺少一些授权标记的连接请求而启动的任何客户端处理来屏蔽(screen)所有的客户端连接请求。
“其他”代理208(f)被包括在图3中以示出应用代理208可以包括对于具体应用所需的任何当前已知的或未来开发的代理,包括但不限于超高速缓存HTTP代理应用、电子邮件应用和文件传输应用。
图4示出了客户端数据结构402(1-n)和代理数据结构404(1-f)的示例,它在数据缓冲器206中实现以完成通过代理132的数据传输。主处理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)被用于存储来自应用代理208并要通过客户端处理204(n)发向客户端109(n)的数据。应用代理数据416(n)被提供来存储对于一具体应用代理专有的任何信息(如标志等)。
每个代理数据结构(如404(f))包括客户端队列418(f)、客户端就绪队列420(f)和读取暂挂(pending)队列422(f)。客户端队列418(f)包括针对与具体的应用代理(f)相关的每个客户端处理204的客户端处理描述符(如指向相关的客户端数据结构402的指针),其中代理数据结构404(f)与具体的应用代理(f)相对应。客户端就绪队列420(f)包括对于每个客户端数据结构402的一个客户端处理描述符,其中客户端数据结构402在其准备被相关的应用代理(f)处理(如传输到服务器106)的输入队列412中具有数据。读取暂挂队列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从该客户端连接请求中识别代理应用标识符(如端口号),并通过向客户端队列418写入客户端处理描述符(如指向客户端数据结构402(n)的指针)而向一个或多个应用代理208(1-f)——取决于标识符的数值——通告各自的代理数据结构404。最后,在第五步骤610中,主处理202确定是否开放最多的允许的客户端连接。如果最多数量的客户端连接不是开放的,则方法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)。但是如果,客户端处理204(1)在第六步骤712确定在输入队列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)确定没有收到一个完整的客户端请求,则方法直接进行到第六步骤812。一旦已经处理了在代理数据结构404(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)将来自客户端输入队列412的客户端数据(如HTTP请求)通过该开放的服务器连接向服务器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)向客户端连接(如TCP输出缓冲器)移动至少一部分在输出队列414(1)中的数据。下一步,在第五步骤1110,主处理202确定是否已经调用了最后一个客户端处理。如果如此,则方法1100结束。否则,则方法1100返回第一步骤1102来调用下一个剩余客户端处理203(2-n)。
图12是示出了可以在数据缓冲器206中实现以便大大提高可以由代理132保持的同时客户端连接的数量的一个替代客户端数据结构的方框图。具体上,可以被保持的同时客户端连接的数量取决于可以获得的用于缓冲在客户端109和服务器106之间流动的数据的数据缓冲器206的存储器容量。一些应用(如“伙伴列单(buddy list)”应用)开放与服务器的客户端连接,但是很少与服务器交换数据。其他应用(如网络浏览器)开放与服务器的客户端连接并从服务器请求数据(如网页),但是在接收到数据后不关闭该连接。因此,在任何给定的时间,大量的客户端连接可能开放,占用缓冲器空间但是不主动与服务器交换数据。将数据缓冲器空间的分配与客户端数据结构相脱离实质地增加了可以开放的同时客户端连接的数量,因为有价值的存储器空间没有被这样的空闲客户端连接所浪费。
除了输入队列412(1-n)和输出队列(414(1-n))被分别替换为输入缓冲器标识符1204(1-n)和输出缓冲器标识符1206(1-n),被脱离的客户端数据结构1202(1-n)与客户端数据结构402(1-n)类似。输入缓冲器标识符1204和输出缓冲器标识符1206存储将客户端数据结构1202连接到被分配给与客户端数据结构1202相关的具体客户端处理204的缓冲器的指针。当主处理模块202分支客户端数据结构1202(1-n)的时候,缺省值(如所有比特被设置为“1”)被装入输入缓冲器标识符1204和输出缓冲器标识符1206,以指示没有分配数据缓冲器。对于穿过客户端109和服务器106之间的数据的存储由包括缓冲器状态信息部分1210和多个通用用途的缓冲器1212(0-Z)的缓冲器池(buffer pool)1208提供。缓冲器状态部分1210存储与缓冲器1212(0-Z)的分配和使用相关的信息,这将在下面详细描述。每个缓冲器1212(0-Z)是预定大小(如2KB)的通用用途的缓冲器。每个缓冲器1212(0-Z)的终端存储位置1214(0-Z)被保留给指针,这些指针有助于另个或多个缓冲器1212(0-Z)的连接以产生一更大容量的缓冲器。
图13是详细示出缓冲器状态信息部分1210的方框图。缓冲器状态部分1210包括多个寄存器1302(0-Z),每个与缓冲器1212(0-Z)的对应的一个相关。每个寄存器1302(0-Z)分别包括开始地址存储位置1304(0-Z)、有效数据长度存储位置1306(0-Z)、和状态标志1308(0-Z)。开始地址存储位置1304存储指向与具体寄存器1302相关的缓冲器1212的起点的指针。有效数据长度存储位置1306存储两个数值,一个指示有多少数据已经被写入相关的缓冲器1212(数据被写入的数值),一个指示有多少数据已经被传送出缓冲器1212(数据被读取的数值)。状态标志1308指示是否相关的缓冲器1212已经被分配到一客户端数据结构1202或可以获得用于分配。
图14是概括执行方法500的第二步骤504(经由客户端连接接收请求)的一个替代方法1400的流程图,该方法利用了客户端数据结构1202(1-n)和缓冲器池1208。在第一步骤1402中,主处理202确定是否有任何客户端处理204要被处理来接收数据。如果主处理202已经处理了所有的客户端处理204(1-n),那么方法1400结束。如果没有,则在第二步骤1404中,主处理202调用第一客户端处理204(1)。然后在第三步骤1406中,客户端处理204(1)查看它的客户端连接(如TCP缓冲器)以确定是否有一个数据请求从客户端109(1)进入。如果对于第一客户端处理204(1)没有进入的数据,则方法1400返回第一步骤1402来处理任何剩余的客户端处理204(2-n)。如果在第三步骤1406,客户端处理204(1)确定有从客户端109(1)输入的数据,则在第四步骤1408,客户端处理204(1)查看输入缓冲器标识符1204(1)来确定是否缓冲器1212(0-z)之一已经被作为一个输入缓冲器分配给客户端处理204(1)。如果有一个输入缓冲器被分配,则在第五步骤1410,客户端处理204(1)将客户端数据移向被分配的输入缓冲器。然后在第六步骤1412,客户端处理204(1)确定是否在所分配的输入缓冲器中累加的数据构成一个完整的请求(即准备好要传输到服务器106的数据,例如一个完整的HTTP请求)。如果该数据未构成一个完整的请求。则方法1400返回第一步骤1402来处理任何剩余的客户端处理204(2-n)。但是如果客户端处理204(1)在第六步骤1412确定在输入缓冲器中的数据构成了一个完整的请求,则在第七步骤1414,客户端处理204(1)通过例如设置如此指示的连接状态1210(1)而向代理应用208通告存在一个完整的请求。然后,方法1400返回第一步骤1402以确定是否存在任何更多的客户端处理204(2-n)要处理。
如果在第四步骤1408,客户端处理204确定没有输入缓冲器被分配到客户端处理204(1),则在第八步骤1416,客户端处理204(1)查看缓冲器状态信息1210的状态标志1308以确定是否可以获得缓冲器1212(0-Z)之一。如果可以获得缓冲器1212(0-Z)之一,则在第九步骤1418,客户端处理204(1)通过向客户端数据结构1202(1)的输入缓冲器标识符1204(1)写入指向可获得的缓冲器的状态寄存器1302的指针、并通过设置在缓冲器的寄存器1302中的状态标志1308以指示该缓冲器已经被分配而将可获得的缓冲器1212分配给它自己。下一步,方法1400进行到第五步骤1410,在此客户端处理204(1)将数据请求移到所分配的输入缓冲器1212中。
除了直到确定客户端通信包括至少一部分数据请求没有缓冲器资源被分配为输入缓冲器,方法1400与方法700类似。大量的空闲客户端连接可以因此被建立和保持,而不使用任何有价值的缓冲器空间。因此可以获得缓冲器空间来支持代理132对于数量大大增加的活动(交换数据)连接的管理。
在此使用的术语“数据请求”意欲指由客户端109发送到服务器106的任何数据。术语数据请求应当被宽范围地解释为包括包括来自客户端109的对于服务器106的数据的请求(如文件下载请求),以及从客户端109向服务器106的数据的提交(文件上载)。但是术语“数据请求”不包括连接管理数据(如连接请求)。因此,按照方法1400,客户端处理204(1-n)仅仅在需要缓冲器1212(0-Z)的时候分配它们,这与每次客户端连接被开放相反。
图15是概括执行方法500的第四步骤508(经由总线连接向服务器提供客户端请求)的一个替代方法1500的流程图。在第一步骤1502,代理208(1)从它的代理数据结构404(1)的客户端就绪队列420(1)检索第一客户端描述符。然后,在第二步骤1504,代理208(1)查看第一客户端的数据结构1202的服务器插口1209以确定是否服务器连接是开放的。如果服务器连接是开放的,则在第三步骤1506,代理208(1)查看第一客户端的数据结构1202的输出缓冲器标识符1206以确定是否缓冲器1212(0-Z)之一已经被分配给第一客户端数据结构作为输出缓冲器。如果代理208(1)确定已经分配了一个输出缓冲器,则在第四步骤1508,代理208(1)从分配给第一客户端的输入缓冲器通过开放的服务器连接向服务器106传输客户端数据请求(如HTTP请求)。下一步,在第五步骤1510,代理208(1)将客户端描述符从客户端就绪队列420(1)向读取暂挂队列422(1)移动。然后在第六步骤1512,代理208(1)确定是否已经查看了在客户端就绪队列420(1)中的最后一个客户端。如果没有,则方法1500返回第一步骤1502以查看在客户端就绪队列420(1)中的下一个客户端。如果已经查看了最后一个客户端,则方法1500结束。如果在第二步骤1504,代理208(1)确定对于一个具体的客户端没有服务器连接开放,则方法1500直接进行到第六步骤1510以确定是否已经查看了在客户端就绪队列420(1)中的最后一个客户端。一旦已经处理了在代理数据结构404(1)的客户端就绪队列420(1)中的所有描述符,则对于每个其他应用代理208(2-f)重复方法1500或类似的方法。
如果在第三步骤1506,代理208(1)确定没有输出缓冲器分配给第一客户端的数据结构1202,则在第七步骤1514,代理208(1)搜索缓冲器池1208的缓冲器状态信息部分1210来确定是否可以获得任何缓冲器1212(0-Z)用于分配。如果可以获得缓冲器1212(0-Z)之一用于分配,则在第八步骤1516,代理208(1) 通过向第一客户端数据结构1202的输入缓冲器标识符1204写入指向可获得的缓冲器的状态寄存器1302的指针、并通过设置在缓冲器的状态寄存器1302中的状态标志1308以指示该缓冲器已经被分配,而向第一客户端的数据结构1202分配可以获得的缓冲器1212(0-Z)之一。然后方法1500进行到第四步骤1508。如果没有缓冲器1212(0-Z)可以获得,则方法1500返回第一步骤1502以处理在客户端就绪队列420(1)中的下一个客户端。
除了直到在服务器连接开放之后缓冲器1212(0-Z)不分配作为输出缓冲器(用于存储服务器响应)以外,方法1500与方法900类似。但是用于分配输出缓冲器的具体的触发事件没有被当作本发明的一个不可缺少的元素。例如输出缓冲器可以被较快地分配(如当代理208在方法800的第二步骤(图8)确定已经接收了完整的客户端请求的时候),或者它们可以较迟地分配(如在代理208在方法1000的第三步骤1006(图10)确定有服务器数据可以获得)。只要缓冲器在当存在它们将在分配后短时间被使用的增加的可能性的时间被分配,则缓冲器的效率被提高。
图16是概括用于向被分配的输入或输出缓冲器写入数据的方法1600的流程图。方法1600将针对向被分配的输入缓冲器写入数据而被说明,但是它也同样良好地适用于向输出缓冲器写入服务器数据。在第一步骤1602中,客户端处理(客户端处理204(1))使用输入缓冲器标识符1204(1)来搜索对于所分配的缓冲器1212的缓冲器状态信息(开始地址1304和有效数据的长度1306)。然后,在第二步骤1604中,客户端处理204(1)向所分配的缓冲器1212发送可以获得的客户端数据的第一块。客户端处理204(1)通过将有效数据的长度1306(数据被写入的值)加到缓冲器的开始地址1302而计算对于该数据块的存储地址。然后,在第三步骤1606,客户端处理204(1)通过将有效数据的长度1306(数据被写入的值)增加写入到所分配的缓冲器1212的数据块的大小而更新缓冲器状态信息。下一步,在第四步骤1608,客户端处理204(1)确定是否所传输的数据块包括数据结尾指示符,并且如果如此则方法1600结束。
如果在第四步骤1608,客户端处理204(1)确定所传输的数据块不包括文件结尾指示符,则在第五步骤1610,客户端处理204(1)通过将有效数据的更新长度1306与已知的缓冲器1212的大小相比较而确定是否所分配的缓冲器是满的。如果数据缓冲器1212不满,则方法1600返回第二步骤1604来发送下一个数据块。但是,如果所分配的数据缓冲器1212是满的,则在第六步骤1612,客户端处理204(1)搜索缓冲器状态信息1210来确定是否可以获得任何缓冲器1212(0-Z)。如果在缓冲器池1208中没有未分配的缓冲器,则方法1600结束,但是如果客户端处理204(1)在缓冲器池1208中发现未分配的缓冲器,则在第八步骤1616,客户端处理204(1)将该未分配的缓冲器与先前分配的输入缓冲器相连。客户端处理204(1)是通过在第一缓冲器的最后一个位置1214存储指向第二个被分配的缓冲器的状态寄存器1302的指针、更新有效数据的长度1306和设置爱新缓冲器的状态寄存器1302中的状态标志1308来指示新缓冲器被分配来连接缓冲器的。在第八步骤1616连接输入缓冲器后,方法1600返回第二步骤1604来发送下一个数据块。方法1600继续直到所有的可获得的数据被写入输入缓冲器、或者直到所有的缓冲器1212(0-Z)被分配。
图17是概括将数据从所分配的输入或输出缓冲器发出的方法1700的流程图。方法1700针对从所分配的输出缓冲器将服务器数据发出,但是也同样良好地适用于从输入缓冲器将客户端数据发出。在第一步骤1702,客户端处理204使用输出缓冲器标识符1206(1)来检索对于所分配的输出缓冲器1212的缓冲器状态信息。然后,在第二步骤1704,客户端处理204将被存储的服务器数据的第一块从所分配的输出缓冲器1212向客户端109发送。在第三步骤1706,客户端处理204通过将有效数据的数据被读出值1306增加所传输的数据块大小而更新缓冲器状态信息1210。下一步,在第四步骤1708,客户端处理204通过比较有效数据的长度1306的数据被写入和数据被读出值而确定是否输出缓冲器是空的。如果数据被读出值等与数据被写入值或缓冲器1212的大小,则缓冲器1212是空的。如果缓冲器1212是空的,则在第五步骤1710,客户端处理204确定是否该空缓冲器于任何另外的缓冲器1212相连。如果有效数据的长度1306的数据被写入值小于缓冲器1212的已知大小,则没有连接的缓冲器。如果没有连接的缓冲器,则在第六步骤1712,客户端处理204通过改变它的状态标志1308而指示它未被分配和重新设置有效数据的长度1306而释放缓冲器1212,然后方法1700结束。
如果在第五步骤1710,客户端处理204确定所述空缓冲器与另外的缓冲器相连,则在第七步骤1714,客户端处理204断开所述空缓冲器与仍然包含数据的任何缓冲器的连接,具体如下。首先,客户端处理204将指针从空缓冲器的终端位置1214复制到客户端数据结构1202的输出缓冲器标识符1206。所复制的指针指向下一个连接的缓冲器的状态寄存器1302,取代了空缓冲器的状态寄存器。下一步,客户端处理204将有效数据值的长度1306从空缓冲器的状态寄存器1302复制到下一个连接的缓冲器的状态寄存器1302,并然后将数据被写入值和数据被读出值减少与一个缓冲器1212的容量相等的数量。在断开缓冲器的连接后,客户端处理204在第八步骤1716释放空缓冲器,与上面相对第六步骤1712所述相同。在空缓冲器在第八步骤1716被释放后,方法1700返回第二步骤1704来开始从下一个连接的缓冲器传出数据。
对本发明的具体实施例的说明现在完毕。许多所描述的特征在不脱离本发明的范围的情况下可以被替代、改变或省略。例如,适配器108的操作部件(如处理单元126和代理132)可以直接并入服务器中而不提供可移动的适配卡。而且,替代的数据结构可以用于取代所提供的示范数据结构。另外,在此公开的方法和程序的具体顺序不被考虑为本发明的不可缺少的元件。作为另一个示例,主处理202可以被配置为在启动的时候开放预定数量的与服务器106的持续总线连接,并管理应用代理208(1-f)对那些连接的使用,因此消除了对于服务器106重复开闭总线连接的必要,具体在考虑到前述的公开的情况下,这些和其他与所示的具体实施例的偏离(变化)对于本领域的技术人员来说是明显的。
Claims (50)
1.一种用于管理服务器和至少一个客户端之间的连接的方法,所述方法包括:
通过网络建立与所述客户端之一的网络连接;
通过所述网络连接从所述客户端接收通信;
确定是否所述通信包括数据请求;
如果所述通信包括数据请求,则向所述客户端连接分配输入缓冲器;
在所述分配的缓冲器空间中存储所述的数据请求;
通过所述服务器的内部总线建立与所述服务器的总线连接;和
通过所述总线连接向所述服务器提供所述数据请求。
2.按照权利要求1的方法,其中所述建立与所述服务器的总线连接的步骤包括:分配输出缓冲器,用于在接收到所述服务器对所述数据请求的相应时,对其进行存储。
3.按照权利要求2的方法,其中所述向所述服务器转发所述数据请求的步骤包括释放所述输入缓冲器。
4.按照权利要求3的方法,还包括:
从所述服务器接收对所述数据请求的响应;和
在所述输出缓冲器中存储所述的数据请求。
5.按照权利要求4的方法,其中所述在所述输出缓冲器中存储所述响应的步骤包括:
确定是否所述输出缓冲器已满;和
如果所述输出缓冲器已满,则向所述输出缓冲器分配另外的缓冲器空间。
6.按照权利要求5的方法,其中所述向所述输出缓冲器分配另外的缓冲器空间的步骤包括:将所述的输出缓冲器与来自可获得的缓冲器池的至少一个其他缓冲器连接。
7.按照权利要求6的方法,还包括:
将所述服务器响应通过所述网络连接向所述客户端转发;和
在每个所述被连接的缓冲器空的时候释放它们。
8.按照权利要求5的方法,其中所述向所述输出缓冲器分配另外的缓冲器空间的步骤被重复直到接收和存储了整个的服务器响应。
9.按照权利要求4的方法,还包括:
通过所述网络连接向所述客户端转发所述服务器响应;和
释放所述输出缓冲器。
10.按照权利要求1的方法,其中:
所述分配输入缓冲器的步骤包括确定是否输入缓冲器已经被提前分配给客户端连接;和
如果已经提前分配了输入缓冲器,则不分配另一个输入缓冲器。
11.按照权利要求10的方法,其中所述在所述被分配的输入缓冲器中存储所述数据请求的步骤包括:
确定是否所述输入缓冲器是满的;和
如果所述输入缓冲器是满的,则分配另外的缓冲器空间给所述输入缓冲器。
12.按照权利要求11的方法,其中所述分配另外的缓冲器空间给所述输入缓冲器的步骤被重复直到接收和存储了整个的数据请求。
13.按照权利要求11的方法,其中所述分配另外的缓冲器空间给所述输入缓冲器的步骤包括将所述输入缓冲器与来自可获得的缓冲器池的至少一个其他缓冲器连接。
14.按照权利要求13的方法,其中所述向所述服务器转发所述数据请求的步骤包括在每个所述被连接的缓冲器空的时候释放它们。
15.一种用于管理服务器和至少一个客户端之间的连接的方法,所述方法包括:
通过网络建立与所述客户端之一的网络连接;
通过所述网络连接从所述客户端接收通信;
确定是否从所述客户端接收到完整的数据请求;
仅仅在已经接收到完整的数据请求后,分配输出缓冲器来存储来自所述服务器的响应;
通过所述服务器的内部总线建立与所述服务器的总线连接;和
通过所述总线连接向所述服务器提供所述数据请求。
16.按照权利要求15的方法,还包括:
从所述服务器接收对所述数据请求的响应;和
在所述输出缓冲器中存储所述的数据请求。
17.按照权利要求16的方法,其中在所述输出缓冲器中存储所述响应的步骤包括:
确定是否所述输出缓冲器已满;和
如果所述输出缓冲器已满,则向所述输出缓冲器分配另外的缓冲器空间。
18.按照权利要求17的方法,其中向所述输出缓冲器分配另外的缓冲器空间的步骤包括将所述输出缓冲器与来自可获得的缓冲器池的至少一个其他缓冲器连接。
19.按照权利要求18的方法,还包括:
将所述的服务器响应通过所述的网络连接向所述客户端转发;和
在每个所述被连接的缓冲器空的时候释放它们。
20.按照权利要求17的方法,其中向所述输出缓冲器分配另外的缓冲器空间的步骤被重复直到接收和存储了整个的服务器响应。
21.按照权利要求16的方法,还包括:
通过所述网络连接向所述客户端转发所述服务器响应;和
释放所述输出缓冲器。
22.一种计算机可读介质,包含用于使得一电子装置执行权利要求1的步骤的代码。
23.一种计算机可读介质,包含用于使得一电子装置执行权利要求2的步骤的代码。
24.一种计算机可读介质,包含用于使得一电子装置执行权利要求3的步骤的代码。
25.一种计算机可读介质,包含用于使得一电子装置执行权利要求4的步骤的代码。
26.一种计算机可读介质,包含用于使得一电子装置执行权利要求5的步骤的代码。
27.一种计算机可读介质,包含用于使得一电子装置执行权利要求6的步骤的代码。
28.一种计算机可读介质,包含用于使得一电子装置执行权利要求7的步骤的代码。
29.一种计算机可读介质,包含用于使得一电子装置执行权利要求8的步骤的代码。
30.一种计算机可读介质,包含用于使得一电子装置执行权利要求9的步骤的代码。
31.一种计算机可读介质,包含用于使得一电子装置执行权利要求10的步骤的代码。
32.一种计算机可读介质,包含用于使得一电子装置执行权利要求11的步骤的代码。
33.一种计算机可读介质,包含用于使得一电子装置执行权利要求12的步骤的代码。
34.一种计算机可读介质,包含用于使得一电子装置执行权利要求13的步骤的代码。
35.一种计算机可读介质,包含用于使得一电子装置执行权利要求14的步骤的代码。
36.一种计算机可读介质,包含用于使得一电子装置执行权利要求15的步骤的代码。
37.一种计算机可读介质,包含用于使得一电子装置执行权利要求16的步骤的代码。
38.一种计算机可读介质,包含用于使得一电子装置执行权利要求17的步骤的代码。
39.一种计算机可读介质,包含用于使得一电子装置执行权利要求18的步骤的代码。
40.一种计算机可读介质,包含用于使得一电子装置执行权利要求19的步骤的代码。
41.一种计算机可读介质,包含用于使得一电子装置执行权利要求20的步骤的代码。
42.一种计算机可读介质,包含用于使得一电子装置执行权利要求21的步骤的代码。
43.用于将带有内部总线的服务器连接到网络的适配卡,所述适配卡包括:
网络控制器,用于在所述网络上与客户端通信;
存储装置,用于存储数据和代码,所述存储装置包括多个缓冲器,所述代码包括代理应用程序,该代理应用程序响应于来自所述客户端的通信,并仅仅在如果通过所述客户端连接接收的通信包括数据请求时分配输入缓冲器给客户端连接;
处理单元,与所述存储装置相连,用于执行所述代码;和
协议适配器,与所述处理单元连接,并与所述内部总线连接,用于与所述服务器通信。
44.按照权利要求43的适配卡,其中所述代理应用程序还仅仅在经由所述客户端连接接收到完整的数据请求后向所述客户端连接分配输出缓冲器,所述输出缓冲器用于存储来自所述服务器的对所述数据请求的响应。
45.按照权利要求44的适配卡,其中所述代理应用程序还向所述服务器转发所述完整的数据请求,并随后释放所述输入缓冲器。
46.按照权利要求45的适配卡,其中所述代理应用程序响应于来自所述服务器的对所述数据请求的响应的接收而进一步:
在所述输出缓冲器中存储所述响应;
经由所述客户端连接向客户端转发所述响应;和
在所述响应已经被转发给所述客户端后释放所述输出缓冲器。
47.按照权利要求44的适配卡,其中所述代理应用程序可以获得所述多个缓冲器的每个,来用作所述输入或所述输出缓冲器。
48.按照权利要求43的适配卡,其中所述代理应用程序还向所述服务器转发所述数据请求,并随后释放所述输入缓冲器。
49.用于将带有内部总线的服务器连接到网络的适配卡,所述适配卡包括:
网络控制器,用于在所述网络上与客户端通信;
存储装置,用于存储数据和代码,所述存储装置包括多个缓冲器,所述代码包括代理应用程序,所述代理应用程序响应于来自所述客户端的通信,并仅仅在如果通过所述客户端连接接收到完整数据请求的时候分配输出缓冲器给客户端连接;
处理单元,与所述存储装置相连,用于执行所述代码;和
协议适配器,与所述处理单元连接,并与所述内部总线连接,用于与所述服务器通信。
50.按照权利要求49的适配卡,其中所述代理应用程序响应于来自所述服务器的对所述数据请求的响应的接收而进一步:
在所述输出缓冲器中存储所述响应;
经由所述客户端连接向客户端转发所述响应;和
在所述响应已经被转发给所述客户端后释放所述输出缓冲器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/440,016 US6308238B1 (en) | 1999-09-24 | 1999-11-12 | System and method for managing connections between clients and a server with independent connection and data buffers |
US09/440,016 | 1999-11-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1413325A true CN1413325A (zh) | 2003-04-23 |
CN1171153C CN1171153C (zh) | 2004-10-13 |
Family
ID=23747089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008177813A Expired - Fee Related CN1171153C (zh) | 1999-11-12 | 2000-11-13 | 管理服务器和客户机间的连接的系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6308238B1 (zh) |
EP (1) | EP1228438B1 (zh) |
JP (1) | JP2003514302A (zh) |
CN (1) | CN1171153C (zh) |
AU (1) | AU1606901A (zh) |
CA (1) | CA2391010C (zh) |
WO (1) | WO2001035233A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100351767C (zh) * | 2004-11-15 | 2007-11-28 | 国际商业机器公司 | 适配器读取和写入系统存储器的方法和系统 |
CN100456667C (zh) * | 2003-08-29 | 2009-01-28 | 华为技术有限公司 | 安全接入数据传输系统及方法 |
CN101184057B (zh) * | 2007-10-24 | 2011-08-24 | 中兴通讯股份有限公司 | 在ims系统中传递事件信息的系统及方法 |
CN102780764A (zh) * | 2012-06-28 | 2012-11-14 | 北京奇虎科技有限公司 | 一种代理通信系统及方法 |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6877036B1 (en) | 1999-09-24 | 2005-04-05 | Akamba Corporation | System and method for managing connections between a client and a server |
US6718282B1 (en) * | 1999-10-20 | 2004-04-06 | Cisco Technology, Inc. | Fault tolerant client-server environment |
US7506358B1 (en) * | 1999-12-09 | 2009-03-17 | Cisco Technology, Inc. | Method and apparatus supporting network communications through a firewall |
US6854018B1 (en) * | 2000-03-20 | 2005-02-08 | Nec Corporation | System and method for intelligent web content fetch and delivery of any whole and partial undelivered objects in ascending order of object size |
US6859836B2 (en) * | 2000-03-29 | 2005-02-22 | Massoud Alibakhsh | System and method for providing look ahead socket generation |
US7149816B1 (en) * | 2000-05-16 | 2006-12-12 | Lucent Technologies Inc. | System and method for peer-level communication with a network interface card |
US6823387B1 (en) * | 2000-06-23 | 2004-11-23 | Microsoft Corporation | System and method for enhancing a server's ability to withstand a “SYN flood” denial of service attack |
KR100798504B1 (ko) * | 2000-07-27 | 2008-01-28 | 비이에이 시스템즈 인코포레이티드 | 요청의 집중 및 부하조정을 위한 시스템 및 방법 |
US7278142B2 (en) | 2000-08-24 | 2007-10-02 | Veritas Operating Corporation | Dynamic computing environment using remotely allocable resources |
US7065637B1 (en) | 2000-08-24 | 2006-06-20 | Veritas Operating Corporating | System for configuration of dynamic computing environments using a visual interface |
US7082521B1 (en) | 2000-08-24 | 2006-07-25 | Veritas Operating Corporation | User interface for dynamic computing environment using allocateable resources |
US7043724B2 (en) | 2000-09-14 | 2006-05-09 | Veritas Operating Corporation | System and services for handling computing environments as documents |
US7801978B1 (en) * | 2000-10-18 | 2010-09-21 | Citrix Systems, Inc. | Apparatus, method and computer program product for efficiently pooling connections between clients and servers |
US20020055983A1 (en) * | 2000-11-03 | 2002-05-09 | The Board Of Regents Of The University Of Nebraska | Computer server having non-client-specific persistent connections |
US20020055982A1 (en) * | 2000-11-03 | 2002-05-09 | The Board Of Regents Of The University Of Nebraska | Controlled server loading using L4 dispatching |
US20030046394A1 (en) * | 2000-11-03 | 2003-03-06 | Steve Goddard | System and method for an application space server cluster |
US7027412B2 (en) * | 2000-11-10 | 2006-04-11 | Veritas Operating Corporation | System for dynamic provisioning of secure, scalable, and extensible networked computer environments |
US8631103B1 (en) | 2000-11-10 | 2014-01-14 | Symantec Operating Corporation | Web-based administration of remote computing environments via signals sent via the internet |
GB2382898B (en) * | 2000-12-29 | 2005-06-29 | Zarlink Semiconductor Ltd | A method of managing data |
US20020116644A1 (en) * | 2001-01-30 | 2002-08-22 | Galea Secured Networks Inc. | Adapter card for wirespeed security treatment of communications traffic |
EP1233346A1 (de) * | 2001-02-14 | 2002-08-21 | Micronas GmbH | Netzwerk-Co-Prozessor für Kraftfahrzeuge |
US7003572B1 (en) * | 2001-02-28 | 2006-02-21 | Packeteer, Inc. | System and method for efficiently forwarding client requests from a proxy server in a TCP/IP computing environment |
US7197536B2 (en) * | 2001-04-30 | 2007-03-27 | International Business Machines Corporation | Primitive communication mechanism for adjacent nodes in a clustered computer system |
US7143131B1 (en) * | 2001-05-04 | 2006-11-28 | Microsoft Corporation | Transmission control protocol |
US7036006B2 (en) | 2001-05-17 | 2006-04-25 | Veritas Operating Corporation | System to provide computing as a product using dynamic computing environments |
US7299269B2 (en) * | 2001-06-19 | 2007-11-20 | Sun Microsystems, Inc. | Dynamically allocating data buffers to a data structure based on buffer fullness frequency |
KR20030034534A (ko) * | 2001-10-26 | 2003-05-09 | 주식회사 케이티 | Ip 네트워크에서 서비스별 트래픽 분석을 위한 포트번호선택방법 |
US8090866B1 (en) * | 2002-01-18 | 2012-01-03 | Cisco Technology, Inc. | TCP proxy connection management in a gigabit environment |
US7266622B2 (en) * | 2002-03-25 | 2007-09-04 | International Business Machines Corporation | Method, computer program product, and system for automatic application buffering |
JP3828444B2 (ja) * | 2002-03-26 | 2006-10-04 | 株式会社日立製作所 | データ通信中継装置及びシステム |
US6910042B2 (en) * | 2002-05-30 | 2005-06-21 | International Business Machines Corporation | System and method for partial ordering service capabilities in an e-marketplace hub |
AU2002311585A1 (en) * | 2002-06-06 | 2003-12-22 | Crescendo Networks Ltd. | System and method for connecting multiple slow connections to multiple fast connections |
US7596599B1 (en) | 2002-07-31 | 2009-09-29 | Facetime Communications, Inc. | Management capabilities for real-time messaging networks |
US7899867B1 (en) | 2002-07-31 | 2011-03-01 | FaceTime Communications, Inc, | SpIM blocking and user approval techniques for real-time messaging networks |
US7152111B2 (en) * | 2002-08-15 | 2006-12-19 | Digi International Inc. | Method and apparatus for a client connection manager |
US7457845B2 (en) * | 2002-08-23 | 2008-11-25 | Broadcom Corporation | Method and system for TCP/IP using generic buffers for non-posting TCP applications |
US7069428B2 (en) * | 2002-09-10 | 2006-06-27 | Veritas Operating Corporation | System for managing boot-up of target computers |
US7058797B2 (en) * | 2002-09-10 | 2006-06-06 | Veritas Operating Corporation | Use of off-motherboard resources in a computer system |
US6986033B2 (en) * | 2002-09-10 | 2006-01-10 | Veritas Operating Corporation | System for automated boot from disk image |
JP2004145392A (ja) * | 2002-10-21 | 2004-05-20 | Kddi Corp | 動画像ファイル配信装置 |
US7219153B1 (en) | 2002-12-02 | 2007-05-15 | Cisco Technology, Inc. | Methods and apparatus for distributing content |
KR100449806B1 (ko) * | 2002-12-23 | 2004-09-22 | 한국전자통신연구원 | 네트워크를 통해 스트리밍 데이터를 고속으로 송수신하기위한 네트워크-스토리지 연결 장치 |
KR100497524B1 (ko) | 2003-01-29 | 2005-07-01 | 삼성전자주식회사 | 근거리 무선 통신 장치 및 그 핸드오프 처리방법 |
JP4597488B2 (ja) * | 2003-03-31 | 2010-12-15 | 株式会社日立製作所 | プログラム配置方法及びその実施システム並びにその処理プログラム |
US7299492B2 (en) * | 2003-06-12 | 2007-11-20 | International Business Machines Corporation | Multi-level multi-user web services security system and method |
US7707320B2 (en) * | 2003-09-05 | 2010-04-27 | Qualcomm Incorporated | Communication buffer manager and method therefor |
KR100991891B1 (ko) * | 2003-10-22 | 2010-11-04 | 인터내셔널 비지네스 머신즈 코포레이션 | 접속 관리 방법 및 시스템과 컴퓨터 판독가능 저장 매체 |
US8244880B2 (en) * | 2003-10-22 | 2012-08-14 | International Business Machines Corporation | Connection management method, system, and program product |
US20050149529A1 (en) * | 2004-01-02 | 2005-07-07 | Andi Gutmans | Efficient handling of download requests |
US8260893B1 (en) | 2004-07-06 | 2012-09-04 | Symantec Operating Corporation | Method and system for automated management of information technology |
US7673004B1 (en) | 2004-08-31 | 2010-03-02 | Face Time Communications, Inc. | Method and apparatus for secure IM communications using an IM module |
US7693166B2 (en) | 2005-02-17 | 2010-04-06 | Nec Corporation | Method and apparatus for transmitting data to network and method and apparatus for receiving data from network |
US20070005828A1 (en) * | 2005-06-30 | 2007-01-04 | Nimrod Diamant | Interrupts support for the KCS manageability interface |
US20070248085A1 (en) * | 2005-11-12 | 2007-10-25 | Cranite Systems | Method and apparatus for managing hardware address resolution |
US8041946B2 (en) * | 2006-02-28 | 2011-10-18 | The Boeing Company | Data transfer between networks operating at different security levels |
WO2007125942A1 (ja) * | 2006-04-26 | 2007-11-08 | Nippon Telegraph And Telephone Corporation | 負荷制御装置およびその方法 |
US20090132715A1 (en) * | 2007-11-19 | 2009-05-21 | Utstarcom, Inc. | System and method for conducting secure ip transaction sessions with persistence |
US8117420B2 (en) * | 2008-08-07 | 2012-02-14 | Qualcomm Incorporated | Buffer management structure with selective flush |
US8406133B2 (en) * | 2009-02-24 | 2013-03-26 | Silver Spring Networks, Inc. | System and method of regulating a packet rate to optimize traffic in a network |
JP5395824B2 (ja) * | 2011-02-16 | 2014-01-22 | 株式会社東芝 | メモリシステム |
US11100058B2 (en) | 2017-09-06 | 2021-08-24 | Oracle International Corporation | System and method for connection concentration in a database environment |
US11323393B2 (en) * | 2018-01-25 | 2022-05-03 | Nvidia Corporation | System and method for improving network storage accessibility |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0476752A (ja) * | 1990-07-19 | 1992-03-11 | Nec Corp | バッファ制御方式 |
JPH04326227A (ja) * | 1991-04-25 | 1992-11-16 | Nippon Telegr & Teleph Corp <Ntt> | 高速回線制御装置 |
JPH05225094A (ja) * | 1992-02-10 | 1993-09-03 | Nec Corp | 通信制御装置システムにおけるバッファプール制御方式 |
FR2699706B1 (fr) | 1992-12-22 | 1995-02-24 | Bull Sa | Système de transmission de données entre un bus d'ordinateur et un réseau. |
US5550981A (en) * | 1994-06-21 | 1996-08-27 | At&T Global Information Solutions Company | Dynamic binding of network identities to locally-meaningful identities in computer networks |
US5678007A (en) * | 1994-11-22 | 1997-10-14 | Microsoft Corporation | Method and apparatus for supporting multiple outstanding network requests on a single connection |
US5896508A (en) * | 1995-02-23 | 1999-04-20 | Advanced Micro Devices, Inc. | Hub-network adapter device for a file server personal computer |
JPH08314779A (ja) * | 1995-05-16 | 1996-11-29 | Hitachi Ltd | サーバーシステム |
US5898830A (en) | 1996-10-17 | 1999-04-27 | Network Engineering Software | Firewall providing enhanced network security and user transparency |
US5754774A (en) | 1996-02-15 | 1998-05-19 | International Business Machine Corp. | Client/server communication system |
US5832512A (en) | 1996-04-15 | 1998-11-03 | Sun Microsystems, Inc. | Apparatus and method for file number re-mapping for disconnected operations in a client-server network |
US5918013A (en) * | 1996-06-03 | 1999-06-29 | Webtv Networks, Inc. | Method of transcoding documents in a network environment using a proxy server |
US5867650A (en) * | 1996-07-10 | 1999-02-02 | Microsoft Corporation | Out-of-band data transmission |
JP3217002B2 (ja) * | 1996-11-19 | 2001-10-09 | 株式会社日立製作所 | デジタルスタジオ装置およびその制御方法 |
US5852717A (en) * | 1996-11-20 | 1998-12-22 | Shiva Corporation | Performance optimizations for computer networks utilizing HTTP |
US6182141B1 (en) | 1996-12-20 | 2001-01-30 | Intel Corporation | Transparent proxy server |
US6185625B1 (en) * | 1996-12-20 | 2001-02-06 | Intel Corporation | Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object |
US5974496A (en) * | 1997-01-02 | 1999-10-26 | Ncr Corporation | System for transferring diverse data objects between a mass storage device and a network via an internal bus on a network card |
US6122514A (en) * | 1997-01-03 | 2000-09-19 | Cellport Systems, Inc. | Communications channel selection |
US5941988A (en) | 1997-01-27 | 1999-08-24 | International Business Machines Corporation | Session and transport layer proxies via TCP glue |
US6138162A (en) * | 1997-02-11 | 2000-10-24 | Pointcast, Inc. | Method and apparatus for configuring a client to redirect requests to a caching proxy server based on a category ID with the request |
US5935249A (en) | 1997-02-26 | 1999-08-10 | Sun Microsystems, Inc. | Mechanism for embedding network based control systems in a local network interface device |
US6119161A (en) * | 1997-02-28 | 2000-09-12 | International Business Machines Corporation | Managing connection requests in a dialup computer network |
US6237031B1 (en) * | 1997-03-25 | 2001-05-22 | Intel Corporation | System for dynamically controlling a network proxy |
US6104716A (en) * | 1997-03-28 | 2000-08-15 | International Business Machines Corporation | Method and apparatus for lightweight secure communication tunneling over the internet |
US5924116A (en) | 1997-04-02 | 1999-07-13 | International Business Machines Corporation | Collaborative caching of a requested object by a lower level node as a function of the caching status of the object at a higher level node |
JP3173418B2 (ja) * | 1997-04-18 | 2001-06-04 | 日本電気株式会社 | ストリーム再生制御方式及びプログラムを記録した機械読み取り可能な記録媒体 |
US5872919A (en) | 1997-05-07 | 1999-02-16 | Advanced Micro Devices, Inc. | Computer communication network having a packet processor with an execution unit which is variably configured from a programmable state machine and logic |
US6072483A (en) * | 1997-06-02 | 2000-06-06 | Sony Corporation | Active frame scroll interface |
JP2998701B2 (ja) * | 1997-06-27 | 2000-01-11 | 日本電気株式会社 | データ通信におけるサーバアクセス方式 |
US6222533B1 (en) * | 1997-08-25 | 2001-04-24 | I2 Technologies, Inc. | System and process having a universal adapter framework and providing a global user interface and global messaging bus |
US6035324A (en) * | 1997-08-28 | 2000-03-07 | International Business Machines Corporation | Client-side asynchronous form management |
US6247050B1 (en) * | 1997-09-12 | 2001-06-12 | Intel Corporation | System for collecting and displaying performance improvement information for a computer |
JPH11149450A (ja) * | 1997-11-19 | 1999-06-02 | Nec Corp | トランザクションエージェントシステム |
US6088803A (en) * | 1997-12-30 | 2000-07-11 | Intel Corporation | System for virus-checking network data during download to a client device |
US6101328A (en) * | 1997-12-31 | 2000-08-08 | Intel Corporation | System for preventing multiple instances of the same dynamic executable module |
US6822955B1 (en) * | 1998-01-22 | 2004-11-23 | Nortel Networks Limited | Proxy server for TCP/IP network address portability |
US6115755A (en) * | 1998-04-09 | 2000-09-05 | Novaweb Technologies, Inc. | Integrated apparatus for interfacing several computers to the internet through a single connection |
JPH11306053A (ja) * | 1998-04-24 | 1999-11-05 | Hitachi Ltd | データ転送方法およびそれを実施する情報処理装置 |
-
1999
- 1999-11-12 US US09/440,016 patent/US6308238B1/en not_active Expired - Lifetime
-
2000
- 2000-11-13 JP JP2001536700A patent/JP2003514302A/ja active Pending
- 2000-11-13 CN CNB008177813A patent/CN1171153C/zh not_active Expired - Fee Related
- 2000-11-13 CA CA002391010A patent/CA2391010C/en not_active Expired - Fee Related
- 2000-11-13 EP EP00978625.2A patent/EP1228438B1/en not_active Expired - Lifetime
- 2000-11-13 AU AU16069/01A patent/AU1606901A/en not_active Abandoned
- 2000-11-13 WO PCT/US2000/031243 patent/WO2001035233A1/en active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100456667C (zh) * | 2003-08-29 | 2009-01-28 | 华为技术有限公司 | 安全接入数据传输系统及方法 |
CN100351767C (zh) * | 2004-11-15 | 2007-11-28 | 国际商业机器公司 | 适配器读取和写入系统存储器的方法和系统 |
CN101184057B (zh) * | 2007-10-24 | 2011-08-24 | 中兴通讯股份有限公司 | 在ims系统中传递事件信息的系统及方法 |
CN102780764A (zh) * | 2012-06-28 | 2012-11-14 | 北京奇虎科技有限公司 | 一种代理通信系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CA2391010C (en) | 2008-11-04 |
EP1228438A4 (en) | 2006-08-02 |
CN1171153C (zh) | 2004-10-13 |
CA2391010A1 (en) | 2001-05-17 |
EP1228438A1 (en) | 2002-08-07 |
WO2001035233A1 (en) | 2001-05-17 |
JP2003514302A (ja) | 2003-04-15 |
EP1228438B1 (en) | 2013-07-03 |
US6308238B1 (en) | 2001-10-23 |
AU1606901A (en) | 2001-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1171153C (zh) | 管理服务器和客户机间的连接的系统和方法 | |
US6801927B1 (en) | Network adaptor card with reverse proxy and cache and method implemented therewith | |
US6877036B1 (en) | System and method for managing connections between a client and a server | |
CN1221898C (zh) | 刷新网络代理高速缓存服务器对象的系统和方法 | |
US20180375782A1 (en) | Data buffering | |
US20070038637A1 (en) | Optimized network cache for virus scanning by examining the magic bytes of a file | |
US7647436B1 (en) | Method and apparatus to interface an offload engine network interface with a host machine | |
CN1681248A (zh) | 服务器与客户端间传送用于数据同步的数据的方法与系统 | |
US6957219B1 (en) | System and method of pipeline data access to remote data | |
CN1859325A (zh) | 基于链表的进程间消息传递方法 | |
WO2006123420A1 (ja) | データ処理システム | |
CN1878181A (zh) | 用于管理dns请求的方法和数据处理系统 | |
CN1662885A (zh) | 用于信息流的卸载处理的方法和装置 | |
CN1881944A (zh) | 改进型分布式核心操作系统 | |
US6785714B1 (en) | System and method for employing slot level locking of a cache | |
US7552232B2 (en) | Speculative method and system for rapid data communications | |
US20060029088A1 (en) | Reducing latency in a channel adapter by accelerated I/O control block processing | |
US20080077655A1 (en) | Intelligent Pre-fetching using Compound Operations | |
US6826634B2 (en) | Extended message block for network device drivers | |
CN1866828A (zh) | 一种数据处理系统及其方法 | |
KR19990072483A (ko) | 애플리케이션프로그램과네트워크장치구동기프로그램사이의통신방법및시스템 | |
WO2002035366A1 (en) | System and method for managing connections between clients and a server using cache memory to store server responses | |
US20030182397A1 (en) | Vector-based sending of web content | |
CN1434402A (zh) | 基于url的远程图象文件描述服务的方法和系统 | |
CN1967532A (zh) | 企业应用构架中利用缓冲技术调用数据的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20041013 Termination date: 20151113 |
|
EXPY | Termination of patent right or utility model |