throbber
United States Patent [19J
`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)

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket