Abstract:
A computer network including a client, at least one caching proxy server, and a destination computer is described. In a specific embodiment, a client computer may request particular types of information by including a category ID in request messages. In order to reduce network traffic, the destination computer may redirect the client&#39;s request messages to a caching proxy server, which is preferably located behind the same firewall or gateway as the client. The destination computer may initiate the redirection of client computer requests after receiving an HTTP proxy --  GET request message from the client. The destination computer sends a message to the caching proxy server specifying the categories of request that the client computer will direct to the caching proxy server. The proxy server forwards this message to the client computer. The client computer uses the information contained in this message to direct requests messages to a specific caching proxy server based on a category ID.

Description:
COPYRIGHT NOTIFICATION 
     Portions of this patent application contain materials that are subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document, or the patent disclosure, as it appears in the Patent and Trademark Office. 
     1. Field of the Invention 
     This invention generally relates to improvements in computer systems, and more specifically, to redirecting client communication with a destination server via an intermediate proxy server that are connected via a network. 
     2. Background of the Invention 
     An internet is a group of networks and individual computers communicating via a common protocol. The Internet is a world-wide &#34;network of networks&#34; that use the TCP/IP (Transmission Control Protocol/Internet Protocol) protocol suite for communications. TCP/IP is a set of protocols and programs used to interconnect computer networks and to route traffic among different types of computers. These protocols describe allowable data formats, error handling, message passing, and communication standards. Computer systems that use TCP/IP speak a common language, regardless of hardware or operating system differences. 
     Part of the popularity of the TCP/IP protocol suite is due to its ability to be implemented on top of a variety of communications channels and lower-level protocols such as T1 and X.25, Ethernet, and RS-232-controlled serial lines. Most sites use Ethernet connections at local area networks to connect hosts and client systems, and then connect that network via a Ti line to a regional network (i.e., a regional TCP/IP backbone) that connects to other organizational networks and backbones. Sites customarily have one connection to the Internet, but large sites often have two or more connections. Modem speeds are increasing as new communications standards are being approved, thus versions of TCP/IP that operate over the switched telephone network are becoming more popular. Many sites and individuals use PPP (Point-to-Point Protocol) and SLIP (Serial Line IP), to connect networks and workstations to other networks using the switched telephone network. 
     Many large networks conform to these protocols, including the Internet. Thousands of computers at universities, government agencies, and corporations are connected to a network that follows the TCP/IP protocols. Any machine on the Internet can communicate with any other. Machines on the Internet are referred to as hosts or nodes and are defined by their Internet (or IP) address. 
     The Internet was created initially to help foster communication among government-sponsored researchers. Throughout the 1980&#39;s, the Internet grew steadily to include educational institutions, government agencies, commercial organizations, and international organizations. In the 1990&#39;s, the Internet has undergone phenomenal growth, with connections increasing faster than any other network ever created (including the telephone network). Many millions of users are now connected to the Internet, with roughly half being business users. The Internet is being used as the basis for the National Information Infrastructure (NII). 
     Many organizations are in the process of connecting to the Internet to take advantage of Internet services and resources. Businesses and agencies are now using the Internet or considering Internet access for a variety of purposes, including exchanging e-mail, distributing agency information to the public, and conducting research. Many organizations are connecting their existing internal local area networks to the Internet so that local area network workstations can have direct access to Internet services. 
     Internet connectivity can offer enormous advantages, however security needs to be a major consideration when planning an Internet connection. There are significant security risks associated with the Internet that often are not obvious to new (and existing) users. In particular, intruder activity, as well as vulnerabilities that could assist intruder activity, are widespread. Intruder activity is difficult to predict and at times can be difficult to discover and correct. Many organizations already have lost productive time and money in dealing with intruder activity; some organizations have had their reputations suffer as a result of intruder activity at their sites being publicized. 
     A firewall system is one technique that has proven highly effective for improving the overall level of site security. A firewall system is a collection of systems and routers logically placed at a site&#39;s central connection to a network. A firewall system can be a router, a personal computer, a host, or a collection of hosts, set up specifically to shield a site or intranet from protocols and services that can be abused from hosts outside the intranet. A firewall system is usually located at a higher-level gateway, such as a site&#39;s connection to the Internet; however firewall systems can be located at lower-level gateways to provide protection for some smaller collection of hosts or intranets. A firewall forces all network connections to pass through the gateway, where they can be examined and evaluated, and provides other services such as advanced authentication measures to replace simple passwords. The firewall may then restrict access to or from selected systems, or block certain services, or provide other security features. The main purpose of a firewall system is to control access to or from a protected network (i.e., a site). It implements a network access policy by forcing connections to pass through the firewall, where they can be examined and evaluated. 
     The general reasoning behind firewall usage is that, without a firewall, an intranet&#39;s systems expose themselves to inherently insecure services and to probes and attacks from hosts elsewhere on the network. A firewall provides numerous advantages to sites by helping to increase protection from vulnerable services, controlled access to site systems, concentrated security, enhanced privacy, logging and statistics on network use, and misuse policy enforcement. In a firewall-less environment, network security relies totally on host security and all hosts must, in a sense, cooperate to achieve a uniformly high level of security. The larger the intranet, the less manageable it is to maintain all hosts at the same level of security. As mistakes and lapses in security become more common, break-ins occur, not as the result of complex attacks, but because of simple errors in configuration and inadequate passwords. 
     A firewall provides the means for implementing and enforcing a network access policy. In effect, a firewall provides access control to users and services. Thus, a network access policy can be enforced by a firewall. One problem is that Intranets that have a significant number of clients deployed often overwhelm the throughput capacity of the firewall. 
     A proxy server in general is a process that provides a cache of items available on other servers which are presumably slower or more expensive to access. 
     More specifically, a caching proxy server is used for a WorldWide Web server which accepts uniform resource locators (URLs) with a particular prefix. When it receives a request for such a URL, it strips off the prefix and looks for the resulting URL in its local cache. If found, it returns the document immediately, otherwise it fetches it from the remote server on the Internet, saves a copy in the cache and returns it to the requester. The cache will usually have an expiry algorithm which flushes documents according to their age, size, and access history. Caching proxy servers are often implemented to alleviate the problem of firewalls or proxy gateway servers that are overwhelmed by requests. 
     In comparison, a proxy gateway server is a computer and associated software which will pass on a request for a URL from a Internet browser to an outside server and return the results. This provides clients on Intranets a trusted agent that can access the Internet on their behalf. The proxy gateway is transparent to the client. A proxy gateway is a server that simply forwards requests from clients or other proxies on to another server or proxy. The second server or proxy sees the original proxy as just another HTTP client. When the proxy receives a response to the forwarded request, it simply returns it to the client. An Internet gateway proxy services HTTP requests by translating them into protocols other than HTTP. The reply sent from the remote server to the gateway is likewise translated into HTTP before being forwarded to the user agent. 
     In HTTP messaging, proxies use the header of the request to indicate the intermediate steps between the user agent and the server (on requests) and between the origin server and the client (on responses). The header is intended to trace transport problems and to avoid request loops. 
     Furthermore, agents can be implemented on clients or servers which are connected to the Internet. In the client-server model, an agent is the part of the system that performs information preparation and exchange on behalf of a client or server. Especially in the phrase &#34;intelligent agent,&#34; it implies an automatic process which can communicate with other agents to perform some collective task on behalf of one or more humans. The term agent is used to describe an automatic computer process that performs an action, such as information preparation or exchange, with no human intervention involved. Examples of Internet agents are brokers, wanderers, spiders, worms and viruses. Agents can facilitate work and coordinate tasks among machines and other agents. 
     Data is transmitted across the Internet in packets. A packet is a logical grouping of information that includes a header, control information, and a body that usually contains user data. A message may be segmented into a number of packets. When sent from one user to another via the Internet, individual packets may go by different routes and the packets are reassembled into the original message before reaching the destination. This contrasts with circuit switching in which the two users are actually connected by an end-to-end circuit, E.G. telephone network. Packet is the common name for a layer 3 PDU (Physical Data Unit: A unit of information at any given level of the 7-layer OSI protocol stack. Layer 3 PDUs are often called packets while layer 3 PDUs are often called frames) IP datagrams are often called packets. 
     Packets can be intercepted at any point within a packet-based network unless special security measures are in place. Capturing packets in this manner is known as network &#34;snooping,&#34; &#34;packet sniffing,&#34; and &#34;promiscuous monitoring.&#34; Sniffers are either hardware or software devices that can intercept and capture electronic messages not addressed to it, but rather addressed to another address on a network. Sniffers are a network monitoring tool that can capture data packets and decode them to show protocol data. 
     Sniffers typically have the capability of capturing every packet on a network and of decoding all seven layers of the OSI protocol model; the physical layer, the datalink layer, the network layer, the transport layer, the session layer, the presentation layer, the application layer. Capture frame selection can be based on several different filters such as protocol content at lower levels, node addresses, destination class, and pattern matching. 
     Network sniffers typically display network traffic information and performance statistics in real time, and in user-selectable formats. Numeric station addresses are translated to symbolic names or manufacturer ID names. Network activities measured include buffer use, frames accepted, and Kbytes accepted. Counters for activities specific to particular networks may be implemented. Network activity is expressed as frames/second, Kbytes/second, or percentage of network bandwidth utilization. Data collection by a sniffer may be output to printer or stored to disk in either print-file or spread-sheet format. 
     In addition to the problem of firewalls overwhelmed by requests, distribution of internal communication via an organization&#39;s Intranet is often cumbersome and inconvenient to the users of client computers and the administrators of the Intranets. 
     The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. HTTP has been in use by the World-Wide Web since 1990. An HTTP client submits requests to an HTTP server. The server responds by returning a response code and any appropriate data indicated by the original request. HTTP allows an open-ended set of methods that indicate the purpose of a request. A method indicates the operation that the client requests the server to perform. HTTP builds on the discipline of reference provided by the Uniform Resource Identifier (URI), as a location (URL) or name (URN), for indicating the resource to which a method is to be applied. Messages are passed in a format similar to that used by Internet mail as defined by the Multipurpose Internet Mail Extensions (MIME). HTTP is also used as a generic protocol for communication between user agents and proxies/gateways to other Internet systems, including those supported by the SMTP, NNTP, FTP, Gopher, and WAIS protocols. In this way, HTTP allows basic hypermedia access to resources available from diverse applications. 
     While the set of HTTP methods is open-ended, the HTTP methods GET and HEAD must be supported by all servers that are HTTP-compliant. All other methods are optional. The GET method retrieves information identified by the Request-URI. 
     The Request-URI is a Uniform Resource Identifier and identifies the resource upon which to apply the request. 
     
         Request-URI=&#34;*&#34; |absoluteURI|abs.sub.-- path 
    
     The three options for Request-URI are dependent on the nature of the request. 
     (1) The asterisk &#34;*&#34; means that the request does not apply to a particular resource, but to the server itself, and is only allowed when the method used does not necessarily apply to a resource. One example would be 
     
         OPTIONS * HTTP/1.1 
    
     (2) The absoluteURI form is required when the request is being made to a proxy. The proxy is requested to forward the request or service it from a valid cache, and return the response. Note that the proxy may forward the request on to another proxy or directly to the server specified by the absoluteURI. In order to avoid request loops, a proxy must be able to recognize all of its server names, including any aliases, local variations, and the numeric IP address. An example Request would be: 
     
         GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 
    
     All HTTP-compliant servers must accept the absolute URI form in requests, even though HTTP-compliant clients will only generate them in requests to proxies. 
     (3) The absolute path (&#34;abs --  path&#34;) of the URI must be transmitted where a resource on an origin server or gateway is identified. 
     The semantics of the GET method change to a &#34;conditional GET&#34; if the request message includes an If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field as described by IETF publication at http://ds.internic.net/rfc/rfc2068.txt. A conditional GET method requests that data be transferred only under the circumstances described by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network usage by allowing cached entities to be refreshed without requiring multiple requests or transferring data already held by the client. 
     The above method of specifying GETs is problematic in the complexity of the variations of the GET method. 
     SUMMARY OF THE INVENTION 
     The foregoing problems of firewalls overwhelmed by client requests, unwieldy HTTP GET request interfaces to support caching on proxy servers, and inconvenient methods of distributing internal organization communication is overcome by caching frequently requested data on a caching proxy server connected between an intranet&#39;s firewall and the intranet clients via a network and that is retrieved by a cache-specific request initiated by storing data specific to the organization on a content-server connected between an intranet&#39;s firewall and the intranet clients via a network. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The above and further advantages of the invention may be better understood by referring to the following description, in conjunction with the accompanying drawings, in which: 
     FIG. 1 illustrates a typical hardware configuration of a computer in accordance with the subject invention; 
     FIG. 2 illustrates the topology of an intranet containing a caching proxy server and firewall connected to the Internet in accordance with a preferred embodiment; 
     FIGS. 3A and 3B represent tables which show which GET requests of each category id are processed by the six caching proxy agents in accordance with a preferred embodiment; 
     FIG. 4 illustrates the flow-of-control and sequence of events between the client, the caching proxy server and the destination server in regards to a &#34;proxy --  GET&#34; request in accordance with a preferred embodiment; 
     FIG. 5A illustrates formats of HTTP GET requests by a client to a caching proxy server or a destination computer in accordance with a preferred embodiment; 
     FIG. 5B illustrates the flow-control and sequence of events between the client, the caching proxy server and the destination server in regards to a GET request by the client in accordance with a preferred embodiment; 
     FIGS. 6A and 6B illustrate the flow-of-control of the Proxycache agent on the caching proxy server in accordance with a preferred embodiment; 
     FIG. 7 illustrates the format of the 0.dc file in accordance with a preferred embodiment; 
     FIG. 8 illustrates the format of the corp.dat file in accordance with a preferred embodiment; 
     FIGS. 9A and 9B illustrates the flow-of-control of the retrieval of data Adstats data in accordance with a preferred embodiment; 
     FIG. 10 illustrates the flow-of-control of establishing communication between a client and the Content Server in accordance with a preferred embodiment; and 
     FIGS. 11A and 11B illustrate the flow-of-control of the retrieval of data by a client from the Content server in accordance with a preferred embodiment. 
    
    
     DETAILED DESCRIPTION 
     A representative hardware environment is depicted in FIG. 1, which illustrates a typical hardware configuration of a computer 100 in accordance with the subject invention. The computer 100 is controlled by a central processing unit 102 (which may be a conventional microprocessor) and a number of other units, all interconnected via a system bus 108, are provided to accomplish specific tasks. Although a particular computer may only have some of the units illustrated in FIG. 1, or may have additional components not shown, most server computers will include at least the units shown. 
     Specifically, computer 100 shown in FIG. 1 includes a random access memory (RAM) 106 for temporary storage of information, a read only memory (ROM) 104 for permanent storage of the computer&#39;s configuration and basic operating commands, and an input/output (I/O) adapter 110 for connecting peripheral or network devices, such as a disk unit 113 and printer 114, to the bus 108, via cables 115 or peripheral bus 112, respectively. A user interface adapter 116 is also provided for connecting input devices, such as a keyboard 120, and other known interface devices, including mice, speakers, and microphones to the bus 108. Visual output is provided by a display adapter 118 which connects the bus 108 to a display device 122, such as a video monitor. The computer has resident thereon and is controlled and coordinated by operating system software such as the SUN Solaris, Windows NT, or JavaOS operating system. 
     FIG. 2 illustrates the topology of an intranet containing a caching proxy server and firewall connected to the Internet in accordance with a preferred embodiment. Client computers, typically PC-based workstations or UNIX-based workstations 200 communicate to a caching proxy server 210 having a cache of data 220 which communicates to a firewall 230 via a local area network or intranet 240. The intranet 240 communicates to the Internet 250, which communicates to a destination computer 260 having a database 270. 
     When a caching proxy server 210 having a cache 220 is installed into the intranet 240 and is in operation, six agents will operate on the caching proxy server 210, a corporate agent, an adstats agent, a proxycache agent, a passthrough agent, and an administration agent. All HTTP GET requests from client computers 200 are served by assigned agents on the caching proxy server 210. 
     When a caching proxy server 210 having a cache 220 is installed into the intranet 240 and is in operation, this event is received and stored by the destination computer 260. To begin operation of the caching proxy server 210, a &#34;proxy --  GET&#34; request is sent to the destination computer 260 having a database 270. 
     The destination computer 260 transmits a table client 200 through to the caching proxy server 210 that identifies which caching proxy server agent will serve a GET request. 
     FIGS. 3A and 3B represent tables which identify which GET requests of each category id are processed by the six caching proxy agents in accordance with a preferred embodiment. When a GET request is received by the caching proxy server, the category id of the request is examined to determine which agent on the caching proxy server should serve the request. This operation is different than the function of a sniffer because a sniffer examines the protocol content at lower levels, node addresses, destination class. The caching proxy server is examining a different element of the packet, the category id. The caching proxy server is also different from a sniffer in that the caching proxy server intercepts the request and uses the category id to determine which process should server the request, while a sniffer never intercepts the requests. 
     The Private Corporate Agent 300 serves requests of the Content Server, which is a private internal communication facility. The AdStats Agent 310 serves requests to pass advertisement statistical information to a destination computer. The PassThrough Agent 320 serves requests that are to be passed through to a destination computer, as well as any requests that are not recognized by the caching proxy server. The Redirection Agent 330 serves all &#34;proxy --  GET&#34; requests to redirect subsequent client request to another caching proxy server. The Administration Agent 340 serves all system administrative functions, such as deleting the caching proxy server cache. The ProxyCache Agent 350 serves requests to retrieve specific information from the cache in the caching proxy server. 
     An illustrative embodiment of the invention in a network computing environment is one in which a &#34;Redirection&#34; software agent on a caching proxy server fulfills &#34;proxy --  GET&#34; requests from a client by transmitting a list of proxy server(s) within the Intranet of the client that will serve the client, a &#34;Proxycache&#34; agent that will fulfill HTTP GET client requests by either retrieving cached data or passing the request to a &#34;Passthrough&#34; agent that will pass the client request through to the destination server, an &#34;Administration&#34; agent that will process administrative requests from clients, and a &#34;Corporate&#34; agent that will store and distribute internal organization information. 
     FIG. 4 illustrates the flow-of-control and sequence of events between the client, the caching proxy server and the destination server in regards to a &#34;proxy --  GET&#34; request when no caching proxy server is actively serving as a caching proxy server to the client in accordance with a preferred embodiment. The polling loop of events begins 400 on the client computer whereby if the amount of time that has lapsed since the last proxy --  GET was transmitted by the client to the destination computer is not greater than one day and if the amount of time that has lapsed since the last proxy --  GET was transmitted by the client to the destination computer is not greater than the value set in NEXT-UPDATE 410, then loop 410 is reiterated, otherwise the client transmits a proxy --  GET to the destination computer 420. 
     The destination computer receives the proxy --  GET transmission from the client 430. If the destination computer has received instruction to redirect client 200 to caching proxy server 440 then the destination computer transmits to client 1) a list of TCP/IP addresses that the caching proxy server will serve for client requests 2) the NEXT --  UPDATE value and 3) a flag indicating whether a private content channel within the intranet is to be enabled by the client 450, the transmission is received by the client 453 and the client saves the list of TCP/IP addresses that the caching proxy server will monitor for client requests to file 0.dc 456. Otherwise, the destination computer transmits to client 1) HTTP 204 indicating that and 2) NEXT --  UPDATE value 460 and the client receives the transmission from the destination computer 470 and if a file named &#34;0.dc&#34; exists on the client computer 480 the client erases file 0.dc to indicate no redirection to a caching proxy server is in effect 490. Then the sequence of events returns to the beginning of the loop 400. 
     FIG. 5A illustrates formats of HTTP GET requests by a client to a caching proxy server or a destination computer in accordance with a preferred embodiment. 
     FIG. 5B illustrates the flow-control and sequence of events between the client, the caching proxy server and the destination server in regards to a GET request by the client in accordance with a preferred embodiment. The client transmits a GET request from the computer at the IP address selected from the 0.dc file 5B00. If the caching proxy server determines that the IP address is for a machine other than the caching proxy server 5B10, the caching proxy server passthrough agent transmits the request to the destination computer 5B20 and the client computer regains flow-of-control 5B00. If the caching proxy server determines that the category ID of the request indicates the proxycache agent 5B30, the caching proxy server retrieves the requested data from the cache and transmits the data to the client 5B40 and the client regains flow-of-control 5B00. If the caching proxy server determines that the category ID of the request indicates the adstats agent 5B50, the caching proxy server manages the request data in accordance with 5B60 and the client regains flow-of-control 5B00. If the caching proxy server determines that the category ID of the request indicates the corporate agent 5B50, the caching proxy server manages the request data in accordance with 5B60 and the client regains flow-of-control 5B00. Otherwise, the caching proxy server passthrough agent transmits the request to the destination computer 5B20 and the client computer regains flow-of-control 5B00. 
     FIGS. 6A and 6B illustrate the flow-of-control of the Proxycache agent on the caching proxy server in accordance with a preferred embodiment. The primary purpose of this flow-of-control is to refresh the cache at designated intervals. Flow-of-control begins with a URI passed to the proxycache agent 600. The URI is parsed through use of a PCNHTTP class object 605 and if &#34;Cache Folder&#34; is not in &lt;Category ID&gt; \&lt;Search Argument&gt; 610 then a &#34;Cache Folder&#34; is instantiated and NEXT --  UPDATE is set to numeric 0 615. If NEXT --  UPDATE is not past the elapsed time 620 indicating that the cache need not be refreshed, the flow-of-control is exited with a successful status 625. If NEXT --  UPDATE is past the elapsed time 620 indicating that the cache needs to be refreshed, the read and write operations to the cache are blocked 630. The largest last id (the latest file) is in the cache is identified 635 and a GET request is transmitted to the destination server in the following format: /FIDO-1/NunItm-&lt;number of items requested by client&gt;/&lt;Category ID&gt;-&lt;largest last id caching proxy server currently has&gt;/&lt;Search Argument&gt;640. The response from the destination computer is received 645. 
     If the return code from the response is numeric decimal 200 650, then NEXT --  UPDATE is set to the first header value 655 and 0 or more files are from received from the destination computer and segmented and stored in memory in the current cache directory with a name equal to the &#34;Last ID&#34; associated with the file 660. 
     If the return code from the response is numeric decimal 204 665, NEXT --  UPDATE is set to a value equivalent and representative of one hour 670, otherwise, and error flag is set indicating that the destination server did not respond to the request appropriately 675. 
     Read and write operations to the caches are unblocked 680, the last &#34;Numltms&#34; files in the &lt;Category ID&gt;\&lt;Search Argument&gt; in cache with last --  id &gt; requested --  last --  id are transmitted 685 and the flow-of-control is exited with a successful status 690. 
     FIG. 7 illustrates the format of the 0.dc file in accordance with a preferred embodiment. A 0.dc file resides on each client computer that communicates with a caching proxy server. The data in the file is transmitted to the client from the destination computer or the redirection agent of an active caching proxy server in response to a proxy --  GET request (category 66560) from the client. This file is used to identify the IP address of the caching proxy server to the client. The first entry is the name of the destination computer that transmitted the data in the 0.dc file to the client 700. The second entry is a flag indicating whether or not the private content channel is enabled 710, numeric 0 indicates no and numeric 1 indicates yes. The originator of the 0.dc file is identified at 720. The usage mode of how the following list of caching server IP addresses is to be used is indicated at 730, numeric 1 indicates that an IP address is to be selected randomly from the list by the client so that the capacity load on the caching proxy servers from the clients will be more even balanced, and numeric 0 indicates sequential selection from the list. An interative list of at least one caching proxy server address(es) follows 740. This address is used by the client computer instead of the IP address of the destination computer for HTTP GET requests so that cached data on the caching proxy server can be used to satisfy data requests, relieving the firewall of the burden of passing on the request to the destination computer and returning the data from the destination computer to the client. 
     FIG. 8 illustrates the format of the corp.dat file in accordance with a preferred embodiment. A private corporate channel configuration file, named corp.dat, must reside in the directory, %PCN --  HOME%\corp to enable the private channel. The name of the channel, channel --  name, is displayed on the channel button in the PointCast Viewer in character string format 900. SS --  LOGO, the filename in logo of the GIF or JPEG format that is to be displayed in the SmartScreen FLASH --  AD --  LOGO and the SS --  FILE line are used by the client to determine whether it needs to fetch the files specified. If the files specified by these three lines are already present on the client, it will not attempt to fetch them again. Thus, if an administrator changes one of these files, the administrator will have to change the name of the file to signal the client to fetch it again. 
     AD --  LOGO is the character string name of the GIF or JPEG file that is to be displayed in place of the commercial while the user is in the corporate channel of the PointCast Viewer 920. SS --  FILE is the character string name of the SmartScreen file selected by the MIS administrator from the list of template SmartScreens provided with the Content Server 930. This SmartScreen will be played by the client when it is time to play a SmartScreen for the corporate channel. FLASH --  FILE is the character string name of the file that contains a list of messages that scroll across the ticker tape, alongside the stock quotes and sports scores 940. 
     GROUP is the character string name that appears on the Nth &#34;tab&#34; of the group directory window 950. Following the GROUP line are the description lines for all the documents in this group. All document lines that describe the same document must NOT be separated by other command lines, although blank and comment lines are allowed. DOC --  SUBJECT=subjectN --  M is a character string subject of the Mth document in the Nth group, as displayed in the group directory window 960. This is also the text that appears in a title sprout when the SmartScreen for this channel comes up. 
     DOC --  ID=DocIDN --  M is the character string identifier (URL) used to load the source article 970. This must follow its corresponding DOC --  SUBJECT line. In general, DocIDN --  M takes the format of an URL as defined by W3C. DOC --  SUMMARY=sumN --  M is the character string HTML document that will appear as a summary sprout when the SmartScreen for this channel is intialized 980. This field usually consists of the first few paragraphs of the article, although an administrator can specify whatever he or she would like to appear as the summary sprout if the first few paragraphs are not appropriate. This must follow its corresponding DOC --  ID line. DOC --  SUMMARY --  END denotes the end of the HTML document above 990. 
     The entire GROUP section 950-990 can be substituted with a single line with the following format: GROUP --  FILE=location where location specifies a file which contains a GROUP section. location can either be a URL if the file exists on a remote Web server, or a full-qualified pathname if the file exists on the same machine as the the Content Server. When a client requests for a corp.dat file, the Content Server will parse the file and substitute any GROUP --  FILE statements with the contents of the file identified by location before returning the corp.dat file to the client. If the Content Server is unable to locate the file in question, the entire line is ignored and a corp.dat file is generated without that particular group. A warning is signaled. 
     FIGS. 9A and 9B illustrate the flow-of-control of the retrieval of AdStats data in accordance with a preferred embodiment. AdStats data is statistical data on advertisements viewed by the user on the client computer. However, any other type of statistical information on usage of the client computer or content could also be involved. 
     To upload the AdStats data from the client to the caching proxy server, the client compresses and transmits AdStat data to the caching proxy server 10A00. The caching proxy server receives AdStat data and AdStat agent stores the data on 10A10. If the caching proxy server AdStat agent successfully received and stored the AdStat data 10A20 the caching proxy server transmits successful status to client 10A30 and when the client receives successful status, the client erases AdStat data 10A40 and the flow-of-control ends 10A50. If the caching proxy server AdStat agent did not successfully receive and store the AdStat data 10A20 the caching proxy server transmits unsuccessful status to the client 10A60, the client divides AdStat data into segments half the size of the last attempted unsuccessful transmission, but not less than 140 bytes 10A70 and the flow-of-control continues at the beginning to attempt another transmission 10A00. 
     To upload the AdStats data from the caching proxy server to the destination computer, the caching proxy server compresses and transmits AdStat data to the destination computer 10B00. The destination computer receives AdStat data and AdStat agent stores the data 10B10. If the destination computer AdStat agent successfully received and stored the AdStat data 10B20 the destination computer transmits successful status to caching proxy server 10B30 and when the caching proxy server receives successful status the caching proxy server erases AdStat data 10B40 and the flow-of-control ends 10B50. If the destination computer AdStat agent did not successfully receive and store the AdStat data 10B20 the destination computer transmits unsuccessful status to the caching proxy server 10B60, the caching proxy server divides AdStat data into segments half the size of the last attempted unsuccessful transmission, but not less than 140 bytes 10B70 and the flow-of-control continues at the beginning to attempt another transmission 10B00. 
     FIG. 10 illustrates the flow-of-control on a client in establishing communication between the client and the Content Server in accordance with a preferred embodiment. The Content Server enables an organization to implement an internal electronic communication infrastructure. 
     If file 0.dc does not exist 1100, indicating that no Content Server for the client exists, then flow-of-control terminates 1110. Otherwise, the channel ID of the private channel is retrieved and appended to the list of mandatory channels in the initialization file 1120 and the private channel DLL is instantiated 1130. If either file corp.dat does not exist or file 0.dc indicates that the private channel should not be enabled 1140, then flow-of-control terminates 1150. Otherwise, the private channel is activated 1160 and the Channel Viewer displays the private channel to indicate to the user that the private channel is active 1170 and then flow-of-control terminates 1180. 
     FIGS. 11A and 11B illustrate the flow-of-control of the retrieval of data by a client from the Content Server in accordance with a preferred embodiment. In order to perform a HTTP GET request, the client transmits a request to the content server to transmit the corp.dat and flash.dat files to the client. 
     The flow-of-control of a HTTP GET begins on the client. If the NEXT-UPDATE value has expired, 12A00, indicating that the client needs a new copy of the corp.dat file, the client transmits a request to the Content Server to transmit the corp.dat and flash.dat files to the client 12A10. When the Content Server receives the request, 12A20, if the CorpDirectory parameter in the registry on the Content Server present, 12A30, the Content Server will read the corp.dat file from the disk location specified by CorpDirectory parameter in the registry on the Content Server, 12A40, otherwise the Content Server will read the corp.dat file from disk at subdirectory C:/iserver 12A50. Then, if the CorporateRemoteLevel registry parameter on the Content Server equals numeric 1, 12A60, all lines in the corp.dat file that are name=value pairs with a name of GROUP --  FILE are resolved by replacing the lines with the contents of the file identified by the value portion of the GROUP --  FILE specification, 12A70, and then the corp.dat file is stored in the directory identified in the CorporateScatch-Directory 12A80. More specifically, the CorporateScratchDirectory actually contains two subdirectories, /0 and /1 referred to as cache #0 and cache #1. The Content Server always begins by serving requests for the resolved corp.dat from cache #1. As soon as the corp.dat file or a fixed time specification of minutes have elapsed, another corp.dat and its associated files are built in cache #0. While the other corp.dat file is being built in cache #0, the resolved corp.dat file in cache #1 is transmitted to clients. When cache #0 is complete, the Content Server compares the contents of the two caches. If the files have the same contents, the Content Server continues to serve clients from cache #1. If the corp.dat file contents in cache #0 and cache #0 are different, the Content Server switches all new clients to cache #0 and starts the process over by building a new corp.dat file in cache #1. Then the Content Server transmits the corp.data file to the client 12A90. The client receives and stores the corp.dat file transmitted by the Content Server 12B00. 
     If the files specified by the AD --  LOGO, SS --  LOGO and SS --  FILE entries in the corp.dat file do not exist on the client 12B10, the client will transmit GET requests to the Content Server for the non-existent files 12B20, if the CorpDirectory parameter in the registry on the Content Server present, 12B30, the Content Server will retrieve the request file(s) from the disk location specified by the CorpDirectory parameter in the registry on the Content Server and transmit the file to the requesting client, 12B40, otherwise the Content Server will retrieve the requested file(s) from disk at subdirectory C:/iserver and transmit the file(s) to the requesting client 12B50. 
     The client then will display through a browser the titles of documents specified in the corp.dat file 12B60. When the user selects one of the documents 12B70, the client transmits a request for the document to the computer addressed by the URL specified for the document in the corp.dat file on the client 12B80, and the client receives and displays the requested document 12B90. The flow-of-control for the retrieval of documents for the Content Server ends. 
     The documents that the Content Server serves to the clients may be in any format, such as ASCII text, MIME, Microsoft Word, Rich Text Format, compressed ZIP, graphics GIF or HTML. In the preferred embodiment the Content Server serves HTML files for use with a browser on the client computer. 
     While the invention is described in terms of preferred embodiments in a specific system environment, those skilled in the art will recognize that the invention can be practiced, with modification, in other and different hardware and software environments within the spirit and scope of the appended claims.