|
|
|
| United States Patent | 5961601 |
| Link to this page | http://www.wikipatents.com/5961601.html |
| Inventor(s) | Iyengar; Arun K. (Yorktown Heights, NY) |
| Abstract | A method and system for preserving state in computers communicating over
networks, such as the World Wide Web (WWW) using stateless protocols,
e.g., HTTP. State is preserved in a conversation between a client
requesting services from a served by performing the service and
identifying all continuations (hyperlinks) in an output from the service;
recursively embedding the state information in all identified
continuations in the output sent to the client. The state information may
be embedded and communicated by the server to the client. Alternatively,
dynamically downloadable program code may be used to embed the state
information at the client. Additional features enable the filtering and/or
addition of hyperlinks and data output from the services according to
predetermined criteria. State information may be embedded by modifying an
identified continuation which is a request for an HTML file, to invoke a
CGI converter program with the identified continuation and the state
information passed as arguments. State information may also be embedded by
modifying an identified continuation which is an invocation to a CGI
program with the identified continuation and the state information passed
as arguments, and the embedding step is performed by the CGI program.
Alternatively, an identified continuation which is an invocation of a CGI
program may be modified to invoke a CGI converter program with the
identified continuation, an argument counter which indicates a number of
arguments associated with the CGI program, and the state information
passed as arguments. Here, the embedding is performed by the converter
program. |
|
|
|
Title Information  |
|
|
|
|
|
|
| Publication Date |
October 5, 1999 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Title Information  |
|
|
References  |
|
|
| *references marked with an asterisk below are user-added references |
|
U.S. References |
|
|
|
|
|
|
U.S. References |
|
|
Foreign References |
|
|
|
|
|
|
Foreign References |
|
|
Other References |
|
|
|
|
|
|
Other References |
|
|
|
|
|
References  |
|
|
|
|
|
| Market Size |
|
Estimate the gross annual revenues of the relevant market
sector:
|
| | |
| |
|
|
| Market Share |
|
Estimate the percentage of the relevant market sector this invention will capture:
|
| | |
| |
|
|
| Reasonable Royalty |
|
What percentage of gross sales should the inventor or assignee be paid?
|
| | |
| |
|
|
|
Public's "Guesstimation" of Royalty Value
|
| Market Size | N/A | [No votes] | | x | Market Share | N/A | [No votes] | | x | Reasonable Royalty | N/A | [No votes] |
| | N/A | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
Market Review  |
|
|
Technical Review  |
|
|
Claims  |
|
|
What is claimed is:
1. A computerized method for preserving state information in a conversation
between a client adapted to request services from one or more servers
which are networked via a stateless protocol to the client, said services
including one or more of data and programs which the client may request,
wherein the conversation is a sequence of communications between the
client and one or more servers for said services wherein each response
from the server includes one or more continuations which enable another
request for said services and wherein the client must invoke one of the
continuations to continue the conversation, the method comprising the
steps of:
the client initiating the conversation with the server using the stateless
protocol;
detecting when the request for a service requires preservation of the state
information;
performing said service and identifying all continuations in an output from
said service, in response to said step of detecting;
recursively embedding the state information in all identified
continuations; and
communicating the output to the client, in response to said step of
embedding; wherein the state information is preserved and provided to all
services for the duration of the conversation.
2. The method of claim 1, wherein said step of embedding is performed by
the server and said step of communicating is in response to said step of
embedding.
3. The method of claim 2, further comprising the step of storing at least
part of the state information in a memory coupled to the server and
wherein said step of embedding includes embedding an index representing
said part of the state information in said all identified continuations.
4. The method of claim 1, further comprising the step of dynamically
downloading computer program code to the client to perform said step of
embedding which is responsive to said step of communicating the output to
the client.
5. The method of claim 4, further comprising the step of storing at least
part of the state information in a memory coupled to the client and
wherein said step of embedding includes embedding an index representing
said part of the state information.
6. The method of claim 1, further comprising the steps of:
the client selecting a second continuation from said all identified
continuations with embedded state information; and
restoring the state information from said second continuation and invoking
an associated second service with restored state information;
recursively identifying and embedding the state information in all
continuations associated with an output from said second service.
7. The method of claim 1, further comprising the step of correlating the
state information to a specific conversation.
8. The method of claim 1, wherein the client and the server are networked
via the World Wide Web, the stateless protocol is hypertext transfer
protocol, and the continuations are hyperlinks to one of hypertext markup
language files and common gateway interface programs.
9. The method of claim 8, further comprising the step of filtering one of
said hyperlinks and data output from said services according to a
predetermined criteria.
10. The method of claim 8, further comprising the step of adding one of
said hyperlinks and data to said output from said services according to a
predetermined criteria.
11. The method of claim 8, wherein said step of embedding further comprises
the step of:
modifying an identified continuation which is a request for an HTML file to
invoke a CGI converter program with the identified continuation and the
state information passed as arguments.
12. The method of claim 8, wherein said step of embedding further comprises
the step of:
modifying an identified continuation which is an invocation to a CGI
program with the identified continuation and the state information passed
as arguments, wherein said step of embedding is performed by the CGI
program.
13. The method of claim 8, wherein said step of embedding further comprises
the step of:
modifying an identified continuation which is an invocation to a CGI
program to invoke a CGI converter program with the identified
continuation, an argument counter which indicates a number of arguments
associated with the CGI program, and the state information passed as
arguments, wherein said step of embedding is performed by the converter
program.
14. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to provide a method for
preserving state information in a conversation between a client adapted to
request services from one or more servers which are networked via a
stateless protocol to the client, said services including one or more of
data and programs which the client may request, wherein the conversation
is a sequence of communications between the client and one or more servers
for said services wherein each response from the server includes one or
more continuations which enable another request for said services and
wherein the client must invoke one of the continuations to continue the
conversation, the method comprising the steps of:
the client initiating the conversation with the server using the stateless
protocol;
detecting when the request for a service requires preservation of the state
information;
performing said service and identifying all continuations in an output from
said service, in response to said step of detecting;
recursively embedding the state information in all identified continuation;
and
communicating the output to the client, in response to said step of
embedding; wherein the state information is preserved and provided to all
services for the duration of the conversation.
15. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 14, wherein said step of embedding is performed by the
server and said step of communicating is in response to said step of
embedding.
16. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 15, further comprising the step of storing at least
part of the state information in a memory coupled to the server and
wherein said step of embedding includes embedding an index representing
said part of the state information in said all identified continuations.
17. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 14, further comprising the step of dynamically
downloading computer program code to the client to perform said step of
embedding which is responsive to said step of communicating the output to
the client.
18. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 14, further comprising the step of storing at least
part of the state information in a memory coupled to the client and
wherein said step of embedding includes embedding an index representing
said part of the state information.
19. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 14, further comprising the steps of:
the client selecting a second continuation from said all identified
continuations with embedded state information; and
restoring the state information from said second continuation and invoking
an associated second service with restored state information;
recursively identifying and embedding the state information in all
continuations associated with an output from said second service.
20. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 14, further comprising the step of correlating the
state information to a specific conversation.
21. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 14, wherein the client and the server are networked
via the World Wide Web, the stateless protocol is hypertext transfer
protocol, and the continuations are hyperlinks to one of hypertext markup
language files and common gateway interface programs.
22. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 21, further comprising the step of filtering one of
said hyperlinks and data output from said services according to a
predetermined criteria.
23. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 21, further comprising the step of adding one of said
hyperlinks and data to said output from said services according to a
predetermined criteria.
24. The program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 21, wherein said step of embedding further comprises
the step of:
modifying an identified continuation which is a request for an HTML file to
invoke a CGI converter program with the identified continuation and the
state information passed as arguments.
25. The program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 21, wherein said step of embedding further comprises
the step of:
modifying an identified continuation which is an invocation to a CGI
program with the identified continuation and the state information passed
as arguments, wherein said step of embedding is performed by the CGI
program.
26. The program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 21, wherein said step of embedding further comprises
the step of:
modifying an identified continuation which is an invocation to a CGI
program to invoke a CGI converter program with the identified
continuation, an argument counter which indicates a number of arguments
associated with the CGI program, and the state information passed as
arguments, wherein said step of embedding is performed by the converter
program.
27. A computer system for preserving state information in a conversation
between a client adapted to request services from one or more servers
which are networked via a stateless protocol to the client, said services
including one or more of data and programs which the client may request,
wherein the conversation is a sequence of communications between the
client and one or more servers for said services, wherein each response
from the server includes one or more continuations which enable another
request for said services and wherein the client must invoke one of the
continuations to continue the conversation, the system comprising:
the client being adapted for initiating a conversation with the server
using the stateless protocol;
state detection logic for detecting when the request for a service requires
preservation of the state information;
search logic for identifying all continuations in an output from said
service, in response to said step of detecting;
converter logic for recursively embedding the state information in all
identified continuations; and
communication logic for communicating the output to the client; wherein the
state information is preserved and provided to all services for the
duration of the conversation.
28. The computer system of claim 27, wherein said converter logic is
executed by the server and said communication logic communicates the
output with embedded state information from the server to the client.
29. The computer system of claim 28, further comprising:
a memory, coupled to the server, for storing at least part of the state
information; wherein said converter logic is adapted for embedding an
index representing said part of the state information in said all
identified continuations.
30. The computer system of claim 27, wherein said communication logic
communicates the output without embedded state information from the server
to the client; and wherein the server is adapted for dynamically
downloading said converter logic to the client for execution.
31. The computer system of claim 30, further comprising:
a memory, coupled to the client, for storing at least part of the state
information; wherein said converter logic is further adapted for embedding
an index representing said part of the state information.
32. The computer system of claim 27, wherein the client selects a second
continuation from said all identified continuations with embedded state
information, further comprising:
the converter logic being further adapted for restoring the state
information from said second continuation, invoking an associated second
service with restored state information, and recursively identifying and
embedding the state information in all continuations associated with an
output from said second service.
33. The computer system of claim 27, wherein the state information is
correlated to a specific conversation.
34. The computer system of claim 27, wherein the client and the server are
networked via the World Wide Web, the stateless protocol is hypertext
transfer protocol, and the continuations are hyperlinks to one of
hypertext markup language files and common gateway interface programs.
35. The computer system of claim 34, further comprising filter logic for
filtering one of said hyperlinks and data output from said services
according to a predetermined criteria.
36. The computer system of claim 34, further comprising integration logic
for adding one of said hyperlinks and data to said output from said
services according to a predetermined criteria.
37. The computer system of claim 34, wherein said step of embedding further
comprises the step of:
modifying an identified continuation which is a request for an HTML file to
invoke a CGI converter program with the identified continuation and the
state information passed as arguments.
38. The computer system of claim 34, wherein said step of embedding further
comprises the step of:
modifying an identified continuation which is an invocation to a CGI
program with the identified continuation and the state information passed
as arguments, wherein said step of embedding is performed by the CGI
program.
39. The computer system of claim 34, wherein said step of embedding further
comprises the step of:
modifying an identified continuation which is an invocation to a CGI
program to invoke a CGI converter program with the identified
continuation, an argument counter which indicates a number of arguments
associated with the CGI program, and the state information passed as
arguments, wherein said step of embedding is performed by the converter
program.
40. A computer system for preserving state information in a conversation
between a client adapted to request services from one or more servers
which are networked via a stateless protocol to the client, said services
including one or more of data and programs which the client may request,
wherein the conversation is a sequence of communications between the
client and one or more servers for said services wherein each response
from the server includes one or more continuations which enable another
request for said services and wherein the client must invoke one of the
continuations to continue the conversation, the system comprising:
the client being adapted for initiating the conversation with the server
using the stateless protocol;
state detection means for detecting when the request for a service requires
preservation of the state information;
search means for identifying all continuations in an output from said
service, in response to said step of detecting;
converter means for recursively embedding the state information in all
identified continuations; and
communication means for communicating the output to the client; wherein the
state information is preserved and provided to all services for the
duration of the conversation.
41. The computer system of claim 40, wherein said converter means is
executed by the server and said communication means communicates the
output with embedded state information from the server to the client.
42. The computer system of claim 41, further comprising:
a memory, coupled to the server, for storing at least part of the state
information; wherein said converter means is adapted for embedding an
index representing said part of the state information in said all
identified continuations.
43. The computer system of claim 40, wherein said communication means
communicates the output without embedded state information from the server
to the client; and wherein the server is adapted for dynamically
downloading said converter means to the client for execution.
44. The computer system of claim 43, further comprising:
a memory, coupled to the client, for storing at least part of the state
information; wherein said converter means is further adapted for embedding
an index representing said part of the state information.
45. The computer system of claim 41, wherein the client selects a second
continuation from said all identified continuations with embedded state
information, further comprising:
the converter means being further adapted for restoring the state
information from said second continuation, invoking an associated second
service with restored state information, and recursively identifying and
embedding the state information in all continuations associated with an
output from said second service.
46. The computer system of claim 45, further comprising integration means
for adding one of said hyperlinks and data to said output from said
services according to a predetermined criteria.
47. The computer system of claim 40, wherein the client and the server are
networked via the World Wide Web, the stateless protocol is hypertext
transfer protocol, and the continuations are hyperlinks to one of
hypertext markup language files and common gateway interface programs.
48. The system of claim 47, wherein said converter means further comprises:
means for modifying an identified continuation which is a request for an
HTML file to invoke a CGI converter program with the identified
continuation and the state information passed as arguments.
49. The system of claim 47, wherein said converter means further comprises:
means for modifying an identified continuation which is an invocation to a
CGI program with the identified continuation and the state information
passed as arguments, wherein said converter means comprises the CGI
program.
50. The system of claim 47, wherein converter means further comprises:
means for modifying an identified continuation which is an invocation to a
CGI program to invoke a CGI converter program with the identified
continuation, an argument counter which indicates a number of arguments
associated with the CGI program, and the state information passed as
arguments, wherein said converter means comprises the converter program.
51. A computerized method for preserving state information in a
conversation via a stateless protocol between a client adapted to request
services from one or more servers, the method comprising the steps of:
receiving a service request including state information, via the stateless
protocol;
identifying all continuations in an output from said service and
recursively embedding the state information in all identified
continuations, in response to said request; and
communicating a response including the continuations and embedded state
information, wherein the continuations enable another service request and
one of the continuations must be invoked to continue the conversation.
52. The method of claim 51, wherein said embedding is performed by a server
and said step of communicating is in response to said embedding step.
53. The method of claim 52, further comprising the step of storing at least
part of the state information in a memory coupled to the server and
wherein embedding step includes embedding an index representing said part
of the state information in said all identified continuations.
54. The method of claim 51, further comprising the step of dynamically
downloading computer program code to the client to perform said embedding
step, in response to said step of communicating the output to the client.
55. The method of claim 54, further comprising the step of storing at least
part of the state information in a memory coupled to the client and
wherein said embedding step includes embedding an index representing said
part of the state information.
56. The method of claim 51, further comprising the steps of:
receiving a second request associated with a second continuation from said
all identified continuations with embedded state information; and
restoring the state information from said second continuation and invoking
an associated second service with restored state information;
recursively identifying and embedding the state information in all
continuations associated with an output from said second service.
57. The method of claim 51, wherein the client and the server are networked
via the World Wide Web, the stateless protocol is hypertext transfer
protocol, and the continuations are hyperlinks to one of hypertext markup
language files and common gateway interface programs.
58. The method of claim 57, further comprising the step of filtering one of
said hyperlinks and data output from said services according to a
predetermined criteria.
59. The method of claim 57, further comprising the step of adding one of
said hyperlinks and data to said output from said services according to a
predetermined criteria.
60. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to provide a method for
preserving state information in a conversation via a stateless protocol
between a client adapted to request services from one or more servers, the
method comprising the steps of:
receiving a service request including state information, via the stateless
protocol;
identifying all continuations in an output from said service and
recursively embedding the state information in all identified
continuations, in response to said request; and
communicating a response including the continuations and embedded state
information, wherein the continuations enable another service request and
one of the continuations must be invoked to continue the conversation.
61. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 60, wherein said step of embedding is performed by the
server and said step of communicating is in response to said step of
embedding.
62. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 60, further comprising the step of storing at least
part of the state information in a memory coupled to the server and
wherein said step of embedding includes embedding an index representing
said part of the state information in said all identified continuations.
63. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 60, further comprising the step of dynamically
downloading computer program code to the client to perform said step of
embedding which is responsive to said step of communicating the output to
the client.
64. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 60, further comprising the step of storing at least
part of the state information in a memory coupled to the client and
wherein said step of embedding includes embedding an index representing
said part of the state information.
65. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 60, further comprising the steps of:
receiving a second request associated with a second continuation from said
all identified continuations with embedded state information; and
restoring the state information from said second continuation and invoking
an associated second service with restored state information;
recursively identifying and embedding the state information in all
continuations associated with an output from said second service.
66. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 60, wherein the client and the server are networked
via the World Wide Web, the stateless protocol is hypertext transfer
protocol, and the continuations are hyperlinks to one of hypertext markup
language files and common gateway interface programs.
67. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 66, further comprising the step of filtering one of
said hyperlinks and data output from said services according to a
predetermined criteria.
68. A program storage device readable by a computer, tangibly embodying a
program of instructions executable by the computer to perform method steps
as claimed in claim 66, further comprising the step of adding one of said
hyperlinks and data to said output from said services according to a
predetermined criteria. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
FIELD OF THE INVENTION
This invention is related to computers and computer networks. In
particular, the invention is related to computers preserving state while
communicating over networks via stateless protocols. Even more
particularly, the invention is related to a method and system for
preserving state in computers communicating over the Internet,
specifically the World Wide Web, using the HyperText Transfer Protocol
(HTTP).
CROSS-REFERENCE TO RELATED PATENTS
The present invention is related to the following United States of America
Patents:
U.S. Pat. No. 5,752,022, issued May 12, 1998, entitled: "A Method for
Creating a Hypertext Language for a Distributed Computer Network," by Chiu
et al.; and
U.S. Pat. No. 5,710,918, issued Jan. 20, 1998, entitled "Method for
Distributed Task Fulfillment of Web Browser Requests," by Lagarde et al.
These patents, which have a common assignee, International Business
Machines Corporation, Armonk, N.Y., are hereby incorporated by reference
in their entirety.
GLOSSARY OF TERMS
While dictionary meanings are also implied by certain terms used here, the
following glossary of some terms may be useful.
Internet
The network of networks and gateways that use the TCP/IP suite of
protocols.
TCP/IP
Transmission Control Protocol/Internet protocol. A packet switching scheme
the Internet uses to chop, route, and reconstruct the data it handles,
from e-mail to video.
Client
A client is a computer which issues commands to the server which performs
the task associated with the command.
Server
Any computer that performs a task at the command of another computer is a
server. A Web server typically supports one or more clients.
World Wide Web (WWW or Web)
The Internet's application that lets people seeking information on the
Internet switch from server to server and database to database by clicking
on highlighted words or phrases of interest (hyperlinks). An Internet WWW
server supports clients and provides information. The Web can be
considered as the Internet with all of the resources addressed as URLs and
which uses HTML to display the information corresponding to URLs and
provide a point-and-click interface to other URLs.
Universal Resource Locator (URL)
A way to uniquely identify or address information on the Internet. Can be
considered to be a Web document version of an e-mail address. URLs can be
cumbersome if they belong to documents buried deep within others. They can
be accessed with a Hyperlink. An example of a URL is
"http://www.arun.com:80/table.html". A URL has four components. Starting
from the left, the first specifies the protocol to use, separated from the
rest of the locator by a ":". Next is the hostname or IP address of the
target host; this is delimited by the "//" on the left and on the right by
a "/" or optionally a ":". The port number is optional, and is delimited
on the left from the hostname by a ":" and on the right by a "/". The
fourth component is the actual file name or program name. In this example,
the ".html" extension means that this is an HTML file.
Hyperlink (or Hypertext Link)
A network address embedded in a word, phrase, icon or picture that is
activated when you select it. Information about that item is returned to
the client and displayed using a Web browser.
HyperText Markup Language (HTML)
HTML is the language used by Web servers to create and connect documents
that are viewed by Web clients. HTML uses Hypertext documents. Other uses
of Hypertext documents are described in U.S. Pat. No. 5,204,947, granted
Apr. 20, 1993 to Bernstein et al.; U.S. Pat. No. 5,297,249, granted Mar.
22, 1994 to Bernstein et al.; U.S. Pat. No. 5,355,472, granted Oct. 11,
1994 to Lewis; all of which are assigned to International Business
Machines Corporation, and which are incorporated by reference herein.
Hypertext Transfer Protocol (HTTP)
HTTP is an example of a stateless protocol, which means that every request
from a client to a server is treated independently. The server has no
record of previous connections. At the beginning of a URL, "http:"
indicates the file contains hyperlinks.
Home Page
A multi-media table of contents that guides a web user to stored
information, e.g., about an organization, on the Internet.
Web Browser
A program running on a computer that acts as an Internet tour guide,
complete with pictorial desktops, directories and search tools used when a
user "surfs" the Internet. In this application the Web browser is a client
service which communicates with the World Wide Web.
HTTP Daemon (HTTPD)
An IBM OS/2 Web Server or other server having Hypertext Markup Language and
Common Gateway Interface capability. The HTTPD is typically supported by
an access agent which provides the hardware connections to machines on the
intranet and access to the Internet, such as TCP/IP couplings.
Continuations
Hypertext links (or hyperlinks) are examples of continuations in
client-server communications. A continuation is a new request which a
client may send to a server. Whenever a client requests something from a
server, the server may include one or more continuations in its response.
When a server responds to a request, it may include one or more
continuations which could be any valid requests. However, useful
continuations are generally logically related to the original request.
Conversation
A sequence of communications between a client and server in which the
server responds to each request with a set of continuations and the client
always picks the next request from the set of continuations. On the Web,
hypertext links represent continuations and a client engages in a
conversation whenever it follows hypertext links.
BACKGROUND
Networks have transformed the way people do computing. Someone with access
to a personal computer or workstation can connect to the Internet and
communicate with systems and people all over the world. The World Wide Web
(WWW or Web) is a way of using the Internet that provides the user with
access via linked documents to a wealth of information distributed
throughout the globe. The WWW also allows users to execute programs
running on remote servers. This capability enables users to obtain the
results from programs which the user cannot run locally due to hardware
and/or software limitations. It is also possible to download and run
programs stored remotely on the World Wide Web. This has the potential to
greatly increase the amount of software which is available to a computer
connected to the World Wide Web.
Network Protocols
Network protocols provide standard methods for machines to communicate with
one another. The protocols indicate how data should be formatted for
receipt and transmission across networks. Heterogeneous machines can
communicate seamlessly over a network via standard protocols. Examples of
standard Internet protocols include: HTTP, see, e.g., "Hypertext Transfer
Protocol--HTTP/1.0",
http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-v10-spec-03.html, by
T. Berners-Lee, R. Fielding, and H. Frystyk, Sep. 4, 1995; SMTP, see, e.g,
"Simple Mail Transfer Protocol". RFC 821, J. B. Postel, Information
Sciences Institute, USC, August 1982,
http://ds.internic.net/std/std10.txt.; NNTP, see, e.g., "Network News
Transfer Protocol: A Proposed Standard for the Stream-Based Transmission
of News", RFC 977, B. Kantor and P. Lapsley, UC San Diego and UC Berkeley,
February 1986, http://ds.internic.net/rfc/rfc977.txt.; FTP, see e.g., J.
Postel and J. K. Reynolds. "File Transfer Protocol (FTP)", RFC 959,
Information Sciences Institute, USC, October 1985,
http://ds.internic.net/std/std9.txt.; Gopher, see, e.g., F. Anklesaria, M.
McCahill, P. Lindner, D. Johnson, D. Torrey, and B. Alberti. "The Internet
Gopher Protocol: A distributed document search and retrieval protocol",
RFC 1436, University of Minnesota, March 1993,
http://ds.internic.net/rfc/rfc1436.txt.; and WAIS, see, e.g., F. Davis, B.
Kahle, H. Morris, J. Salem, T. Shen, R. Wang, J. Sui, and M. Grinbaum.
"WAIS Interface Protocol Prototype Functional Specification" (v 1.5),
Thinking Machines Corporation, April 1990.
The client-server model constitutes one of the dominant paradigms in
network programming, see, e.g., W. R. Stevens, "Unix Network Programming",
Prentice Hall PTR, Englewood Cliffs, N.J., 1990; and D. E. Comer,
"Internetworking with TCP/IP" vol 1., Prentice Hall, Englewood Cliffs,
N.J., 1991 which is hereby incorporated by reference in its entirety. A
server program offers a service which can be accessed by multiple users
over the network. A program becomes a client when it sends a message to a
server and waits for a response from the server. The client process, which
is typically optimized for user interaction, uses the requested service
without having to know any of the detailed workings of the requested
service or server. On the World Wide Web, "browsers" constitute client
programs while the programs sending back information to the browser
constitute server programs.
A client and server may communicate either synchronously or asynchronously.
In a synchronous communication, a client waits for a response from a
server before issuing the next request. In an asynchronous communication,
the client may issue a request to a server before one or more responses
from previous requests to the server have been received.
Many network protocols between a client and server are stateless. This
means that every request from a client to a server is treated
independently. The server has no record of previous connections. HTTP is
an example of a stateless protocol. Two advantages of using stateless
protocols are efficiency and simplicity. However, there are situations
where it is desirable for maintaining state information during
communications between the client and server. For these types of
interactions, the statelessness of protocols can present problems.
The HTTP Protocol and the World Wide Web
The most compelling application of the present invention is for browsing
the World Wide Web via the HTTP protocol, see, e.g., "Hypertext Transfer
Protocol--HTTP/1.0",
http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-v10-spec-03.html, by
T. Berners-Lee, R. Fielding, and H. Frystyk, Sep. 4, 1995, which is hereby
incorporated by reference in its entirety. Those skilled in the art will
understand, however, that the present invention is not limited to HTTP.
The relevant aspects of the Web and the limitations imposed by the
statelessness of protocols, such as HTTP, will now be discussed.
The World Wide Web consists of multiple servers networked together. Clients
typically communicate with servers using a standard browser such as are
sold under the trademarks "NETSCAPE NAVIGATOR" by Netscape, "MOSAIC" from
NCSA, or "WEB EXPLORER" by IBM. The most common method of communicating
between clients and servers is via the HTTP protocol. HTTP allows the
client to obtain data from the server either by requesting a file or
invoking a program known as a Common Gateway Interface (CGI) program which
executes on the server. CGI programming is well known in the art. See,
e.g.,"HTML and CGI Unleashed" by John December and Mark Ginsburg, Sams.net
Publishing, Indianapolis, Ind. (1995). The server then sends file or the
output from the CGI program to the client. Servers typically restrict the
files and programs which a client has the ability to access.
The server sends information to the client using the HyperText Markup
Language (HTML), see, e.g., "The HTML Sourcebook" by Ian S. Graham, John
Wiley & Sons, Inc., New York, 1995, which is hereby incorporated by
reference in its entirety. HTML documents consist of conventional ASCII
text in which the information to be displayed is interspersed with HTML
markup tags. These tags are surrounded by greater than and less than signs
(< . . . >) and instruct the browser how to interpret different parts of
documents. Browsers use Uniform Resource Locators (URLs) to uniquely
identify or address information on the Internet. Browsers read HTML
documents corresponding to the URLs and display them by following the
instructions stored in the markup tags.
The HTML code sequence below (Table 1) shows the HTML text corresponding to
the Web home page of the IBM T. J. Watson Research Center on Jun. 3, 1996.
This Web page corresponds to the URL "http://www.watson.ibm.com/". The
corresponding output that would be displayed on a standard browser
accessing this page is shown in FIG. 1.
TABLE 1
__________________________________________________________________________
The HTML source code corresponding to t | | |