Web server operations are off loaded to a network interface device, such as a network interface card. The device includes a physical interface to interconnect a network and a web server, and a storage mechanism for web content provided by the web server. The device is capable of independent provision of web content, such as frequently requested content of web pages, thus reducing load on the web server and its storage mechanism. Additional new elements and operations for a network interface device, and a web server system in which it operates, are also described.

Claim:

What is claimed is:

1. A method comprising: hosting content of a web page at a first mechanism that is capable of responding to a client request; storing at least some of the content at anetwork interface mechanism that is capable of independently responding to a client request and that is accessible by the first mechanism, wherein the network interface mechanism provides a physical interface between a network and the first mechanism; and providing at least some of the content stored at the network interface mechanism to a client in response to a request for content sent to the first mechanism by the client.

2. The method of claim 1 further comprising performing at the network interface mechanism security-related, operations involving the request.

3. The method of claim 1 further comprising performing at the network interface mechanism all transmission control protocol processing in fulfilling the request.

4. The method of claim 1 further comprising mapping at the network interface mechanism at least one network address to a particular set of content.

5. The method of claim 1 in which the content stored at the network interface mechanism includes content most often requested in requests sent to the first mechanism.

6. The method of claim 1 further comprising updating the network interface mechanism using updated content.

7. The method of claim 1 in which the network interface mechanism includes a network interface card.

8. The method of claim 1 in which the first mechanism includes a server.

9. The method of claim 1 further comprising providing the content to the client from the first mechanism if the network interface mechanism does not include the content.

10. The method of claim 1 further comprising providing information related to a client request from the network interface mechanism to the first mechanism if the network interface mechanism independently handles the client request.

11. The method of claim 10 in which the information includes an indication of content requested in the client request.

12. An article comprising; a machine-readable medium which contains machine-executable instructions, the instructions causing a machine to: host content of a web page at a first mechanism that is capable of responding to a client request; store at least some of the content at a network interface mechanism that is capable of independently responding to a client request and that is accessible by the first mechanism, wherein the network interface mechanism provides a physical interfacebetween a network and the first mechanism; and provide at least some of the content stored at the network interface mechanism to a client in response to a request for content sent to the first mechanism by the client.

13. The article of claim 12 further causing a machine to perform at the network interface mechanism security-related operations involving the request.

14. The article of claim 12 further causing a machine to perform at the network interface mechanism all transmission control protocol processing in fulfilling the request.

15. The article of claim 12 further causing a machine to map at the network interface mechanism at least one network address to a particular set of content.

16. The article of claim 12 in which the content stored at the network interface mechanism includes content most often requested in requests sent to the first mechanism.

17. The article of claim 12 further causing a machine to update the network interface mechanism using updated content.

18. The article of claim 12 in which the network interface mechanism includes a network interface card.

19. The article of claim 12 in which the first mechanism includes a server.

20. The article of claim 12 further causing a machine to provide the content to the client from the first mechanism if the network interface mechanism does not include the content.

21. The article of claim 12 further causing a machine to provide information related to a client request from the network interface mechanism to the first mechanism if the network interface mechanism independently handles the client request.

22. The article of claim 21 in which the information includes an indication of content requested in the client request.

23. A system comprising: a server configured to host content of a web page and to respond to a client request; and a network interface device configured to communicate with the server, to store at least some of the content of the web page, andto independently provide at least some of the content stored at the interface in response to a request sent to the server for web content.

24. The system of claim 23 further comprising a stack included in the interface and configured to perform security-related operations involving the request.

25. The System of claim 23 in which the interface is also configured to perform all transmission control protocol processing in fulfilling the request.

26. The system of claim 23 in which the interface is also configured to map at least one network address to a particular set of content.

27. The system of claim 23 in which the content stored at the interface includes content most often requested in requests sent to the server.

28. The system of claim 23 further comprising a storage mechanism included in the interface and configured to store the content.

29. The system of claim 23 further comprising a storage mechanism accessible by the server and configured to store the content of the web page.

30. The system of claim 23 in which the storage mechanism is also configured to provide updates to the content to the interface.

31. The system of claim 23 further comprising a proxy included in the interface and configured to retrieve the content from storage.

32. The system of claim 23 in which the network interface device includes a network interface card.

33. The system of claim 23 in which the interface is also configured to provide the content in response to the request if the interface does not include the web content.

34. A network interface device comprising: a physical interface configured to interconnect a network and a web server; a rapid storage mechanism configured to store web content frequently provided by the web server in response to clientrequests; and a network stack configured to provide the web content stored in the rapid storage mechanism in response to a request sent to the web server.

35. The device of claim 34, wherein the network stack is further configured to perform security-related operations and transmission control protocol processing in fulfilling the request.

36. The device of claim 35, further comprising a component configured to send high layer socket calls to the web server.

37. The device of claim 35, further comprising a component configured to provide information related to fulfilling the request to the web server.

38. A system comprising: a web server; a remote storage mechanism operatively coupled with the web server, and a network interface device comprising: a physical interface configured to interconnect a network and the web server, a rapid storagemechanism configured to store web content frequently provided by the web server in response to client requests, and a network stack configured to provide the web content stored in the rapid storage mechanism in response to a request sent to the webserver.

39. The system of claim 38, wherein the network stack is further configured to perform security-related operations and transmission control protocol processing in fulfilling the request.

40. The system of claim 39, further comprising a web content monitor and page loader, and wherein the network interface device is configured to send high layer socket calls to the web server.

41. The system of claim 39, wherein the network interface device is configured to provide information related to fulfilling the request to the web server.

42. The system of claim 39, wherein the network interface device comprises a network interface card.

Description:

BACKGROUND

This invention relates to providing web services using an interface.

Referring to FIG. 1, a network configuration 100 illustrates an example client/server network setup. In the network configuration 100, clients 102(1)-102(N) can each request information from a host computer 104 across a network 106. (Nrepresents a whole number.) The client 102(1), for example, may send a request across the network 106 for a particular set of web content available at the host computer 104, for a multimedia exchange to be set up between the client 102(1) and the hostcomputer 104, or for another exchange or set of web content.

The request arrives at the host computer 106 at a network interface card (NIC) 108. From the NIC 108, the request can travel along an input/output (I/O) bus 110 and through a network stack 112 to a web server 114 running web server software.

The web server 114 handles the request (including any necessary connection setup and information retrieval) and, if necessary, reads information from a local storage mechanism 116 such as a buffer or a data cache. The web server 114 may thenreturn any content requested by the client 102(1) to the client 102(1), with the content traveling through the network stack 112, the I/O bus 110, the NIC 108, and the network 106.

DESCRIPTION OF DRAWINGS

FIG. 1 (PRIOR ART) is a block diagram of a network configuration.

FIG. 2 is a block diagram of a network configuration including a server enabled interface.

FIG. 3 is a flowchart showing a process of responding to a request for web content.

FIG. 4 is a flowchart showing a process of updating an interface.

FIG. 5 is a block diagram of a network configuration including a cache enabled interface.

FIG. 6 is a flowchart showing a process of responding to a request for web content.

DESCRIPTION

Referring to FIG. 2, a network configuration 200 shows an example client/server network setup including a host computer 202 that includes a web server 204 capable of offloading one or more web server operations to an interface 206. A web contentmonitor and page loader 208 ("monitor 208") can transmit web content (static, new, and/or updated web content) from a storage mechanism 210 accessible by the web server 204 to an interface storage mechanism 212 included in or otherwise accessible by theinterface 206. In this way, the interface 206 can handle much of the web content delivery to clients 214(1)-214(X) that request web content from the host computer 202. (X represents a whole number.)

When one of the clients 214(1)-214(X) (generically referred to as the client 214) sends a request for a connection setup and for web content to the host computer 202 across one or more communication links 216(1)-216(Y) and a network 218, theinterface 206 receives the request. (Y represents a whole number.) If the interface storage mechanism 212 includes the web content requested by the client 214, then the interface 206 can independently respond to the request by setting up the connectionand by transmitting the web content to the client 214 without any work by other elements included in the host computer 202, e.g., the web server 204, the storage mechanism 210, etc. In responding to the request, the interface 206 may use a networkinterface 222, a network stack 224, and a proxy cache 226, each described further below.

If the interface storage mechanism 212 does not include the requested web content or the interface 206 can otherwise not handle the request for any reason, then the interface 206 can forward the request to the web server 204 via a hostinput/output (I/O) bus 220.

Even if the interface 206 responds to the request, the interface 206 may notify other elements included in the host computer 202 of the request and the interface's response to the request for logging, auditing, and/or other purposes. Forexample, the interface 206 may notify the monitor 208 that a request was received and responded to so that the monitor 208 can keep an accurate log of requests received by the host computer 202.

Thus, the web server 204 and/or other elements included in the host computer 202 need not perform connection setup work as the network interface 206 can perform the connection setup work. In this way, the web server 204 and/or the other elementsincluded in the host computer 202 can work on more dynamic operations such as updating web content, possibly increasing the total capacity of the web sever 204 and reducing response time of the host computer 202 to requests from the clients214(1)-214(X).

In a general example, the client 214 may include a desktop computer, the network 218 may include the Internet, and the host computer 202 may include a server that hosts a web page. The client 214 may send a request to connect to the hostcomputer 202 via a hypertext transfer protocol (HTTP) connection to request a particular set of web content (e.g., contents of a particular web page). The interface 206 receives the request, sets up the connection between the host computer 202 and theclient 214, and checks the interface storage mechanism 212 for the web content. If the interface storage mechanism 212 includes the web content, then the interface 206 can transmit the web content to the client 214 without the web server 204 having toperform any Transmission Control Protocol/Internet Protocol (TCP/IP) processing, security processing, or web content delivery processing.

If, however, the interface storage mechanism 212 does not include the web content, then the interface 206 can forward the request to the web server 204 which can handle the request. The web server 204 can query the storage mechanism 210 for theweb content and, if the web content is available from the storage mechanism 210, transmit the web content to the client 214. The web content may not be available at the storage mechanism 210 if, for example, the client 214 requests outdated web content,the client 214 addresses its request to the incorrect host, the client 214 sends a malformed request, and/or the storage mechanism 210 is unavailable.

Before further discussing offloading web server operations to the interface 206, the elements in the network configuration 200 are further described.

The elements in the network configuration 200 can be implemented in a variety of ways. Information communicated between the clients 214(1)-214(X) and the host computer 202 can include data, instructions, or a combination of the two. Theinformation may be in packets. Each sent packet may be part of a packet stream, where each of the packets included in the packet stream fits together to form a timewise contiguous stream of data. Information may be communicated between endpoints viamulticast, unicast, or some combination of both.

The clients 214(1)-214(X) can each include any mechanism or device capable of communicating with the host computer 202 through the network 218. Examples of the clients 214(1)-214(X) include workstations, stationary personal computers, mobilepersonal computers, servers, personal digital assistants, telephones, and other similar mechanisms and devices. The clients 214(1)-214(X) in the network configuration 200 may differ from each other. Although multiple clients are shown in the networkconfiguration 200, there may be only one client that can access the host computer 202 through the network 218.

The network 218 can include any kind and any combination of networks such as an Internet, a local area network (LAN), a wide area network (WAN), a private network, a public network, or other similar network. Communications through the network218 may be secured with a mechanism such as IP security (IPsec), Transport Layer Security/Secure Socket Layer (TLS/SSL), wireless TLS (WTLS), secure Hypertext Transfer Protocol (S-HTTP), or other similar security mechanism. The network stack 224 shouldbe configured to handle information secured through whatever security mechanism employed by the network 218. Otherwise, a request sent by one of the clients 214(1)-214(X) might fail and go unfulfilled.

The network 218 may include a LAN set up as an Ethernet. Examples of an Ethernet include a 10BaseT Ethernet, a Fast Ethernet, a Gigabit Ethernet, a ten Gigabit Ethernet, and other similar faster and slower Ethernets. A 10BaseT Ethernetgenerally refers to an Ethernet setup that transmits information at ten Megabits per second (Mbps). A Fast Ethernet generally refers to an Ethernet setup using a 100BaseT Ethernet, also called the Fast Ethernet standard (Institute of Electrical andElectronics Engineers (IEEE) standard 802.3u, adopted 1995), that transmits information at one hundred Mbps. A Gigabit Ethernet generally refers to an Ethernet setup that transmits information at 1000 Mbps using IEEE standard 802.3z (adopted 1998). Aten Gigabit Ethernet generally refers to an Ethernet setup that transmits information ten times as fast as a Gigabit Ethernet using IEEE standard 802.3ae (first draft adopted 2000).

The web server 204 can include any device capable of communicating with the network 218 such as a file server, an application server, a database server, a mobile computer, a stationary computer, or other similar device.

The monitor 208 can include any device or mechanism capable of performing administrative tasks such as monitoring web content updates, keeping track of the frequency and/or number of requests received at the host computer 202, auditing the hostcomputer's performance, and performing other similar tasks. The monitor 208 may be set up or include as an application to perform such tasks.

The interface 206 can include any mechanism or device capable of providing a connection between the web server 204 and the network 218. For example, the interface 206 may include a NIC. An NIC generally refers to a mechanism that provides aphysical interface between a network (technically, usually to a communication link to the network) and a server (technically, usually to a bus leading to the server). The NIC may be capable of handling any number of maximum bits, such as eight bits,sixteen bits, thirty-two bits, or any other number of bits, as long as the NIC can handle the speed of the network 218, which could equal or exceed one gigabit or even ten gigabits.

The host computer 202 can include any device capable of communicating with the network 218. Examples of such devices include a mobile computer, a stationary computer, a workstation, a server, a telephone, a pager, a personal digital assistant,and other similar devices. The host computer 202 may include any number of servers similar to the web server 204 and any additional architecture needed to support the additional servers.

The storage mechanism 210 and the interface storage mechanism 212 can each include a storage mechanism such as a data queue, a buffer, a local or remote memory device, random access memory (RAM), a cache, or other similar mechanism. Themechanisms used for the storage mechanism 210 and the interface storage mechanism 212 may differ from each other. Furthermore, the interface storage mechanism 212 typically includes a rapid storage mechanism (e.g., RAM, Flash Erasable Programmable ReadOnly Memory (FEPROM or Flash memory), and other similar mechanisms) that enables the proxy cache 226 to quickly and easily access information stored at the interface storage mechanism 212.

The proxy cache 226 can include any device or mechanism capable of storing (usually temporarily) web content As the interface storage mechanism 212 receives updates from the storage mechanism 212, the proxy cache 226 should also be able to updateits stored web content.

The network stack 224 can include a protocol stack of protocols used in network communications such as TCP/IP, TLS/SSL, those included in the Open System Interconnection (OSI) model, and other similar protocols.

The network interface 222 can include any device or mechanism capable of handling a request from the network 218 and forwarding to and/or translating the request for other elements included in the interface 206.

The host I/O bus 220 can include a peripheral bus capable of carrying communication between the web server 204 and the interface 206.

The communication links 216(1)-216(Y) can include any kind and any combination of communication links such as modem links, Ethernet links, cables, point-to-point links, infrared connections, fiber optic links, wireless links, cellular links,Bluetooth, satellite links, and other similar links. Additionally, each of the communication links 216(1)-216(Y) may include one or more individual communication links.

Furthermore, the network configuration 200 is simplified for ease of explanation. The network configuration 200 may include more or fewer additional elements such as networks, communication links, proxy servers, hubs, bridges, switches, routers,firewalls or other security mechanisms, Internet Service Providers (ISPs), and other elements.

Referring to FIG. 3, a process 300 shows an example of offloading work from the web server 204 to the interface 206. Although the process 300 is described with reference to the elements included in the network configuration 200 of FIG. 2, thisor a similar process may be performed in another, similar network configuration.

In the process 300, the client 214 sends 302 a request to the host computer 202. In this example, the request is for a connection setup between the client 214 and the host computer 202 and for a particular set of web content from the hostcomputer 202. The request can, however, be for a connection setup, for web content, for a connection setup and for web content, or for other similar services and content.

The client 214 may send the request in response to a user of the client 214 entering a name or address into a browser running on the client 214. The name or address may include a uniform resource indicator (URI), a uniform resource locator(URL), a universal naming convention (UNC) address, or other similar name or address.

The request traverses to the host computer 202 through one or more of the communication links 216(1)-216(Y) and the network 218. The host computer 202 receives 304 the request at the interface 206, specifically, at the network interface 222.

The interface 206 may then set up 306 a connection between the host computer 202 and the client 214. Setting up the connection may include the interface 206, via the network stack 224, performing TCP (or other protocol, as appropriate)connection operations, including checksum operations. In this way, the web server 204 need not perform any connection setup operations, instead offloading such operations to the interface 206.

Furthermore, with the interface 206 handling connection setup operations, communications on the host I/O bus 220 between the web server 204 and the interface 206 may not involve transmission of TCP/IP packets (or other protocol information, asappropriate). Rather, the interface 206 can send high layer socket calls (e.g., Berkeley Socket calls using Berkeley UNIX, Windows Socket (Winsock) calls, transport level interface (TLI) calls, and other types of similar calls) to the web server 204 onthe host I/O bus 220. In this way, the interface 206 can relieve the web server 204 from performing TCP/IP (or other protocol, as appropriate) processing.

The request may require security processing before the host computer 202 can respond to the client 214. The interface 206 may include one or more cryptography or security processing capabilities, such as TLS/SSL, in the network stack 224 thatcan so process the request. If the network stack 224 supports cryptography capabilities (and the request requires cryptography processing), then the network stack 224 can perform 308 any necessary cryptography operations. In this way, even if theinterface 206 cannot provide the client 214 with its requested web content, the interface 206 can relieve the web server 204 of performing any cryptography processing. As cryptography processing can involve resource-intensive, time-consuming operations,the interface's cryptography processing could significantly reduce the amount of processing done by the web server 204.

If the network stack 224 does not support cryptography processing or after the network stack 224 performs 224 any necessary cryptography operations, the interface 206 determines 310 if the interface storage mechanism 212 and/or the proxy cache226 includes the requested web content. Depending on the outcome of this determination, either the interface 206 or the web server 204 provides the web content to the client 214.

The interface 206 may make this determination by consulting a mapping table. The interface storage mechanism 212 may include the mapping table or the mapping table may otherwise be accessible to the interface 206. The mapping table can includecorrelations between names and addresses (e.g., URLs) and web content. Each name and address may correspond to one set of web content and/or multiple names and addresses may correlate with the same set of web content to deal with different webconfiguration issues.

If the mapping table includes the name or address provided by the client 214, then the interface 206 includes the requested web content and can respond 312 to the client's request. Otherwise, the interface 206 likely does not include therequested web content or the most up-to-date version of the requested web content, so the web server 204 handles 314 the request for web content.

If the interface 206 responds to the client's request, then the interface 206 retrieves the requested web content from the interface storage mechanism 212 and/or the proxy cache 226 as appropriate. By storing web content (including static webcontent) at the storage mechanism 212 and/or the proxy cache 226, web content can be located closer to the interface 206 than if the web content is stored elsewhere, e.g., at the storage location 210. Furthermore, storing web content at the interfacestorage mechanism 212, can reduce the load on the storage mechanism 210. The interface 206 may also or instead retrieve a copy of the requested web content, a pointer to the requested web content, or other information regarding the web content that theinterface 206 may send to the client 214 in response to the request. Having retrieved the web content, the interface 206 can transmit the web content to the client 214 via one or more of the communication links 216(1)-216(Y) and the network 218.

With the interface 206 responding to the request rather than the web server 204, bus traffic on the host I/O bus 220 between the interface 206 and the web server 204 may be reduced or eliminated because the interface 206 may not need tocommunicate the client's request to the web server 204 or receive web content via the host I/O bus 220 to return to the client 214.

After responding to the request, the interface 206 may notify 316 the web server 204 with information regarding the request and/or work performed by the interface 206. The interface 206 may also or instead provide the web server 204 with suchinformation as it becomes available rather than waiting until after the interface 206 finishes responding to the request. Additionally, the interface 206 may log 318 information regarding the request and/or the work performed by the interface 206 in theinterface storage mechanism 212. The interface 206 may then subsequently transmit the logged information to the web server 204 at a later time, e.g., after the interface 206 logs a certain number or amount of information, after a certain amount of time,etc., or the web server 204 can retrieve the logged information.

The information sent to the web server 204 can include data that the web server 204 may forward to the monitor 208 that the monitor 208 can use in logging, auditing, or otherwise tracking requests sent to the host computer 202 and/or examiningthe processes performed by the interface 206 and/or the web server 204. Such data may include information regarding the request such as the name or address used by the client 214 to contact the host computer 202, the location of the client 214 (e.g.,network address), the time that the host computer 202 received the request, whether the web server 204 or the interface 206 responded to the request, and other similar types of information.

The monitor 208 can log 320 data sent from the interface 206 and/or the web server 204 and use the data in updating the web content included in the interface storage mechanism 212. For example, if the monitor 208 determines that clients requesta particular web page with a certain frequency (e.g., a certain number of times in a certain number of seconds), then the monitor 208 may increase the frequency of updates for that web page sent to the interface storage mechanism 212.

If the web server 204 knows about the processing performed by the interface 206, then the host computer 202 need not include the monitor 208 as shown in the network configuration 200. Rather, the web server 204 may include a monitoring mechanismsimilar to the monitor 208.

If the mapping table does not include the name or address provided by the client 214 or the interface 206 can otherwise not respond to the request for any reason, then the web server 204 responds 322 to the request instead of the interface 206. The web server 204 retrieves the requested web content from the storage mechanism 210 or from its internal storage and can transmit the web content to the client 214 via the interface 206, one or more of the communication links 216(1)-216(Y), and thenetwork 218.

The web server 204 may send information regarding the request and/or the work performed by the web server 204 to the monitor 208 which can log 302 the log information as described above. The interface 206 may also send information regarding therequest and/or the work performed by the interface 206 to the monitor 208 even if the web server 204 responds to the request. For example, the interface 206 may hold responsibility for informing the monitor 208 about the frequency of requests receivedby the host computer 202.

Referring to FIG. 4, the monitor 208 may periodically send new and/or updated web content to the interface 206 as shown in a monitoring process 400. The monitoring process 400 is described with reference to the network configuration 200 of FIG.2, but this or a similar process may be performed in another, similar network configuration.

At regularly scheduled intervals or as necessary, the monitor 208 can decide 402 to update the interface 206 with new and/or updated web content. The monitor may make such a decision when the storage mechanism 210 receives and stores new webcontent, after every "N" seconds (where N equals any positive number), or upon occurrence of another similar event or events.

When the monitor 208 decides to send an update to the interface 206, the monitor 208 can send 404 a web content update to the interface 206. The web content update may include new web content or revisions to web content already stored at theinterface 206 in the proxy cache 226 and/or the interface storage mechanism 212.

An application included in or otherwise accessible by the monitor 208 may carry out the deciding and/or the sending. An application generally refers to one or more programs, functions, and/or other similar instructions capable of processing dataand is typically implemented with software.

Furthermore, the monitor 208 may not be the mechanism that actually transmits the web content update to the interface 206. Rather, the monitor 208 may trigger another mechanism, such as the storage mechanism 210, to send or transfer the webcontent update to the interface 206.

Referring to FIG. 5, a second network configuration 500 shows another example client/server network setup including a host computer 202 that includes a web server 504 capable of offloading one or more web server operations to an interface 506. The web server 504 and the interface 506 can each function and be implemented similar to like-named elements included in the network configuration 200 (see FIG. 2). Similarly, the second network configuration 500 also includes a storage mechanism 508,an interface storage mechanism 510, clients 512(1)-512(Q) (where Q represents whole number), communication links 514(1)-514(R) (where R represents whole number), a network 516, a host I/O bus 518, a network interface 520, a network stack 522, and a proxycache 524 that can each function and be implemented as similarly-named elements in the network configuration 2 (see FIG. 2). The second network configuration 500 also includes a host network stack 526 that can function as described below and beimplemented similar to the network stack 522 included in the interface 506.

In the second network configuration 500, the interface 506 can act as a web-cache enabled proxy. The web server 504 and the host network stack 526 do not have knowledge of the interface's ability to cache web content in the proxy cache 524. Additionally, the storage location 508 need not send data to the interface storage location 510.

Referring to FIG. 6, a second process 600 shows an example of offloading work from the web server 504 to the interface 506. Although the second process 600 is described with reference to the elements included in the second network configuration500 of FIG. 5, this or a similar process may be performed in another, similar network configuration.

In the second process 600, one of the clients 512(1)-512(Q) (generically referred to as the client 512) sends 602 a request to the host computer 502 for a connection setup and for a particular set of web content although the request could includemore or less individual requests. The host computer 502 receives 604 the request at the interface 506, specifically, at the network interface 520.

The network interface 520 terminates 606 incoming TCP connections (or connections under the appropriate protocol) and attempts 608 to respond to the request. The request may require security processing before the host computer 502 can respond tothe client 512. The network stack 522 can perform any appropriate cryptography operations as described above with reference to FIG. 3 and the network stack 224 (see FIG. 2). The network stack 522 may perform such cryptography operations whether theinterface 506 or the web server 504 responds to the request.

If the network interface 520 can respond to the request, then the network interface 520 appropriately responds to the client 512. Generally, the network interface 520 can respond to the request if the proxy cache 524 and/or the interface storagelocation 510 includes the requested web content. The network interface 520 may determine if the interface 506 includes the requested web content by consulting a mapping table or performing another similar check as described above with reference to FIG.3.

If the network interface 520 can respond to the request, the interface 506 can log 610 information (e.g., in the interface storage mechanism 510) regarding the request and/or the work performed by the interface 206. For example, the interface520 may log information to keep track of what web content the clients 512(1)-512(Q) most frequently request. The interface 506 may store this most frequently requested web content in a rapid storage mechanism so as to have it easily and quicklyavailable for retrieval and delivery to the clients 512(1)-512(Q).

If the network interface 520 cannot respond to the request for any reason, then the network interface 520 generates 612 a request to the web server 504 to fulfill the client's request. The network interface 520 may generate such a request byopening a TCP connection (or connection using another protocol) with the web server 504 via the host network stack 526. The network interface 520 may then send the request to the web server 504 via the host I/O bus 518 and the host network stack 526. The web server 504 may then respond 614 to the request and, therefore, the client's request.

The techniques described here are not limited to any particular hardware or software configuration; they may find applicability in any computing or processing environment. The techniques may be implemented in hardware, software, or a combinationof the two. The techniques may be implemented in programs executing on programmable machines such as mobile or stationary computers, personal digital assistants, and similar devices that each include a processor, a storage medium readable by theprocessor (including volatile and non-volatile memory and/or storage elements), at least one input device, and one or more output devices. Program code is applied to data entered using the input device to perform the functions described and to generateoutput information. The output information is applied to one or more output devices.

Each program may be implemented in a high level procedural or object oriented programming language to communicate with a machine system. However, the programs can be implemented in assembly or machine language, if desired. In any case, thelanguage may be a compiled or interpreted language.

Each such program may be stored on a storage medium or device, e.g., compact disc read only memory (CD-ROM), hard disk, magnetic diskette, or similar medium or device, that is readable by a general or special purpose programmable machine forconfiguring and operating the machine when the storage medium or device is read by the computer to perform the procedures described in this document. The system may also be considered to be implemented as a machine-readable storage medium, configuredwith a program, where the storage medium so configured causes a machine to operate in a specific and predefined manner.