WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Preserving state information in a continuing conversation between a client and server networked via a stateless protocol    
United States Patent5961601   
Link to this pagehttp://www.wikipatents.com/5961601.html
Inventor(s)Iyengar; Arun K. (Yorktown Heights, NY)
AbstractA 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 Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Inventor     Iyengar; Arun K. (Yorktown Heights, NY)
Owner/Assignee     International Business Machines Corporation (Armonk, NY)
Patent assignment
All assignments
Publication Date     October 5, 1999
Application Number     08/660,633
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     June 7, 1996
US Classification     709/229 709/203 709/218 709/228
Int'l Classification     G06F 013/38 G06F 015/17
Examiner     Rinehart; Mark H.
Assistant Examiner    
Attorney/Law Firm     Jordan; Kevin M.
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/200.32 395/200.48 395/200.53 395/200.59 395/182.02 395/182.03 395/182.05 709/202 709/218 709/223 709/229 709/228 709/203 714/4 714/5 714/7
Patent Tags     preserving state information continuing conversation between a client server networked via stateless protocol
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5774670
Montulli

Jun,1998

[0 after 0 votes]
5710918
Lagarde
707/10
Jan,1998

[0 after 0 votes]
5708780
Levergood
709/229
Jan,1998

[0 after 0 votes]
5701451
Rogers
707/1
Dec,1997

[0 after 0 votes]
5668943
Attanasio

Sep,1997

[0 after 0 votes]
5623656
Lyons
707/10
Apr,1997

[0 after 0 votes]
5218695
Noveck

Jun,1993

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


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.
 Description Submit all comments and votes
 


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