`Bhide et al.
`
`I 1111111111111111 11111 lllll lllll lllll 111111111111111 lllll 111111111111111111
`US005852717 A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,852,717
`Dec. 22, 1998
`
`[54] PERFORMANCE OPTIMIZATIONS FOR
`COMPUTER NETWORKS UTILIZING HTTP
`
`[75]
`
`Inventors: Chandrashekhar W. Bhide, Sunnyvale;
`Jagdeep Singh; Don Oestreicher, both
`of Cupertino, all of Calif.
`
`[73] Assignee: Shiva Corporation, Bedford, Mass.
`
`[21] Appl. No.: 752,500
`
`[22] Filed:
`
`Nov. 20, 1996
`
`Int. Cl.6
`.....•• ............................................... G06F 17/00
`[51]
`[52] U.S. Cl. ................................ 395/200.33; 395/200.49;
`395/200.59
`[58] Field of Search ......................... 395/200.32, 200.33,
`395/200.58, 200.59, 200.49, 200.5; 364/551.01
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,710,918
`
`1/1998 Lagarde et al. ...... .... .......... 395/200.32
`
`Primary Examiner-Ellis B. Ramirez
`Attorney, Agent, or Firm-Townsend and Townsend and
`Crew LLP
`
`[57]
`
`ABSTRACT
`
`Systems and methods of increasing the performance of
`computer networks, especially networks connecting users to
`the Web, are provided. Performance is increased by reducing
`the latency the client experiences between sending a request
`to the server and receiving a response. A connection cache
`may be maintained by an agent on the network access
`equipment to more quickly respond to request for network
`connections to the server. Additionally, the agent may main(cid:173)
`tain a cache of information to more quickly respond to
`requests to get an object if it has been modified. These
`enhancements and other described herein may be imple(cid:173)
`mented singly or in conjunction to reduce the latency
`involved in sending the requests to the server by saving
`round-trip times between computer network components.
`
`4,891,785
`5,339,435
`
`1/1990 Donohoo ............................ 395/200.32
`8/1994 Lubkin et al. ....................... 395/200.5
`
`48 Claims, 15 Drawing Sheets
`
`Start
`
`552
`
`Receive an HTTP request from a client
`
`Analyze the HTTP request
`
`No
`
`554
`
`Yes
`
`560
`
`558
`
`Send the HTTP request to the
`proxy server
`
`Send the HTTP request to the
`Web server
`
`Stop
`
`Netflix, Inc. - Ex. 1031, Page 000001
`
`IPR2021-01319 (Netflix, Inc. v. CA, Inc.)
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 1 of 15
`
`5,852,717
`
`5
`
`3
`
`r::(.17
`~
`
`(cid:143)
`
`® (cid:143) (cid:143)
`
`9
`
`FIG. 1
`
`r 104
`SYSTEM
`MEMORY
`,~
`
`r
`102
`CENTRAL
`PROCESSOR
`
`'~
`
`'
`
`'~
`
`a
`
`j.
`
`,1
`
`120
`
`r
`
`SPEAKER
`
`•
`(122 ...
`-
`
`r
`106
`
`1/0
`CONTROLLER
`
`.
`.
`
`-....-
`
`j .
`
`· /" 108
`
`DISPLAY
`ADAPTER
`
`j.
`
`' /3
`
`/' 112
`
`' 19
`
`, /'116
`
`, /'118
`
`MONITOR
`
`REMOVABLE
`DISK
`
`KEYBD
`
`FIXED
`DISK
`
`NETWORK
`INTERFACE
`
`FIG. 2
`
`Netflix, Inc. - Ex. 1031, Page 000002
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 2 of 15
`
`5,852,717
`
`202
`
`D ..
`
`Internet
`
`206
`
`D a
`
`204
`
`D ..
`
`CJ
`
`FIG. 3
`
`Netflix, Inc. - Ex. 1031, Page 000003
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 3 of 15
`
`5,852,717
`
`co
`LO
`C\J
`
`~
`Q)
`~
`Q)
`en
`
`0 co
`C\J
`
`CJ)
`CJ)
`Q) -u C:
`u Q)
`<t: E
`~-9-
`0::,
`1=~
`Q) z
`
`C\J
`LO
`C\J
`
`~
`Q)
`
`CJ) :: e
`
`CD
`
`Netflix, Inc. - Ex. 1031, Page 000004
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 4 of 15
`
`5,852,717
`
`( Start )
`
`'
`Receive a client request to open a single V
`network connection to the server
`
`302
`
`'
`Send requests to the server to open multiple 1-----..
`network connections to the server
`
`304
`
`,,
`Send the following client request to the
`server using an open network connection
`
`I-.---'
`
`306
`
`'
`
`( Stop )
`
`FIG. 5
`
`Netflix, Inc. - Ex. 1031, Page 000005
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 5 of 15
`
`5,852,717
`
`Start
`
`Receive a client request to open a single
`network connection to the server
`
`352
`
`Scan a cache for an open network
`connection to the server
`
`354
`
`358
`
`Send a request to the server to open a
`network connection
`
`No
`
`360
`
`Send the following client request to the
`server using the open network connection
`
`Yes
`
`No
`
`No
`
`Stop
`
`Yes
`
`366
`
`Send at least one request to the server to _______ _,
`open a network connection to the server
`
`FIG. 6
`
`Netflix, Inc. - Ex. 1031, Page 000006
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 6 of 15
`
`5,852,717
`
`C Start )
`·~
`
`Receive a client request to get an object from
`the server and forward to the server
`
`r---,
`
`402
`
`Receive the object from the server and
`forward to the client
`
`r--....,
`
`404
`
`Receive a client request to get the object
`from the server if it has been modified and
`forward to the server
`
`r-...., 406
`
`Receive a response from the server that the
`object has not been modified and forward to
`the client
`
`.............. 408
`
`Store an identifier for the object and a
`timestamp in a cache
`
`..............
`
`410
`
`Receive a client request to get the object
`from the server if it has been modified
`
`..............
`
`412
`
`A
`
`FIG. 7 A
`
`Netflix, Inc. - Ex. 1031, Page 000007
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 7 of 15
`
`5,852,717
`
`418
`
`No
`
`Send the client request to get the object
`from the server if it has been modified
`
`Yes
`
`416
`
`420
`
`Create a response that the object has
`not been modified and send to
`the client
`
`Receive and forward the response that
`the object has not been modified or the
`object to the client
`
`422
`
`Update the cache
`
`Stop
`
`FIG. 78
`
`Netflix, Inc. - Ex. 1031, Page 000008
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 8 of 15
`
`5,852,717
`
`Start
`
`452
`
`Get an identifier for an object from
`the cache
`
`Yes
`
`Yes
`
`No
`
`Stop
`
`456
`
`No
`
`Send a request to get the object
`from the server if it has been
`modified
`
`458
`
`Update the cache
`
`FIG. 8
`
`Netflix, Inc. - Ex. 1031, Page 000009
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 9 of 15
`
`5,852,717
`
`co
`0
`l.()
`
`-.:t-
`0
`l.()
`
`,_
`Q)
`C:
`Q) en
`
`(J) en
`Q) -u C
`u Q)
`<C E
`-c .9-
`::::,
`0
`}; 0-
`a> LU
`z
`
`0 .,....
`
`l.()
`
`C\I
`.,....
`l.()
`
`,_
`Q)
`C:
`
`Q) en t a..
`
`C\I
`0
`l.()
`
`CX)
`0
`l.()
`
`,_
`(l)
`
`(J) :: e
`
`CD
`
`Netflix, Inc. - Ex. 1031, Page 000010
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 10 of 15
`
`5,852,717
`
`Start
`
`552
`
`Receive an HTTP request from a client
`
`Analyze the HTTP request
`
`No
`
`554
`
`Yes
`
`560
`
`558
`
`Send the HTTP request to the
`proxy server
`
`Send the HTTP request to the
`Web server
`
`Stop
`
`FIG. 10
`
`Netflix, Inc. - Ex. 1031, Page 000011
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 11 of 15
`
`5,852,717
`
`c.o
`0 c.o
`
`....
`Q)
`C:
`Q) en
`
`en
`en
`Q) ......
`U C
`(.) Q)
`~E
`..... -0 ~
`~ 0..
`~jI
`Q) z
`
`,-(cid:173)
`,--
`
`C)
`LL
`
`N
`0
`c.o
`
`0
`, -
`co
`
`co
`0 c.o
`
`....
`Q)
`en
`;:
`....
`0
`m
`
`~
`0
`0
`:c
`"E
`-~
`(.)
`
`0
`(.)
`
`Cl.. (.)
`
`0 e~
`-c .s Oen
`~
`Q) z
`
`Netflix, Inc. - Ex. 1031, Page 000012
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 12 of 15
`
`5,852,717
`
`C Start
`
`'
`
`Intercept a first client request to open a
`network connection to the server
`
`r""-
`
`622
`
`'
`
`Immediately respond that the network
`connection has been opened
`
`r--.,
`
`624
`
`,
`
`Intercept a second client request to the
`server
`
`r,.......,
`
`626
`
`,
`
`Send the second client request and an
`identifier for the server to the agent
`
`r,.......,
`
`628
`
`,,
`
`( Stop
`
`)
`
`FIG. 12
`
`Netflix, Inc. - Ex. 1031, Page 000013
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 13 of 15
`
`5,852,717
`
`( Start J
`
`'"
`Receive a request from the client hook, the
`request including an identifier for the server
`
`......__,552
`
`Send a request to the server to open a network
`connection or use a cached connection
`
`654
`
`i---,._,
`
`Send the request to the server over an open
`network connection
`
`i---,._, 656
`
`...
`( Stop )
`
`FIG. 13
`
`Netflix, Inc. - Ex. 1031, Page 000014
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 14 of 15
`
`5,852,717
`
`( Start )
`
`' .
`
`Store a first header in a request from the
`client hook to the server
`
`k-.., 6 7 2
`
`Receive a second request from the client hook
`that includes differences between the first
`header and a second header
`
`r--- 67 4
`
`Reconstruct the second header from the stored ~ 676
`first header and the differences
`
`Send the second request to the server
`including the reconstructed header
`
`k-.., 678
`
`..
`( Stop )
`
`FIG. 14
`
`Netflix, Inc. - Ex. 1031, Page 000015
`
`
`
`U.S. Patent
`
`Dec. 22, 1998
`
`Sheet 15 of 15
`
`5,852,717
`
`( Start
`
`,.
`
`(702
`
`The client hook intercepting a first
`dient request to the server that
`includes a first header
`
`r104
`
`The client hook sending the first client
`request to the agent for transmission
`to the server
`
`( 706
`
`The agent storing a copy of the
`first header
`
`..
`
`( 708
`
`The agent sending the first client
`request to the server
`
`r 714
`
`The agent receiving the modified
`~ second client request from the
`client
`
`,Ir
`
`r 716
`The agent reconstructing the second
`header from the stored first header
`and differences
`
`( 718
`
`( 710
`
`The agent sending the second client
`request to the server including the
`reconstructed header
`
`,1,
`
`( Stop )
`
`The client hook intercepting a second
`client request from the client to the
`server that includes a second header
`
`, I.
`
`( 712
`
`The client hook modifying the second
`client request to include differences
`between the first and second headers ---(cid:173)
`instead of the first header
`
`FIG. 15
`
`Netflix, Inc. - Ex. 1031, Page 000016
`
`
`
`5,852,717
`
`1
`PERFORMANCE OPTIMIZATIONS FOR
`COMPUTER NETWORKS UTILIZING HTTP
`
`BACKGROUND OF THE INVENTION
`
`The present invention is related to increasing performance
`of networked computer systems and, more particularly,
`increasing the performance of computer systems accessing
`the World Wide Web ("Web") on the Internet.
`The Internet is a network which provides avenues for
`worldwide communication of information, ideas and mes(cid:173)
`sages. Although the Internet has been utilized by academia
`for decades, recently there has been almost an explosion of
`interest in the Internet and the information residing thereon.
`The Web accounts for a significant part of the growth in the
`popularity of the Internet, perhaps because of the user(cid:173)
`friendly graphical user interfaces ("GUis") of browsers that
`are readily available for accessing the Web.
`The World Wide Web makes hypertext documents avail(cid:173)
`able to users over the Internet. A hypertext document does 20
`not present information linearly like a book, but instead
`provides the reader with links or pointers to other locations
`so that the user may jump from one location to another. The
`hypertext documents on the Web are accessed through the
`client/server protocol of Hypertext Transport Protocol 25
`("HTTP").
`The Internet utilizes the Transmission Control Protocol/
`Internet Protocol ("TCP/IP") to network very diverse and
`dissimilar systems. In Windows 3.x environments, the
`browser typically utilizes a dynamic link library WIN- 30
`SOCK.DLL to communicate with the TCP/IP-based Inter(cid:173)
`net. Although the hardware backbone of the Internet is a
`series of high-speed communications links between
`educational, research, government, and commercial main(cid:173)
`frame computer systems, a great number of the users that 35
`access the Web utilize a browser that is connected to the
`Internet through a relatively slow or weak link ( e.g., a 28.8K
`modem over an analog phone line) to network access
`equipment networked to the Internet.
`The network access equipment typically has a fast con- 40
`nection to the Internet (e.g., a T-1 connection at 1.54 MB).
`Network access equipment may be a remote access server
`for allowing remote users to connect to intranet and Internet
`resources. Such a remote access server, the LanRover™
`Access Switch remote access server, is available from Shiva
`Corporation, Bedford, Mass. Other types of network access
`equipment are utilized by Internet Service Providers
`("ISPs") to provide Internet access to customers. Thus, the
`network access equipment is networked between the com-
`puter running the browser and the Web server providing
`what is called the Point of Presence ("POP") for the user.
`Network performance in general is hampered because the
`network link between users and their POP commonly has a
`significantly lower bandwidth than the network link between 55
`the POP and the Web server. Additionally, there is a signifi(cid:173)
`cant amount of latency in conventional networks while the
`client waits for a response from the Web server. Accordingly,
`there is a need for systems and methods for increasing the
`performance of the computer networks, preferably without
`requiring modification of existing browsers.
`
`45
`
`50
`
`2
`riences between sending a request to the server and receiv(cid:173)
`ing a response. A connection cache may be maintained by an
`agent on the network access equipment to more quickly
`respond to request for network connections to the server.
`5 Additionally, the agent may maintain a cache of information
`to more quickly respond to requests to get an object if it has
`been modified. These enhancements may be implemented
`singly or in conjunction to reduce the latency involved in
`sending the respective requests to the server by saving
`10 round-trip times between the agent and the server. The
`invention complements caching provided by browsers and
`other components (e.g., proxy servers).
`Performance may also be increased by the network access
`equipment sending an HTTP request to either the Web server
`15 or a proxy server based on an analysis of the HTTP request.
`The Web browsers may then utilize a proxy server
`transparently, without specifically sending requests to the
`proxy server.
`Additionally, performance may be increased by effec-
`tively increasing the effectively bandwidth of the weak link
`between the client and the network access equipment. A
`client hook intercepts client requests to the server and
`modifies the client requests to increase performance. The
`modified requests are then sent to the agent which recon(cid:173)
`structs the client requests from the modified requests and
`sends the client requests to the server. For example, multiple
`client requests may be combined into a single modified
`requests or individual client requests may be intelligently
`compressed for more efficient utilization of the weak link.
`In one embodiment, the present invention provides a
`method executed by an agent in a computer network
`between clients and a server for increasing performance
`between the clients and the server, the method comprising
`the steps of: receiving a first request from a client to open a
`single network connection to the server; sending a plurality
`of requests to the server to open a plurality of network
`connections to the server; receiving a second request from
`the client; and sending the second request to the server using
`one of the plurality of network connections. Accordingly, the
`plurality of network connections to the server are opened in
`response to the first request from the client to open a single
`network connection.
`In another embodiment, the present invention provides a
`method executed by an agent in a computer network
`between clients and a server for increasing performance
`between the clients and the server, the method comprising
`the steps of: receiving a first request from a client to get an
`object from the server if the object has been modified after
`a specific timestamp; sending the first request to the server;
`receiving a first response from the server that the object has
`not been modified after the specific timestamp; sending the
`first response to the client; storing an identifier for the object
`and a timestamp in a cache; receiving a second request from
`the client to get the object from the server if the object has
`been modified after the specific timestamp; and if the
`timestamp stored in the cache is within a predetermined
`amount of time from the current time, sending a second
`response to the client that the object has not been modified
`after the specific timestamp without sending the second
`request to the server.
`In another embodiment, the present invention provides a
`method executed by an agent in a computer network
`between a client and a Web and proxy servers for increasing
`65 performance between the client and the Web server, com(cid:173)
`prising the steps of: receiving an HTTP request from a
`client; and sending the HTTP request to either the Web
`
`60
`
`SUMMARY OF THE INVENTION
`
`The present invention provides systems and methods of
`increasing the performance of computer networks, espe(cid:173)
`cially networks connecting users to the Web. Performance
`may be increased by reducing the latency the client expe-
`
`Netflix, Inc. - Ex. 1031, Page 000017
`
`
`
`5,852,717
`
`4
`FIG. 11 is a block diagram of a browser connected to a
`Web server through network access equipment in which a
`client hook intercepts requests from the browser;
`FIG. 12 shows a flowchart of a process of a client hook
`immediately responding that network connection has been
`opened in response to a request to open a network connec(cid:173)
`tion to the server;
`FIG. 13 shows a flowchart of a process of an agent
`receiving a request from the client hook that includes a
`request from the client and an identifier for the server to
`which the request should be sent;
`FIG. 14 shows a flowchart of a process of an agent storing
`a header and reconstructing another header from the differ(cid:173)
`ences between the headers; and
`FIG. 15 shows a flowchart of a process of a client hook
`and agent increasing the performance of header transmis(cid:173)
`sion.
`
`3
`server or the proxy server depending on the HTTP request,
`the proxy server storing information available on the Web
`server. Accordingly, the client does not need to be modified
`or configured to utilize the proxy server.
`In another embodiment, the present invention provides a 5
`method for increasing performance between a client on a
`client computer and a server utilizing a client hook on the
`client computer and an agent between the client computer
`and the server, comprising the steps of: the client hook
`intercepting requests from the client to the server; the client 10
`hook modifying the requests from the client; the client hook
`sending the modified requests to the agent; the agent recon(cid:173)
`structing the requests from the client according to the
`modified requests; and the agent sending the requests from
`the client to the server. The client hook may intercept
`requests from the client to open a network connection to the 15
`server and immediately respond so that the client does not
`have to wait for a response that a network connection is
`open. The agent may open the network connection when
`required or store a cache of open network connections to the
`server. Also, the client hook may intercept requests from the 20
`client to compress information into changes from informa(cid:173)
`tion in a previous request. The agent has the previous
`information stored and reconstructs the hew information
`from the changes. Thus, the communication between the
`client hook and the agent increases performance of commu- 25
`nication between the client and the server.
`A feature of the present invention is that performance is
`increased without necessitating modification of the client or
`server. As no modifications of a Web browser is required, the
`enhancements may be implemented to transparently
`increase the performance of the browser, regardless of the
`browser that is utilized. Other features and advantages of the
`present invention will become apparent upon a perusal of the
`remaining portions of the specification and drawings.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 illustrates an example of a computer system used
`to execute software of an embodiment of the present inven(cid:173)
`tion;
`FIG. 2 shows a system block diagram of a typical com(cid:173)
`puter system used to execute software of an embodiment of
`the present invention;
`FIG. 3 shows a diagram of multiple computers networked
`over the Internet;
`FIG. 4 is a block diagram of a browser connected to a Web 45
`server through network access equipment including an
`agent;
`FIG. 5 shows a high level flowchart of a process of
`opening multiple network connections to the server in
`response to a request to open a single network connection;
`FIG. 6 shows a flowchart of another process of opening
`multiple network connections to the server in response to a
`request to open a single network connection utilizing a
`cache;
`FIG. 7A and 7B show flowcharts of a process of increas(cid:173)
`ing performance of requests to get an object on the server if
`it has been modified utilizing a cache;
`FIG. 8 shows a flowchart of a process of periodically
`refreshing information in the cache utilized in FIGS. 7 A and 60
`7B;
`FIG. 9 is a block diagram of a browser connected to a Web
`server through network access equipment which utilizes a
`proxy server to increase performance;
`FIG. 10 shows a flowchart of a process of directing an
`HTTP request to either the Web server or the proxy server
`depending on the request;
`
`DESCRIPTION OF PREFERRED
`EMBODIMENTS
`In the description that follows, the present invention will
`be described in reference to preferred embodiments that
`increase the performance of Web browsers utilizing a weak
`link to network access equipment. The present invention,
`however, is not limited to any particular embodiment or
`computer network. Therefore, the description the embodi(cid:173)
`ments that follow is for purposes of illustration and not
`limitation.
`FIG. 1 illustrates an example of a computer system used
`30 to execute software of an embodiment of the present inven(cid:173)
`tion. FIG. 1 shows a computer system 1 which includes a
`monitor 3, screen 5, cabinet 7, keyboard 9, and mouse 11.
`Mouse 11 may have one or more buttons such as mouse
`buttons 13. Cabinet 7 houses a CD-ROM drive 15, a system
`35 memory and a hard drive (see FIG. 2) which may be utilized
`to store and retrieve software programs incorporating com(cid:173)
`puter code that implements the present invention, data for
`use with the present invention, and the like. Although a
`CD-ROM 17 is shown as an exemplary computer readable
`40 storage medium, other computer readable storage media
`including floppy disks, tape, flash memory, system memory,
`and hard drives may be utilized. Cabinet 7 also houses
`familiar computer components (not shown) such as a central
`processor, system memory, hard disk, and the like.
`FIG. 2 shows a system block diagram of computer system
`1 used to execute the software of an embodiment of the
`present invention. As in FIG. 1, computer system 1 includes
`monitor 3 and keyboard 9. Computer system 1 further
`includes subsystems such as a central processor 102, system
`50 memory 104, 1/0 controller 106, display adapter 108,
`removable disk 112 (e.g., CD-ROM drive), fixed disk 116
`(e.g., hard drive), network interface 118, and speaker 120.
`Other computer systems suitable for use with the present
`invention may include additional or fewer subsystems. For
`55 example, another computer system could include more than
`one processor 102 (i.e., a multi-processor system) or a cache
`memory.
`Arrows such as 122 represent the system bus architecture
`of computer system 1. However, these arrows are illustrative
`of any interconnection scheme serving to link the sub(cid:173)
`systems. For example, a local bus could be utilized to
`connect the central processor to the system memory and
`display adapter. Computer system 1 shown in FIG. 2 is but
`an example of a computer system suitable for use with the
`65 present invention. Other configurations of subsystems suit(cid:173)
`able for use with the present invention will be readily
`apparent to one of ordinary skill in the art.
`
`Netflix, Inc. - Ex. 1031, Page 000018
`
`
`
`5,852,717
`
`5
`Preferred embodiments of the invention increase the
`performance of Web browsers' (or clients') access to the
`Web on the Internet. FIG. 3 shows a diagram of multiple
`computers networked over the Internet. Computers 202, 204
`and 206 are interconnected by the Internet 208, which is a 5
`series of high-speed communications links between
`educational, research and commercial computer sites around
`the world. Internet computers use the TCP/IP as the com(cid:173)
`munications protocol.
`The Web utilizes the HTTP client/server protocol, which 10
`is a request-response protocol. HTTP transactions include
`four stages: connection, request, response, and disconnec(cid:173)
`tion. In the connection stage, the client attempts to open a
`network connection to the server. Unless otherwise
`specified, HTTP attempts to use port 80 on the server for this
`connection. Establishing a connection involves one round- 15
`trip time from the client to the server as the client requests
`to open a network connection and the server responds that a
`network connection has been opened. Although the discus(cid:173)
`sion herein focuses on version 1.0 of HTTP, the invention is
`not limited to any version of HTTP or to HTTP specifically. 20
`After a network connection is open, the client may send
`an HTTP request to the server in the request stage. A request
`stage involves one half of a round-trip time as the request
`goes from the client to the server. Once the server receives 25
`the request, the server responds by sending a response to the
`client in the response stage. As with the request, the response
`stage involves one half of a round-trip time as the response
`goes from the server to the client.
`The disconnection stage closes the network connection to
`the server. This stage involves one half of a round-trip time
`and may occur many different ways. The server may close
`the connection after the response is sent or by the client by
`sending a Stop sequence (e.g., the user clicked on the Stop
`button in the browser or the Back/Forward buttons). Con(cid:173)
`ventional browsers show each of the four stages on a status
`line on the screen.
`The terms of "client" and "server" are relative terms. A
`client is an entity that is making a request to a server which
`typically responds back to the client. However, these labels
`are request-response specific and are not an indication that
`the entities' roles are fixed. In preferred embodiments, the
`client is a browser and the server is a Web server. The
`browser may be executed on a computer similar to the one
`shown in FIGS. 1 and 2. The server may be similar but is
`typically a much more powerful system including faster
`subsystems and more storage capacity.
`FIG. 4 is a block diagram of a browser connected to a Web
`server through network access equipment including an
`agent. The computer network shown includes a Web browser
`252, network access equipment 254 and a Web server 256.
`The browser communicates over a link to the network access
`equipment via a network protocol (e.g., TCP/IP) stack 258.
`The browser and network protocol stack reside on the client
`computer system. The network access equipment is typically 55
`an electronic box and may include some of the subsystems
`shown in FIG. 2. The Web server resides on a server which
`is typically a remote computer system.
`The network access equipment includes an agent 260. The
`agent is a program that includes embodiments of the inven- 60
`tion. The computer code for the agent may reside on any
`computer readable storage medium including dynamic ran(cid:173)
`dom access memory, electrically erasable programmable
`read only memory, or flash memory just to name a few. In
`a preferred embodiment, the agent resides on a LanRover™ 65
`Access Switch remote access server available from Shiva
`Corporation, Bedford, Mass.
`
`6
`FIG. 5 shows a high level flowchart of a process of
`opening multiple network connections to the server in
`response to a request to open a single network connection.
`The process shown is executed by an agent on the network
`access equipment. At step 302, the agent receives a client
`request to open a single network connection to the server.
`In response to the client request to open a single network
`connection to the server, the agent sends multiple requests to
`the server to open multiple network connections to the
`server at step 304. Thus, multiple network connections to the
`server are opened in response to a client request to open a
`single network connection. Preferably, the agent requests
`persistent network connections. Once one of the network
`connections is open, the agent will receive a response from
`the server and send that response to the client. The client will
`then issue a request to the server over the open network
`connection which will be received by the agent. At step 306,
`the agent sends the following client request to the server
`using the open network connection.
`Oftentimes, the agent will receive another client request to
`open a single network connection to the server. Since the
`agent previously opened multiple network connections, the
`agent responds immediately that a network connection is
`available, thus saving a round-trip time between the agent
`and server. The client then issues the following client request
`over the open network connection. The agent may store the
`open network connections in a cache, which will be
`described more detail in reference to FIG. 6.
`For simplicity, the discussion herein describes the inter-
`action of the agent with a single client browser and a single
`Web server. However, in practice, the agent is typically in
`communication with multiple clients and multiple Web
`servers. The methods of the present invention are not
`isolated to increasing the performance of each individual
`client alone. For example, one client may open multiple
`network connections to the server by issuing a request to
`open a single network connection. Subsequently, another
`client may request to open a single network connection to
`the same server. The agent may then immediately grant a
`network connection to this client as a network connection
`has already been opened. Thus, the actions of one client may
`also result in an increase in performance of other clients. The
`agent preferably opens another network connection to the
`server to replace the one that has become used.
`FIG. 6 shows a flowchart of another process of opening
`multiple network connections to the server in response to a
`request to open a single network connection utilizing a
`cache. In this embodiment, the agent maintains a cache of
`50 network connections to the server (or servers). At step 352,
`the agent receives a client request to open a single network
`connection to the server.
`The agent scans the cache for an open network connection
`to the server at step 354. If an open network connection to
`the server is not available in the cache at step 356, the agent
`sends a request to the server to open a network connection.
`Although this embodiment opens a single network connec(cid:173)
`tion at this point and makes a subsequent determination if
`connection caching improves performance, in another
`embodiment, the agent sends multiple requests to the server
`to open multiple network connections and bypasses the
`subsequent determination.
`If an open network connection to the server is available in
`the cache, the agent sends a response to the client that a
`network connection is open. The client sends a client request
`to the server using the open network connection which the
`agent sends to the server at step 360.
`
`40
`
`45
`
`30
`
`35
`
`Netflix, Inc. - Ex. 1031, Page 000019
`
`
`
`5,852,717
`
`7
`At step 362, the agent determines if network connection
`caching for the server improves performance. This determi(cid:173)
`nation may be made from many factors including the
`number of times the agent has a "hit" in the cache, the
`overhead required to maintain the cache, whether the server 5
`is allowing the network connections to stay open in response
`to a request to "keep open" the connection (i.e., persistent
`connection), and the like. The agent may request that the
`server "keep open" the connection but honoring this request
`is at the discretion of the server.
`The agent checks if all the network connections to the
`server in the cache are in use at step 364. If connection
`caching does improve performance and all the network
`connections to the server are in use, the agent sends at least
`one request to the server to open a network connection at
`step 366. Multiple network connections may be opened to
`the server if it has been determined that this improves
`performance. For example, it may be beneficial to have a
`predetermined number (e.g., user specified or determined by
`the agent as it monitors performance) of network connec(cid:173)