(PICTURE)(PICTURE) (PICTURE)Europäis hes Patentamt
(1 9) (PICTURE) European Patent Offi_e
(PICTURE) Offi_e euroPéen des brevets (1 1 ) E _ O 823 _ _3 B_
(1 2) EUROPEAN PATENT _PECl FICATlON
(45) Date of pUbliCation and mention (51 ) Int CI.7_. HO4_ 29JO8
of the grant of the patent_.
31 _O5_2OOO BUlletin 2OOOl22 (86) InternationaI appIication number_.
PCTIUS96l11553
(21 ) Application number_. 9692375O.2 (87) International publication number_.
(PICTURE)(22) Date of filing_. 11 .O7.1996 wo g7l3o554 (21 .o8.1gg7 _azette 1gg7l36)
(54) REDUCED OVERHEAD TCP COMMUNICATlON _Y_TEM
TCP-KOMMUNIKATlONSSYSTEM MIT REDUZl ERTEM ZUSATZAUFWAND
(PICTURE)(PICTURE)
SYSTEME DE COMMUNICATlONS EN PROTOCOLE TCP REDUISANT LES TEMPS SYSTEME
__
__
__
_ N w. h. . h f h bI. . f h . f h f h E .
OO Ote'_ It In nIne mOnt S rOm t e PU ICatIOn O t e mentIOn O t e 9rant O t e UrOPean Patent_ anY PerSOn maY 9IVe
o nOtiCe tO the EUrOpean Patent OffiCe Of OppOSitiOn tO the EUrOpean patent granted. NOtiCe Of OppOSitiOn Shall be filed in
ii a written reasoned statement. It shall not be deemed to have been filed until the opposition fee has been paid. (Art.
w (PICTURE)99(1 ) European Patent Convention). Printed by Jouve, 75OO1 PARIS (FR)
1 EP O 823 173 B1 2
Des_ription by the browser. A web server acts as the server for the
client and processes the web browsers requests and re-
FieId of the Invention turns the requested response as an HTML data portion
(PICTURE) of a HTTP data stream.
[OOO1] The present invention relates to communica- 5 [OOO5] As an example of a typical world wide web
tions between client server applications such as a web communication the case of a web browser initiating a
browser and a web server. More particularly the present request for a ''home page'' from the web server illus-
invention relates to communications over a low-speed trates the basic relationship between HTTP, HTML, TCP
or wireless communication link between two computers, and the web browser and server. When the user of the
one running a client application and the other running a 1O web browser requests information from a specific web
server application wherein the communications utilize site, the web browser initiates communication with the
TCP/IP as the communication protocols. web server by sending a ''get'' request to the web server
specifying the Universal Resource Locator (URL) of the
(PICTURE) desired web site which, for purposes of this example,
15 may be a ''home page.'' The URL acts as the address
[OOO2] The recent publicity and emphasis on the ''in- of the web site and is unique throughout the Internet.
formation superhighway'' has increased awareness and The web server would then obtain and supply the web
acceptance of the Internet as a mass communication browser with the HTML data corresponding to the home
media. This broad based recognition of the Internet as page specified by the URL. This operation may involve
a viable media for communication and interaction 2O further communications on the lnternet by the lnternet
across multiple networks has also created a large es- web server or the URL may specify the server which is
tablished user base built upon the Internet standardized in the local network to which the browser is attached.
protocols for interaction between computer networks. The web browser would then evaluate the HTML data
[OOO3] The paradigm forthe Internet is that of a client- received as an HTTP data stream from the web server
server relationship where Internet clients (browsers) 25 to see if there were any embedded hyper-links such as
communicate with Internet servers. To provide greater an icon or an image and, if such a hyper-linkexists would
access to the Internet the communication protocols and initiate requests specifying the URL of the hyper-link to
Ianguages utilized by the clients and servers have be- obtain the specified data. This data would then be incor-
come standardized. These protocols include the Hyper- porated into the home page and displayed to the user.
Text Transfer Protocol (HTTP), which is the communi- 3O As is seen in this simple example, a single user input
cation protocol used for communications between cli- request by a web browser may result in multiple addi-
ents and servers, and the Transfer Control Protocol/ln- tional requests which are automatically carried out by
ternet Protocol (TCP/l P) the TCP portion of which is the the web browser in response to the receipt of the HTML
transport specific protocol for communication between data corresponding to the user input request.
computers or applications. Also standardized is the lan- 35 [OOO6] The basic communication structure for an In-
guage in which clients and servers communicate which ternet based system is depicted in Figure 1 . In Figure
is called Hyper-Text Markup Language (HTML). Be- 1 a web browser 1 O communicates with a web server
cause these protocols and language are machine inde- 2O over a communication link 15. This communication
pendent, and utilize a connection-less best-efforts pro- link is typically a local area network connection, wide
tocol tosending information, each transaction is fullyself 4O area network connection, a connection over telephone
contained. Thus, for example, each message from a cli- lines or a combination thereof. The web browser 1 O
ent contains information about the capabilities of the communicates with the web server2O using TCP/l P. For
browser and is independent of any other communica- the majority of Internet communications a web browser
tions for the communication to be completed. This self- communicates with a web server using the generic com-
contained nature of the communications between a cli- 45 munication protocol HTTP which is transmitted between
ent and a server may be referred to as ''stateless'' com- the web browser and the web server over the TCP/l P
munications and increases the amount of data which link between the web browser and the web server. The
must be transferred between a client and a server for a actual datatransferred between the web browser 1 O and
given communication. the web server 2O are HTTP data objects (e.g. HTML
[OOO4] In the context of the World Wide Web client/ 5O data) as described above. The web server 2O may be a
server applications the client may be a web browser proxy which receives web browser communications
which acts as the user interface. The web browser from a number of web browsers and routes them to the
sends user requests to the appropriate web server and appropriate server.
formats and displays the HTML data returned from the [OOO7] The popularity of the web browser/web server
web server. The web browser also evaluates the HTML 55 and their common information and transpo_ protocols,
data to determine if there are any embedded hyper-link HTML and HTTP, has lead to rapid acceptance of web
statements in the HTML data which would require sub- technology as a universal interface for network access
sequent browser requests which would then be initiated to information. Furthermore, because the protocols and
2
3 EP O 823 1 73 B1 4
Ianguage for communication between web browsers resident in a first computer and to a second application
and web servers are standardized the communication resident in a second computer wherein the data is trans-
protocols and language will be the same whether a user mitted over an external communication linkfrom the first
is using Netscape NavigatorTM, NCSA MosaicTM, We- computer to the second computer utilizing the TCP com-
bExplorerTM or any other web browser as their web 5 munication protocol. The method includes establishing
browser to access network information. Therefore, the a first virtual socket in the first computer in response to
Iarge installed user base for web browsers combined each connection request by the first application for re-
with the connectivity of the Internet and the ease of writ- ceiving request data originated by the first application.
ing web application servers using the HTTP defined Afirst real socket is established in the first computer and
Common Gateway Interface (CGl)make web technolo- 1O a second real socket is established in the second com-
gy very attractive for a large class of forms-based appli- puter to connect the first computer to the second com-
cations. puter over the external communication link. In the sec-
[OOO8] At the same time that the Internet was growing ond computer a second virtual socket is established for
in popularity and acceptance, mobile computing was al- each connection request by the first application wherein
so increasing in popularity. The use of laptops, note- 15 the second vi_ual socket corresponds to a first virtual
books, Personal Digital/Communication Assistants socket established in the first computer in response to
(PDAs/PCAs) and other portable devices has lead to an a connection request by the first application. Request
increase in demands for wireless communications. data associated with a first virtual socket is multiplexed
Wireless wide area networks, cellular communications onto the first real socket and transmitted over the exter-
and packet radio, however, suffer from common limita- 2O nal communication link utilizing the TCP protocol to the
tions if used in a web context. The high cost per byte of second real socket. The multiplexed request data is re-
communications, slow response time, low bandwidth ceived from the external communication link by the sec-
and unreliability all hamper use of wireless technology ond real socket and demultiplexed. The demultiplexed
for the stateless communication protocol of the World request data is provided to the second virtual socket
Wide Web. Also, because the web protocol is stateless 25 which corresponds to the first virtual socket established
the amount of data per request and the number of com- in response to the request from the first application. The
munication requests transferred over the wireless con- request data received by the second virtual socket is
nection are larger than would be necessary if the com- provided to the second application. Furthermore, the
munication were not self contained. Thus, combining first and second real sockets are maintained until the
wireless technology, or any low-speed communication 3O request data corresponding to a request from the first
technology, with web technology seems impractical as application which established a first virtual socket has
the strength of the web technology in its universal nature been provided to the second application.
exacerbates the weaknesses of the wireless technolo- [OO1 4] In an further embodiment of the present inven-
gy. tion response data is received from the second applica-
35 tion in response to a request from the first application at
(PICTURE)(PICTURE) the second virtual socket associated with the request
from the first application. The response data received
[OOO9] In view of the above limitations it is one object by the second virtual socket is multiplexed onto the sec-
of the present invention to provide a communication sys- ond real socket and transmitted over the external com-
tem which reduces the amount of overhead for data 4O munication link to the first real socket. The multiplexed
transfers between applications. response data is received from the external communi-
[OO1 O] It is an additional object of the present inven- cation link bythe first real socket and demultiplexed. The
tion to provide a communication system which may be demultiplexed response data is provided to the first vir-
used in a web browser/server environment. tual socket which corresponds to the request from the
[OO1 1] It is a further object of the present invention to 45 first application as the response to the request from the
be compatible with existing communication protocols first application. The first virtual socket provides the re-
and languages in a low speed or wireless communica- sponse data received by the first virtual socket to the
tion system without requiring modification of web brows- first application.
er or web server applications. [OO1 5] In an additional embodiment of the present in-
[OO1 2] It is an additional object of the present inven- 5O vention, the second virtual socket is closed after the re-
tion to provide a communication system which reduces sponse data is multiplexed. The first virtual socket is
the amount of communication required between appli- closed after the response data is provided to the first
cations utilizing the TCP/l P communication protocols application.
and thereby enhances performance of the communica- [OO1 6] In an alternative embodiment of the present in-
tion system. 55 vention, the first and second real sockets are closed
[OO1 3] In view of these and other objects, the present when all first virtual sockets are closed. Alternatively, the
invention provides a method of reducing the data trans- first and second real sockets are closed a predeter-
mitted over a communication link from a first application mined time after all first virtual sockets are closed.
3
5 EP O 823 1 73 B1 6
[OO1 7] In one particular aspect of the present inven- cept module and a server-side intercept module ac-
tion, the first application comprises a web server and the cording to one embodiment of the present invention
second application comprises a web browser. In a fur- utilizing virtual sockets;
ther aspect of the present invention the external com- Figure 1 3 (which is comprised of Figure 1 3A and
munication link comprises a wireless communication 5 Figure 1 3B which collectively form Figure 1 3) is a
link. flow diagram depicting operations carried out by a
[OO1 8] As will be appreciated by those of skill in this socket manager of either the client-side intercept
art, the above described aspects of the present inven- module or the server-side intercept module accord-
tion may also be provided as an apparatus or a program ing to one embodiment of the present invention uti-
product having computer-readable program means. 1O lizing virtual sockets;
Figure 1 4 is a flow diagram depicting operations
(PICTURE) carried out by a client-side intercept function in one
embodiment of the present invention utilizing virtual
[OO1 9] sockets;
15 Figure 1 5 is a flow diagram depicting operations
Figure 1 is a block diagram of a typical web brows- carried out by a server-side intercept function in one
er/web server system; embodiment of the present invention utilizing virtual
Figure 2 is a block diagram of a web browser/web sockets;
server system according to one embodiment of the Figure 1 6-1 is a flow diagram depicting the virtual
present invention utilizing a client intercept and a 2O create operation according to one embodiment of
server intercept; the present invention utilizing virtual sockets;
Figure 3 is a flow diagram depicting operations car- Figure 1 6-2 is a flow diagram depicting the virtual
ried out by a client-side intercept module in a pre- send operation according to one embodiment of the
ferred embodiment of the present invention imple- present invention utilizing virtual sockets;
menting a coherent caching system_, 25 Figure 1 6-3 is a flow diagram depicting the vi_ual
Figure 4 is a flow diagram depicting operations car- receive operation according to one embodiment of
ried out by a client-side intercept module in a pre- the present invention utilizing virtual sockets;
ferred embodiment of the present invention imple- Figure 1 6-4 is a flow diagram depicting the virtual
menting a coherent caching system; select operation according to one embodiment of
Figure 5 is a flow diagram depicting operations car- 3O the present invention utilizing virtual sockets;
ried out by a server-side intercept module in a pre- Figure 1 7-1 is a flow diagram depicting the virtual
ferred embodiment of the present invention imple- flush operation according to one embodiment of the
menting a coherent caching system; present invention utilizing virtual sockets; and
Figure 6 is a flow diagram depicting operations car- Figure 1 7-2 is a flow diagram depicting the virtual
ried out by a server-side intercept module in a pre- 35 close operation according to one embodiment of the
ferred embodiment of the present invention imple- present invention utilizing virtual sockets.
menting a coherent caching system;
Figure 7 is a flow diagram depicting operations car- (PICTURE)
ried out by a client-side intercept module in a pre-
ferred embodiment of the present invention imple- 4O [OO2O] The present invention now will be described
menting a differencing data transfer system; more fully hereinafter with reference to the accompany-
Figure 8 is a flow diagram depicting operations car- ing drawings, in which preferred embodiments of the in-
ried out by a client-side intercept module in a pre- vention are shown. This invention may, however, be em-
ferred embodiment of the present invention imple- bodied in many different forms and should not be con-
menting a differencing data transfer system_, 45 strued as limited to the embodiments set fo_h herein_,
Figure 9 is a flow diagram depicting operations car- rather, these embodiments are provided so that this dis-
ried out by a server-side intercept module in a pre- closure will be thorough and complete, and will fully con-
ferred embodiment of the present invention imple- vey the scope of the invention to those skilled in the art.
menting a differencing data transfer system; Like numbers refer to like elements throughout.
Figure 1 O (which is comprised of Figure 1 OA and 5O [OO21] Figures 3 to 1 O and 1 3 to 1 7-2 are flowchart
Figure 1 OB which collectively form Figure 1 O) is a illustrations of methods and systems according to the
flow diagram depicting operations carried out by a invention. It will be understood that each block of the
server-side intercept module in a preferred embod- flowchart illustrations, and combinations of blocks in the
iment of the present invention implementing a dif- flowchart illustrations, can be implemented by computer
ferencing data transfer system_, 55 program instructions. These computer program instruc-
Figure 1 1 is a block diagram of one aspect of the tions may be loaded onto a computer or other program-
present invention utilizing virtual sockets; mable apparatus to produce a machine, such that the
Figure 1 2 is a block diagram of a client-side inter- instructions which execute on the computer or other pro-
4
7 EP O 823 1 73 B1 8
grammable apparatus create means for implementing stream and reconstructs the original HTTP data stream
the functions specified in the flowchart block or blocks. corresponding to the web browser originated communi-
These computer program instructions may also be cation. This reconstructed HTTP data stream is then
stored in a computer-readable memoy that can direct transferred to the web server 2O. The web server 2O re-
a computer or other programmable apparatus to func- 5 sponds to the HTTP data stream in the normal manner
tion in a particular manner, such that the instructions of an Internet web server. As will be appreciated by one
stored in the computer-readable memoy produce an ar- of skill in the art, the web server 2O may also be a proxy
ticle of manufacture including instruction means which which allows multiple browsers to connect to the Inter-
implement the function specified in the flowchart block net.
or blocks. The computer program instructions may also 1O [OO25] When information is received by the web serv-
be loaded onto a computer or other programmable ap- er 2O for transmission to the web browser 1 O, for exam-
paratus to cause a series of operational steps to be per- ple, in response to a browser request for a specific URL
formed on the computer or other programmable appa- home page, the web server 2O outputs an HTTP data
ratus to produce a computer implemented process such stream corresponding to the communication to be sent
that the instructions which execute on the computer or 15 to the web browser 1 O. This web server originated com-
other programmable apparatus provide steps for imple- munication is intercepted by the server-side intercept
menting the functions specified in the flowchart block or module 4O and transformed by a client/server specific
blocks. data stream. The client/server specific data stream cor-
[OO22] Accordingly, blocks of the flowchart illustra- responding to the web server originated communication
tions suppo_ combinations of means for performing the 2O is then sent on the external communication link 35 from
specified functions and combinations of steps for per- the second computer to the first computer. The clienU
forming the specified functions. It will also be under- server specific data stream is received by the client-side
stood that each block of the flowchart illustrations, and intercept module 3O and the original HTTP data stream
combinations of blocks in the flowchart illustrations, can corresponding to the web server originated communica-
be implemented by special purpose hardware-based 25 tion is rebuilt and provided to the web browser 1 O.
computer systems which perform the specified func- [OO26] In a particular embodiment of the present in-
tions or steps, or combinations of special purpose hard- vention, the external communication link35 is a wireless
ware and computer instructions. communication link. In such a case, in order to obtain
[OO23] Figure 2 illustrates one embodiment of the system performance which is acceptable to users, it is
present invention. As seen in Figure 2, a web browser 3O desirable to reduce the amount of communication over
1 O communicates with a client-side intercept module 3O. the external communication link35 both in the frequency
The web server 2O communicates with a server-side in- of the communications and in the amount of information
terrupt module 4O. The client-side interrupt module 3O which must be transferred over the communication link
then communicates with the server-side interrupt mod- 35. Accordingly, the present invention utilizes caching,
ule 4O over the communication link 35. The web browser 35 differencing, and protocol reduction techniques to min-
1 O and the client-side intercept module 3O may be con- imize the amount of communication required over the
tained in a first computer 5. The server-side intercept external communication link 35. These techniques are
module 4O and the web server 2O may be contained in accomplished by converting the stateless or stochastic
a second computer 6. The first computer 5 and the sec- protocols of HTTP into a client/served specific protocol
ond computer 6 communicate over external communi- 4O which utilizes information specific to the client and the
cation link 35. server to reduce the amount and frequency of commu-
[OO24] Preferably, the web browser 1 O is a Internet nications.
web browser utilizing hypertext transfer protocol (HTTP) [OO27] While the present invention has and will be de-
and hypertext markup language (HTML) to communi- scribed with respect to a single web browser application
cate with an lnternet web se_er 2O which also uses HT- 45 and a single web server application, as will be appreci-
TP and HTML. In operation, the web browser 1 O would ated by those of skill in this art, the benefits and advan-
output an HTTP data stream which is intercepted by the tages of the present invention may also be achieved with
client-side intercept module 3O. The intercept of the HT- multiple web browsers associated with a single web
TP data stream by the client-side intercept module 3O server. Thus, the methods, apparatus and program
may be accomplished through the use of the T_P/l P 5O products of the present invention in connection with mul-
Ioop-backfeature where the client side intercept module tiple browsers each communicating with a client-side in-
3O resides at an l P address having a network number tercept module and these client side intercept modules
of 1 27, such as 1 27.O.O. 1 . The client-side intercept mod- would then communicate with the server-side intercept
ule 3O then converts or transforms the HTTP data module of the web server or web proxy.
stream into a clienUserver specific protocol and trans- 55 [OO28] In one embodiment of the present invention,
mits the client/server specific data stream onto the ex- both the client-side intercept module 3O and the server-
ternal communication link 35. The server-side intercept side intercept module 4O have cache storage capabili-
module 4O receives the client/server specific data ties. The client cache resident in the first computer
5
9 EP O 823 173 B1 1 O
stores HTTP data streams to be received by the web browser originating communication, then in the simplest
browser in response to a web browser originated com- embodiment this information would be provided to the
munication. The server cache resident in the second web browser as an HTTP data stream. However, as re-
computer stores HTTP data streams which are received flected in Figure 3, the preferred embodiment of the
from the web server in response to a browser originated 5 present invention performs what is referred to herein as
communication. a coherency interval check on the cache entry corre-
[OO29] As will be appreciated by one of skill in the art, sponding tothe web browser originated communication.
the cache resident in the first computer or the second This operation is reflected in block 11 O of Figure 3.
computer may be of any size based upon the specific [OO34] The coherency interval for a client-side inter-
hardware configurations of the computers. These cach- 1O cept module may be user defined and is the length of
es store information for each communication including, time which a cache enty may exist before it becomes
the URL of the communication, a unique identifier based stale and, even if present, must be refreshed by request-
on the communications contents such as a cyclic redun- ing the information corresponding to the web browser
dancy check (CRC) of the data of the communication, originated communication from the web server. The co-
the store date time (SDT) indicating the time when the 15 herency interval check reflected in block 11 O may be
cache enty was created or refreshed and the data of carried out by comparing the current date and time to
the communication. Thus, a directory of cache entries the sum of the SDT of the cache enty corresponding to
may be created for each communication stored in the the web browser originated communication and the co-
cache. Furthermore, because of the limited resources herency interval specified bythe user. If the current date
available in any given hardware configuration, any 2O and time is greater than this sum then the information
number of caching techniques known to one of skill in stored in the cache corresponding to the web browser
the art for maintaining the caches resident in the first originated communication has become stale and the
computer and the second computer may be utilized. ''No'' branch of block 11 O istaken. However, ifthe current
Thus, for example, the cache may invalidate the oldest date and time is less than the sum of the SDT plus the
directory entry if a user defined cache size would be ex- 25 user defined coherency interval, then the ''yes'' branch
ceeded by the addition of a new entry and then the new of block 11 O is taken and, as reflected in block 111 , the
entry added in place of the invalidated entry. Further- cache entry is supplied to the browser as an HTTP data
more, cache entries may be maintained over multiple stream. Thus completing the browser originated com-
instances of the web browser or web server applications munication received by the client-side intercept module
or even power-on cycles of the first orsecond computers 3O 3O in block 1 OO of Figure 3.
to create a persistent cache. [OO35] If the coherency interval check reflected in
[OO3O] The operation of the caching structure accord- block 11 O determines that the cache enty resident in
ing to one aspect of the present invention will be now the first computer is stale, then a request is made to the
be described with reference to Figures 3 through 6, server-side intercept module 4O to check the coherency
which are flowcharts describing the operation of the cli- 35 of the cache entry resident in the second computer. This
ent-side intercept module 3O and the server-side inter- operation is reflected in block 112 of Figure 3. This is
cept module 4O. accomplished by supplying across the external commu-
[OO31] Specifically with reference to Figure 3, block nication link 35 to the server-side intercept module 4O
1 OO indicates that the client-side intercept module 3O the coherency interval for the particular client-side inter-
has received a request from the web browser 1 O. This 4O cept module 3O the HTTP request originated by the web
request may take the form of an HTTP data stream. The browser 1 O and a unique indicia of the contents of the
client-side intercept module 3O checks the uniform re- client cache correspondingtothe URLofthe web brows-
source locator (URL) of the incoming request as is re- er originated communication. In a preferred embodi-
flected in block 1 O5. The client-side intercept module 3O ment, this unique indicia is the results of a cyclic redun-
determines from the URL if the information correspond- 45 dancy check or CRC for the cache entry.
ingtothe web browseroriginated request has previously [OO36] Turning now to Figure 5 which reflects the
been stored in the client cache resident in the first com- server-side intercept module operations in response to
puter. information received over the external communication
[OO32] If the information corresponding to the URL link 35 from the client-side intercept module 3O. When
has not been previously stored in the client cache, then 5O the server-side intercept module 4O receives a request
the operations depicted in block 1 O6 are carried out by from the client-side intercept module, the server-side in-
the client-side intercept module. The client-side inter- tercept module 4O receives the predetermined client co-
cept module 3Otransmits a request on the external com- herencytime interval, the CRC value forthe client cache
munication link 35 to the server-side intercept module enty, and the HTTP request originated by the web
4O. 55 browser. The receipt of this information is reflected in
[OO33] If, however, upon interrogating the web brows- block 12O of Figure 5.
er originated communication as depicted in block 1 O5 a [OO37] After receiving the information from the client-
client cache entry exists which corresponds to the web side intercept module 3O, the server-side intercept mod-
6
1 1 EP O 823 173 B1 1 2
ule 4O checks its server cache resident in the second stream, the server-side intercept module 4O will calcu-
computerto determine if a server cache entry exists cor- late the CRC for the HTTP data stream and temporarily
responding to the URL of the HTTP request originated store the HTTP data stream. Then, as reflected in block
by the web browser. If, after interrogating the web 145, the server-side intercept module interrogates the
browser originated communication as reflected in block 5 HTTP data stream and determines if a server cache en-
125, the server-side intercept module 4O determines try corresponding the URL of the HTTP data stream ex-
that a cache enty does exist corresponding to the infor- ists. If such an enty does exist, then the ''Yes'' path of
mation requested by the web browser originated com- block 145 is carried out. The server-side intercept mod-
munication the ''Yes'' branch of block 125 is taken. The ule 4O then compares the recently calculated CRC of
server-side intercept module 4O then compares the cur- 1O the HTTP data stream received from the web server 2O
rent date and time of the SSl module 4O to the sum of with the CRC of the server cache entry corresponding
the SDT of the server cache entry corresponding to the to the URL of the web server originated response com-
information requested by the web browser originated munication as reflected in block 15O. If the CRC's are
communication and the predetermined client coherency the same, then the ''Yes'' branch of block 15O is carried
time interval received from the client-side intercept mod- 15 out. The server-side intercept module 4O updates the
ule. SDT entyforthe servercache entryas reflected in block
[OO38] If the current date and time is less than the sum 151 and empties from temporary storage the HTTP data
of the SDT for the server cache entry and the coherency stream received by the web server 2O as shown in block
interval, then the ''Yes'' path of block 13O of Figure 5 is 152.
taken. The server-side intercept module 4O then com- 2O [OO42] If the results of the CRC comparisons indicate
pares the CRC of the server cache entry to the CRC of that the server cache enty is different than the HTTP
the client cache entry to determine if the two cache en- data stream received from the web server 2O, then the
tries are identical. If the two cache entries are identical, ''No'' path of block 15O is carried out. The server-side
then the ''Yes'' path of block 135 is taken and, as reflect- intercept module 4O removes from the server cache the
ed in block 1 36, a ''coherent'' response is sent to the 25 existing data as reflected in block 153 and then, as re-
client-side intercept module 3O. flected in block 154, updates the server cache with the
[OO39] If the conditional of block 135 determines that newer information. As seen in block 154, this update in-
the CRC's are not equal, then the information contained cludes storing in the server cache the CRC of the web
in the client cache and the server cache are not identical server communication storing as part of the cache enty
and, as reflected in block 137, the server-side intercept 3O the current date and time as the SDT forthe cache enty
module sends the server cache enty to the first compu- and storing the HTTP data stream. In either case,
ter over the external communication link. In sending the whether a server cache entry is updated or whether the
server cache entry to the client-side intercept module server cache entry is found to be identical to the HTTP
3O, the server-side intercept module converts the entry data stream received from the web server 2O, the serv-
to a client specific communication protocol which in- 35 er-side intercept module then determines if the server
cludes the CRC of the server cache entry, the server cache entry is identical to the client cache enty corre-
cache enty data, and the age of the server cache entry. sponding to the web browser originating communica-
The age of the server cache enty is calculated by sub- tion. This operation is reflected in block 155.
tracting from the current date and time the SDT of the [OO43] If the server-side intercept module 4O deter-
cache entry. 4O mines that a cache entry does not exist corresponding
[OO4O] Finally, with respect to Figure 5, if either the to the response received from the web server 2O, then
sum ofthe SDT plusthe predetermined client coherency the ''No'' path of block 145 is taken. A server cache entry
time interval is less than the current date and time or if is created as reflected in block 146 by storing the URL
no cache entry exists corresponding to the URL of the of the response from the web server, by storing the CRC
web browser originated communication, then the ''No'' 45 of the response from the web se_er, by storing the HT-
path of block 13O or the ''No'' path of block 125, respec- TP data stream, and by storing as the SDT the current
tively, will be taken. Thus, the operations of block 126 date and time. After creating a cache entry correspond-
will be carried out and the server-side intercept module ing to the web browser originated communication, the
4O will send to the server the web browser originated server-side intercept module 4O then again compares
communication as an HTTP data stream. lf the server- 5O the CRC of this se_er cache entry to the CRC of the
side intercept module 4O must send the web browser corresponding client cache enty as reflected in block
originated communication to the server as an HTTP da- 155.
ta stream, then the server-side intercept module 4O will [OO44] If the results of the comparison of the server
execute the operations of Figure 6. cache enty to the client cache entry indicate that the
[OO41] As seen in Figure 6 block 14O, in response to 55 cache entries are identical, then the ''Yes'' branch of
the web browser originated communication, the server- block 155 is taken and the operations of block 156 are
side intercept module will receive an HTTP data stream carried out. In block 156 it is seen that the server-side
from the web server 2O. Upon receipt of the HTTP data intercept module 4O sends a coherent response to the
7
1 3 EP O 823 173 B1 1 4
client-side intercept module 3O. The server-side inter- existing cache entry is flushed. The client-side intercept
cept module 4Otransforms the server request cache en- module then updates the client cache enty correspond-
try to a client/server specific data stream by sending the ing to the web browser originated communication by
coherent response and sending an age of zero to the storing the CRC of the HTTP data stream received from
client-side intercept module. 5 the server-side intercept module 4O, by storing as the
[OO45] If the server-side intercept module 4O deter- SDT the difference between the current date and time
mines that the client cache enty is not identical to the and the age received from the server-side intercept
server cache entry corresponding to the web browser module 4O, and by storing the HTTP data stream. This
originated communication, then the ''No'' branch of block operation is reflected in block 172.
155 is taken and the operations of block 157 are carried 1O [OO48] If no cache entry exists corresponding to the
out. As reflected in block 157, the server-side intercept web browser originated communication, then the ''No''
module 4O converts or transforms the server cache en- path of block 17O is taken. Aclient cache enty is created
try into a client/server specific data stream. The data by carrying out the operations reflected in block 173. As
stream includes the CRC of the server cache entry, the seen in block 173, the client-side intercept module 3O
server cache entry HTTP data stream, and the age of 15 creates a client cache entry by storing the URL of the
the cache entry which is set to zero. This clienUserver HTTP data stream received from the server-side inter-
specific communication is then transmitted over the ex- cept module 4O by storing the CRC of the HTTP data
ternal communication link 35 to the client-side intercept stream received from the server-side intercept module
module 3O. 4O and by storing the HTTP data stream. The client-side
[OO46] The functions of the client-side intercept mod- 2O intercept module 3O also updates the SDT or stores the
ule 3O upon receipt of a communication from the server- SDT by subtracting from the current date and time the
side intercept module will now be described with respect age received over the external communication link 35
to Figure 4. As seen in block 16O, the client-side inter- from the server-side intercept module 4O.
cept module 3O receives or acquires the clienUserver [OO49] However, a client cache entry is created
specific data stream which was transmitted over the ex- 25 whether through the operations of blocks 166, 172, or
ternal communication link 35. The client-side intercept 173, the client-side intercept module transfers or pro-
module then determines what type of response was re- vides the client cache enty to the web browser 1 O as
ceived from the server-side intercept module 4O as re- an HTTP data stream. These operations are reflected
flected in block 165. If the server-side intercept module in block 174 of Figure 4.
4O indicates that the client cache entry is coherent, i.e. 3O [OO5O] As will be appreciated by one of skill in the art,
the server cache entry and the client cache entry are the client cache and the server cache may be imple-
identical, then the operations reflected in block 166 are mented with memoy or with mass storage such as hard
carried out. As seen in block 166, the client-side inter- disks, read/write CD-ROMS, optical disks, or other stor-
cept module 3O updates the SDT of the client cache en- age technologies. Furthermore, as will be appreciated
try corresponding to the web browser originated com- 35 by one of skill in the art, the client-side intercept module
munication with the difference between the current date and the server-side intercept module may be imple-
and time and the age received from the server-side in- mented through software, hardware, or a combination
tercept module 4O. Thus, without synchronizing the two thereof.
clocks of the first computer 5 and the second computer [OO51] While references made to caches being resi-
6, the present invention has revised the coherency time 4O dent in a particular first or second computer, as will be
of the cache enty ofthe first computerto reflectthe new- appreciated by one of skill in the art, the benefits of the
er data of the second computer. After updating the SDT present invention may be achieved even though the
for the client cache entry corresponding to the web cache is not resident in the first computer but is simply
browser originated communication, the client-side inter- on the same side of the external communication link as
cept module 3O transfers the client cache entry to the 45 the computer. Thus, a hardware cache could be imple-
web browser 1 O as an HTTP data stream. This operation mented external to the first computer that serves as a
is shown in block 174. client cache and connected to the first computer by high
[OO47] If, however, the client-side intercept module 3O speed communications and yet, as long as the cache is
determines that the response type is a data or data on the same side of the external communication link as
stream response, then the ''stream'' path out of block 5O the first computer, the benefits of the present invention
165 is taken and the operations of block 167 are carried will be achieved.
out. The client-side intercept module 3O receives the [OO52] In an alternative embodiment of the present in-
HTTP data stream and temporarily stores this data. vention, the server-side intercept module 4O does not
Then, as reflected in block 17O of Figure 4, the client- maintain a copy of the HTTP data stream received from
side intercept module 3O determines if a cache entry ex- 55 the web server 2O but simply maintains a directoy entry
ists corresponding to the web browser originated com- for the communication. The directoy entry would in-
munication. If a cache entry exists, then the ''Yes'' path clude the URL of the communication, the CRC calculat-
of block 17O is taken and, as reflected in block 171 , the ed for the HTTP data stream and the time when the HT-
8
1 5 EP O 823 173 B1 1 6
TP data stream was received from the web server and ure 7 is taken and the CRC for the request to be sent
the SDT for the communication which may be set to the over the external communication link 35 to the server-
time when the CRC was calculated. In such a case when side intercept module 4O is nulled. This operation is re-
the client-side intercept module 3O sends a request to flected in block 212 of Figure 7.
the server-side intercept module 4O for a communica- 5 [OO56] Block 213 illustrates the operations of sending
tion which corresponds to a URL for which the server- the CGl request to the server-side intercept module 4O
side intercept module has maintained a CRC and SDT, over the external communication link. As reflected in
then the server-side intercept module checks the CRC block 213, the client-side intercept module 3O transmits
received from the client-side intercept module 3O to de- the HTTP request and the request CRC which has either
termine if it corresponds to the CRC of the latest HTTP 1O been set to null if no client base cache entry exists for
data stream for the specified URL. If there is a match, the URL of the CGl request or has been set to the CRC
then a coherent response is sent to the client-side inter- of the client base cache entry if an enty does exist.
cept module. If there is not a match, then the server-side Thus, the client-side intercept module has converted the
intercept module sends the HTTP data stream received CGl request to a client/server specific protocol, trans-
from the client-side intercept module to the web server 15 mitted the clienUserver specific communication over the
2O and returns to the client-side intercept module 3O the external communication link to be received by the serv-
response received from the web server 2O. er-side intercept module 4O.
[OO53] Figure 7, 8, 9, and 1 O reflect the operations [OO57] The actions taken by the server-side intercept
carried out by the client-side intercept module 3O and module when a CGl request is received are reflected in
the se_er-side intercept module 4O in another aspect 2O Figure 9. The receipt of the CGl request by the server-
of the present invention which utilizes differencing to re- side intercept module 4O is shown in block 22O. When
duce the data transferred over the external communica- the server-side intercept module 4O receives the CGl
tion link 35. As seen in Figure 7, block 2OO illustrates request, it saves a copy of the CRC value and the HTTP
the receipt by the client-side intercept module 3O of an request. As seen in block 221 , the server-side intercept
HTTP request from the web browser 1 O. As reflected in 25 module 4O passes the HTTP request to the web se_er
block 2O5, the client-side intercept module 3O interro- 2O.
gates the intercepted HTTP request from the web [OO58] When the server-side intercept module 4O re-
browser 1 O to determine if the request is to a common ceives a response to the HTTP request corresponding
gateway interface (CGl). If the request is not to a com- to the web browser originated communication or CGl re-
mon gateway interface, then the client-side intercept 3O quest, the server-side intercept module 4O receives this
module 3O passes the request to the server-side inter- response as an HTTP data stream as reflected in block
cept module as reflected in Figures 3 through 6 and is 23O of Figure 1 O. As seen in block 23O, the server-side
illustrated by block 2O6 of Figure 7. intercept module 4O saves the HTTP data stream and
[OO54] If, however, the web browser originated com- computes a CRC value for the HTTP data stream re-
munication correspondstoa CGl request, then the ''Yes'' 35 ceived from the web server2O. The server-side intercept
path out of block 2O5 is taken. As reflected in block 21 O, module 4O also nulls the difference value to initialize the
the client/server intercept module 3O determines if a cli- difference data. The server-side intercept module then
ent base cache entry exists corresponding to the HTTP determines if the response received as a web server
data stream which was previously to be provided to the originated communication is a response to a CGl re-
web browser in response to a corresponding CGl re- 4O quest as shown in block 235. If the answer is no, then
quest. This interrogation of the CGl request may be ac- the ''No'' path out of block 235 of Figure 1 O is taken and
complished by comparing the URL of the web browser the operations of block 236 are executed to send the
originated communication to the URLs stored in the cli- HTTP data stream to the client-side intercept module.
ent base cache. As reflected in block236, this operation may involve the
[OO55] The client base cache may be initialized by 45 caching operations described in Figures 3 through 6. If
storing the first HTTP data stream received bythe client- the response received in block 23O is a response to a
side intercept module 3O which is to be provided to the CGl request, then the ''Yes'' path out of block 235 is tak-
web browser 1 O for a given URL. This base cache enty en and the server-side intercept module then deter-
may be maintained over numerous instances or ses- mines if a server base cache enty exists for the CGl
sions of the web browser 1 O. The client base cache en- 5O response as reflected in block 24O.
tries may be updated as reflected in Figures 7, 8, 9, and [OO59] A server base cache entry may be created the
1 O. If a client base cache entry exists corresponding to first time the server-side intercept module 4O receives
the URL forthe web browser originated communication, a response to a CGl request. In this instance the result
then the CRC to be sent to the server-side intercept of the conditional reflected in block 24O will cause the
module 4O over the external communication link 35 is 55 ''No'' path to be taken out of block 24O. The se_er-side
set equal to the CRC for the client base cache entry as intercept module 4O will then create a server base cache
reflected in block211 of Figure 7. If no client base cache enty corresponding to the CGl request by storing the
entry exists, then the ''No'' path out of block 21 O of Fig- URL forthe CGl, the HTTP data stream forthe response
9
1 7 EP O 823 173 B1 1 8
to the CGl request, and the CRC for the HTTP data pp. 32-36, the disclosure of which is incorporated herein
stream. This operation is reflected in block 241 . To be by reference as if set forth fully. Other methods which
compatible with the coherent cache system described may be used in determining the difference data include
in Figures 3 through 6, the server base cache entry may those described in IBM T_chnical Disclosure Bulletin,
also include the SDT. As used herein, the term server 5 Vol. 22, No. 8A, January 1 98O which is also incorporated
CGl base form refers tothe server base cache enty cor- herein by reference as if set forth fully.
responding to the CGl request received from the web [OO64] The server-side intercept module 4O then de-
browser 1 O. termines if the server CGl base form requires updating
[OO6O] If a server base cache entry exists correspond- as reflected in block 247. This determination may be
ing to the CGl request then the ''Yes'' path out of block 1O made by determining if the average difference data be-
24O is taken. The server-side intercept module com- tween the intercepted CGl response and the server CGl
pares the CRC of the server base cache enty to the base form is over a predefined threshold. Other meth-
CRC of the response received from the web server 2O. ods of determining if the server base cache entry corre-
These operations are reflected in block 245 of Figure sponding to the CGl request should be updated may in-
1 O. lf the CRCs are the same, then the server-side in- 15 clude time coherency such as that described in Figureg
tercept module determines if the CRC for the server 3 through 6 or other methods known to those with skill
base cache entry corresponds to the CRC for the client in the art to determine if the difference data has in-
base cache entry. Ifthesetwo CRCvalues are the same, creased to such an extent that rebasing to create a new
then the client base cache enty, the server base cache base cache entry would improve system performance.
entry, and the response received from the web server 2O [OO65] If rebasing of the server is not required, then
2O all contain the same HTTP data stream. The com- the ''No'' path out of block 247 is taken and the server-
parison of the server base cache entry to the client base side intercept module 4O carries out the operations of
cache entry is reflected in block 25O. block 25O to determine if the CRC of the client base
[OO61] If the two base cache entries are the same, cache entry is the same as that of the server base cache
then the server-side intercept module need not send the 25 enty or the se_er CGl base form is identical to a client
base cache enty to the client-side intercept module 3O CGl base form which are the base cache entries of the
and so, as reflected in block 251 , the HTTP data stream server and the client which correspond to the particular
data to be transferred to the client-side intercept module CGl request of the web browser originated communica-
3O is nulled. The server-side intercept module 4O then tion. If the base forms are the same, then the client does
converts the HTTP data stream received from the web 3O not need to be rebased and the HTTP data stream in-
server 2O to a client/server specific communication pro- formation is nulled, as reflected in block251 . The server-
tocol by transmitting the CRC of the HTTP data stream side intercept module 4O then sends the difference re-
stored in the server base cache corresponding to the sponse tothe client-side intercept module 3O by sending
CGl request, the nulled HTTP data stream data and the the CRC of the server base cache enty corresponding
nulled difference data to indicate that the response to 35 to the CGl request (i.e. the CRC of the server CGl base
the CGl request was identical to the client base cache form), by sending the nulled HTTP data stream which
entry, as illustrated in block 252. would correspond to the base data and by sending the
[OO62] Returning to block245, if the CRC forthe serv- difference data determined in block 246. These opera-
er base cache entry corresponding to the CGl request tions are again reflected as block 252 of Figure 1 O.
is different than the CRC for the response received from 4O [OO66] If the server-side intercept module 4O deter-
the web server in response tothe CGl request originated mines that the CRCs are not the same for the client CGl
by the web browser, then the ''No'' path out of block 245 base form and the server CGl base form, then the client
is taken. The server-side intercept module 4O then car- needs to be rebased. The client rebasing operation con-
ries out the operations reflected in block 246. The serv- sists of sending the server CGl base form to the client-
er-side intercept module 4O compares the intercepted 45 side intercept module 3O. To perform this operation, the
CGl response to the server base cache enty corre- server-side intercept module setsthe HTTP data stream
sponding to the intercepted CGl request or the server data to be sent to the client-side intercept module 3O
CGl base form. This comparison of the intercepted CGl equal to the server CGl base form. This operation is re-
response to the server CGl base form provides CGl dif- flected in block 253. The server-side intercept module
ference data which corresponds to the difference be- 5O 4O then converts the HTTP data stream received from
tween the intercepted CGl response and the server CGl the web server to a client/server specific protocol by
base form. sending the CRC of the server CGl base form, the HTTP
[OO63] The differencing may be performed by any data stream data corresponding to the server CGl base
method known to those of skill in the art for determining form, and sending the difference data between the CGl
the difference between a baseform and a modified form. 55 base form and the response received from the web se_-
One method of differencing suitable for use in the er as seen in block 252. This information is then trans-
present invention is described in ''a Cross-Platform Bi- mitted over the external communication link 35 to the
nary Diff'' by Coppieters, Dr. Dobb's Journa1, May 1 995, client-side intercept module 3O.
1 O
1 9 EP O 823 173 B1 2O
[OO67] Returning to block247, if server rebasing is re- Block 277 reflects the client-side intercept module 3O
quired then the ''yes'' path out of block 247 is taken. As reconstructing the HTTP data stream corresponding to
reflected in block 248 the server side intercept module the communication from the web server 2O from the cli-
updates the server base cache entry corresponding to ent/server specific data stream received over the exter-
the browser originated communication with the HTTP 5 nal communication link 35 by combining the client CGl
data stream received from the web server. The CRC of base form with the CGl difference data received over
the response is also updated and the CGl difference da- the external communication link 35 to create an HTTP
ta is nulled. The server side intercept module then com- data stream corresponding to the intercepted CGl re-
pares the CRC of the new server side cache enty as sponse. As seen in block278, this response is then pro-
reflected in block 25O and completes the transfer as de- 1O vided to the web browser 1 O as an HTTP data stream.
scribed above. [OO72] If no CGl base form exists in the client corre-
[OO68] The operations of the client-side intercept sponding to the URL of the CGl request, then the ''No''
module upon receipt of a response from the server-side path out of block 27O of Figure 8 is taken. As seen in
intercept module 4O are shown in Figure 8. The receipt block 271 , the client-side intercept module 3O creates a
of the response from the server-side intercept module 15 client base cache enty corresponding to the URL of the
4O by the client-side intercept module 3O is reflected in CGl request by storing the URL, the CRC of the HTTP
block26O. As seen in block265, the client-side intercept data stream received over the external communication
module 3O determines if the response is a response to link from the server-side intercept module 4O, and the
a CGl request. If the response is not to a CGl request, actual HTTP data stream data. Storing this information
then the client-side intercept module carries out the op- 2O creates a client base cache entry corresponding to the
erations of block 267 which may include the cache op- intercepted CGl request and thus creates a client CGl
erations reflected in Figures 3 through 6. If, however, base form. The client-side intercept module may then
the response is to a CGl request, then the ''Yes'' path cary out the operations of block 277 by reconstructing
out of block 265 is taken. The client-side intercept mod- the HTTP data stream by combining or merging the cli-
ule 3O saves the HTTP data stream data, the difference 25 ent CGl base form with the CGl difference data which
data, and the CRC acquired from the client/server spe- may have been nulled.
cific data stream transmitted over the external commu- [OO73] The present differencing techniques may also
nication link. These operations are reflected in block266 be applied to non-CGl data. In such an instance, the
of Figure 8. server-side intercept module 4O would need to keep
[OO69] The client-side intercept module 3Othen deter- 3O multiple generations of server base cache entries to al-
mines if a client base cache entry corresponding to the low for the possibility that client-side intercept modules
intercepted CGl request exists which would contain a of web browsers connected to the web server may have
client CGl base form. This interrogation is shown in different base forms. The server-side intercept module
block 27O and may be carried out by examining the URL could then compare the CRC received from the client-
of the HTTP request or HTTP response. If a client CGl 35 side intercept module with the CRC of each of the prior
base form exists, then the ''Yes'' path out of block 27O is generations of server base forms until a match was ob-
taken. The client-side intercept module 3O then com- tained. The server-side intercept module 4O may then
pares the CRC received over the external communica- optionally rebase the client-side intercept module 3O or
tion link to that of the CRC of the client CGl base form simply provide the difference data to the client-side in-
as shown in block275. If they are different, then the ''No'' 4O tercept module 3O. Thus, the differencing methodolo-
path of block 275 is taken and the client rebases by up- gies described herein with respect to the CGl request
dating the CGl base form by replacing the client base may apply equally to any HTTP request and response.
cache entry corresponding to the URL of the CGl re- [OO74] While the above system of maintaining multi-
quest ofthe web browseroriginated communication with ple generations of base forms may allow for the use of
the HTTP data stream data received over the external 45 differencing with non-CGl requests, this methodology is
communication link 35 from the server side intercept more memory or storage intense and does not fully ex-
module 4O. The client base cache entry also is updated ploit the caching capabilities described above. To re-
with respect to the CRC for the HTTP data stream. duce memory or storage requirements and exploit the
These operations are reflected in block276 of Figure 8. caching methods described above, the following pre-
[OO7O] If the CRC received over the external commu- 5O ferred method of using differencing for non-CGl re-
nication link 35 is the same as the CRC of the CGl base quests may be utilized. In this preferred implementation
form, then the server-side intercept module server CGl the server side intercept module calculates the differ-
base form is the same as the client-side intercept mod- ence between the a server base form corresponding to
ule client CGl base form and the ''Yes'' path out of block the request and the HTTP data stream of the response
275 is taken. 55 from the web se_er. This difference data is then stored
[OO71] Whether the base forms are the same or the by the server side intercept module. The server base
client is rebased, the operations reflected in block 277 form is then updated by replacing the base form with the
are carried out by the client-side intercept module 3O. new response from the web server, including updating
21 EP O 823 1 73 B1 22
the CRC of the base form. However, ratherthan discard- mits information about itself to the server each time a
ing the old CRC, the CRC's for previous base forms are communication is initiated. Likewise, the server commu-
stored as is the difference data. The prior generations nicates specific information about itself tothe client each
of difference data and CRCs are then selectively trans- time a response is initiated.
mitted to the client side intercept module based upon 5 [OO78] In one alternative embodiment of the present
the CRC of the client base form corresponding to the invention, the first computer 5 communicates to the sec-
non-CGl request. ond computer 6 the computer specific information cor-
[OO75] As an example of the non-CGl differencing responding to the predefined characteristics of the first
method, if the server side intercept module receives a computer. The second computer stores this computer
non-CGl request this request would also be accompa- 1O specific information. The first computer then removes
nied by the CRC of the base form resident in the client the computer specific information from subsequent web
side intercept module corresponding to the URL of the browser originated communications prior to transmis-
non-CGl request. When the server side intercept mod- sion on the external communication link 35. The second
ule received the response from the web server it would computer 6 then rebuilds the original web browser orig-
calculate the CRC of the response. The se_er side in- 15 inated communication by combining the stored compu-
tercept module would then calculate the difference be- ter specific information with the subsequent communi-
tween the response and the server base form for the cation received over the external communication link 35
U RL and save this difference data. The server side in- to create an HTTP data stream.
tercept module would update the server base form with [OO79] In addition to removing the computer specific
the response data and archive the CRC of the previous 2O information from communications originated by the web
base form and the difference data between the re- browser, this computer specific information may also be
sponse and the old base form. The server side intercept removed from communications originated by the web
module would then compare the CRC of the client base server. In such a case, the second computer 6 of Figure
form with the server base form CRC and any stored or 2 provides to the first computer 5 over the external com-
archived CRCs to determine if a match is found. lf no 25 munication link 35 the computer specific information
match is found the response is simply sent to the client corresponding to the predefined characteristics of the
side intercept module. second computer 6. The first computer5 stores the com-
[OO76] If a match is found then the difference data cor- puter specific information to provide server header in-
responding to the CRC match and any subsequent dif- formation. On subsequent communications, the second
ference data up to and including the current difference 3O computer 6 removes the computer specific information
data is sent to the client side intercept module. The client from the web server originated communication and
side intercept module then applies the difference data transmits the remaining portion of the web server origi-
to the client base form to reconstruct the response. nated communication on the external communication
Thus, if the CRC match occurred with a CRC for a base link35. The first computer 5 receives the communication
form which was three generations old then three sets of 35 over the external communication link and rebuilds the
difference data would be sent to the client side intercept original web server originated communication by com-
module and the construction of the response would be bining the server header information with the client/serv-
accomplished by applying three successive difference er specific data stream received over the external com-
data sets to the client base form. If however, the number munication link to create an HTTP data stream. In both
of difference data sets or the sizes of the difference data 4O instances, the operations of removing the computer
sets required to reconstruct the response is so great that specific information and storing the information to create
sending the actual response would require less data either server header information or client header infor-
transfer then the response itself may be sent bythe serv- mation are carried out by the client-side intercept mod-
er side intercept module. In any event, after reconstruct- ule 3O or the server-side intercept module 4O, depend-
ing or receiving the response the client side intercept 45 ing upon whether the operation takes place in the first
module would update the client base form for the URL computer 5 or the second computer 6.
of the request with the response data and update the [OO8O] In one embodiment of the present invention,
CRC with the CRC for the response. Because the client the web browser 1 O communicates to the client-side in-
base form is updated each time a response is received tercept module 3O using the Transmission Control Pro-
for a particular URL, the client cache described above 5O tocol/lnternet Protocol (TCP/l P). TCP may also be used
may be utilized as the cache for the client base form, for a communication between the client-side intercept
thereby eliminating the need for a separate cache of the module 3O and the server-side intercept module 4O over
client base forms if differencing is utilized on non-CGl the external communication link 35. Finally, TCP may
requests. be used for communication between the server-side in-
[OO77] In a further aspect of the present invention, ad- 55 tercept module 4O and the web server 2O. While TCP
ditional communication savings may be achieved based may be used for communications between the various
upon the redundancy of a stateless communication pro- components that make up the system of the present in-
tocol such as HTTP. In such a protocol, the client trans- vention, the HTTP protocol does not provide the most
1 2
23 EP O 823 1 73 B1 24
efficient means for communication over an external request of information from a specific URL would be
communication link. To increase the performance of the multiplexed onto socket 36a, received by socket 36b,
external communication link 35, one embodiment of the demultiplexed by the server-side intercept module 4O,
present invention creates what are referred to herein as and transmitted from socket 6O_ to socket 6Od on the
''virtual sockets'' which are utilized in the connection be- 5 web server 2O. Likewise, communications occurring
tween the web browser and the client-side intercept over socket 61 a are received by socket 61 b, multiplexed
module 3O and between the server-side intercept mod- by the client-side intercept module 3O, and transmitted
ule 4O and the web server 2O. The operation of these from socket 36a to socket 36b where the server-side
virtual sockets will now be described with reference to intercept module 4O demultiplexes the communication
Figures 1 1 through 1 7. 1O and transmits it over socket 61 _ to socket 61 d. Thus,
[OO81] Figure 11 is a block diagram of one possible communications over socket 6Oa and 6Ob, 61 a and 61 b,
implementation of the present invention utilizing the 62a and 62b, 63a and 63b, and 64a and 64b are trans-
concept of virtual sockets. As seen in Figure 1 1 , the first mitted over the respective corresponding sockets be-
computer 5 and the second computer 6 are connected tween the server-side intercept module 4O and the web
over the external communication link 35. The web 15 server 2O of socket 6O_ and socket 6Od, socket 61 _ and
browser 1 O has a plurality of real sockets which connect 61 d, socket 62_ and socket 62d, socket 63_ and socket
the web browser 1 O to the client-side intercept module 63d, and socket 64_ and 64d.
3O. As seen in Figure 1 1 , the first real socket is depicted [OO83] In a similar manner, responses to requests
as 65a on the web browser 1 O and the corresponding from web browser 1 O by the web server 2O are also
socket is 65b on the client-side intercept module 3O. 2O transmitted over sockets connecting the web server 2O
This first real socket is the TCP socket over which the to the server-side intercept module 4O and over the ex-
web browser 1 O requests further connections from the ternal communication link 35 to the client-side intercept
client-side intercept module 3O. module 3O, and then to the web browser 1 O. Thus, for
[OO82] When the web browser 1 O requests a new TCP example, a response originated by web server 2O could
connection, a communication occurs over the real sock- 25 be sent over socket 6Od to socket 6O_ and multiplexed
et 65a which is received at the real socket 65b. The cli- by the server-side intercept module 4O onto socket 36b
ent-side intercept module 3O will then create another re- where it is transmitted over the external communication
al socket for communication with the web browser 1 O. link 35 to socket 36a. The client-side intercept module
As seen in Figure 11 , a plurality of real sockets are cre- 3O then demultiplexes the communication and provides
ated on the web browser 1 O with a corresponding real 3O it to socket 6Ob for transmission to socket 6Oa on the
socket being created on the client-side intercept module web browser 1 O. A similar communication path is estab-
3O. These real sockets are depicted as 6Oa through 64a lished for each socket being utilized by the web browser
on the web browser 1 O and 6Ob through 64b on the cli- 1 O or the web server 2O. As will be appreciated by one
ent-side intercept module 3O. These real sockets are the of skill in the art, while the present invention has been
means through which the web browser 1 O communi- 35 described with respect to 4 socket connections between
cates with the client-side intercept module 3O. After cre- the web browser 1 O and the web server 2O, any number
ating the real sockets 6Oa through 64a and 6Ob through of sockets may be opened for providing communication
64b, communications over these sockets are multi- access between the web browser 1 O and the web server
plexed onto a real socket 36a which provides access for 2O.
the client-side intercept module 3O to the external com- 4O [OO84] Figure 1 2 is a blockdiagram illustrating the im-
munication link 35. Real sockets 36a and 36b are cre- plementation of the virtual socket system in the client-
ated when a request is sent over real socket 37a of com- side intercept module 3O and the server-side intercept
puter 5 to real socket 37b of computer 6. Upon receipt module 4O. External to these modules the real sockets
of the connection request by real socket 37b, real sock- between the client-side intercept module 3O and the web
ets 36a and 36b are created. _ockets 37a and 37b act 45 browser 1 O and the se_er-side intercept module 4O and
as the first real sockets for communication between the the web server 2O function as normal TCP/l P sockets.
client side intercept module and the server side intercept Thus, the use of virtual sockets is transparent to the web
module and may only be utilized for establishing the browser 1 O and the web server 2O.
connection between the two modules reflected by sock- [OO85] A particular embodiment of the present inven-
ets 36a and 36b. Each of these real sockets operates 5O tion will be described with respect to the block diagram
under standard TCP/l P protocols. When communica- Figure 1 2 and the flow diagrams of Figures 1 3 through
tions are received by the second computer 6 over the 1 7. Figure 1 3 is a flow chart for the socket manager de-
external communication link35, they are received at real picted as block 68 in Figure 1 2. Referring to Figure 1 3,
socket 36b. The server-side intercept module 4O then block 3OO reflects the creation of the real socket man-
demultiplexes the communications received at socket 55 ager 68 of the client-side intercept module 3O. After the
36b and provides them to the appropriate socket for real socket manager 68 is created, it creates a first real
transmission to the web server 2O. Thus, for example, socket shown as socket 65b in Figure 1 2. The creation
a communication over socket 6Oa to socket 6Ob for a of this first real socket is reflected as block3O1 of Figure
1 3
25 EP O 823 173 B1 26
13. After creating the first real socket 65b, the socket communication from the simplexvirtual socket 7O by ex-
manager 68, resident in the client-side intercept module ecuting the virtual receive operation described herein
3O, also referred to herein as the client socket manager, with reference to Figure 1 6-3. The client-side intercept
waits for an event on the first real socket 65b as is seen function then carries out the function of the client-side
in block 3O2 of Figure 13. When an event is received 5 intercept module as described above (see for example
on the first real socket 65b, the real socket manager 68 Figures 3 and 7), which is reflected in block 332. The
examines the event and, based upon that examination, client-side intercept function 8O then creates a multiplex
takes one of five paths as reflected in block 3O5 of Fig- virtual socket 9O which is connected to the real socket
ure 13. 36a in the client-side intercept module 3O. Real socket
[OO86] If a real socket is created in response to a com- 1O 36a is connected to real socket 36b on the server-side
munication request received at the first real socket 65b, intercept module 4O. The creation of the multiplex virtual
then, as reflected in the path from block 3O5 to block socket is reflected in block 333 of Figure 14 and carried
3O6 of Figure 13, the real socket manager 68 adds the out by performing the virtual create operation described
real socket to the real event list. The real socket man- herein with reference to Figure 16-1 . Block 334 reflects
ager then creates a simplex vi_ual socket as indicated 15 the operation of sending the information received from
in block3O7. In the case of the client-side intercept mod- the web browser over the real socket 6Ob and the sim-
ule, the real socket manager initiates an application plex virtual socket 7O after the client-side intercept func-
function which carries out functions of the client-side in- tion 8O is carried outforthe web browseroriginated com-
tercept module forthe virtual socket created as reflected munication. This communication is queued to the mul-
in block 3O8 of Figure 13. 2O tiplex vi_ual socket 9O by performing the virtual send
[OO87] As used herein, the term ''simplex socket'' or operation described herein with reference to Figure
''simplex virtual socket'' refers to a socket which con- 16-2. The client-side intercept function 8O, after queuing
nects directly to either a single socket or a single appli- the request to the multiplexvirtual socket 9O, flushes the
cation. As used herein, ''multiplex socket'' refers to a data queued in the multiplex virtual socket 9O as reflect-
socket which connects to a plurality of other sockets. 25 ed in block335 of Figure 14, and then waits for an event
Thus, the multiplex socket carries out a multiplexing or on the multiplex virtual socket as reflected in block 336.
demultiplexing function and the simplex socket pre- The virtual flush function is carried out by performing the
forms a one-to-one connection. Thus, for example, in virtual flush operation described herein with reference
carrying out the functions of blocks 3O6 through 3O8 of to Figure 17-1 which takesthe datafrom the multiplexed
Figure 1 3, the client socket manager 68 would, in re- 3O virtual socket queue and provides the data to the real
sponse to the first connection request received by the socket 36a. The wait operation may be carried out by
first real socket 65b, create real socket 6Ob, simplex vir- performing the virtual select function described in Fig-
tual socket 7O, and initiate the client-side intercept func- ure 16-4. At this point, the client-side intercept module
tion in an application 8O. Similarlyforsubsequent events has intercepted the web browser originated communi-
where a real socket is created, the real socket manager 35 cation and transferred the communication to the server-
would create real sockets 61 b, 62b, 63b, or 64b and side intercept module over the external communication
simplex virtual sockets 71 , 72, 73, or 74, and initiate a link 35.
CSl function corresponding to the created real and vir- [OO9O] Returning to Figure 13, which reflects the flow-
tual sockets depicted as blocks 81 , 82, 83, or 84 of Fig- chart for the socket manager in either the server-side
ure 12. 4O intercept module 4O or the client-side intercept module
[OO88] The operation of the client-side intercept func- 3O. The real socket manager in the server-side intercept
tion will now be described with reference to the real module or the server socket manager, shown as block
socket 6Ob, the simplexvirtual socket 7O, and the client- 69 in Figure 12, carries out the same function as the
side intercept function 8O reflected in Figure 12. Block client socket manager shown as block 68. In creating a
325 of Figure 14 reflects the creation of the client-side 45 first real socket as shown in block 3O1 , the server-side
intercept function 8O. Upon creation, the client-side in- intercept module 3O creates a ''well known port'' 37b for
tercept function 8O waits for an event on the simplex vir- receiving requests for sockets from the client-side inter-
tual socket 7O as indicated in block 326. This wait oper- cept module 3O associated with the server-side inter-
ation is carried out by performing the virtual select func- cept module 4O. When a real event occurs on the real
tion which is described in Figure 16-4. Upon receipt of 5O socket 36b of the se_er-side intercept module 4O, the
an event, the event is examined as reflected in block event is examined as reflected in block 3O5. In the
33O. If the event is a virtual socket close, then the client- present case, the event is the receipt of data from real
side intercept function 8O deletes the simplex virtual socket 36a and so the path from block 3O5 to block 32O
socket 7O as reflected in block 349 and terminates as of Figure 13 is taken. The data received on real socket
reflected in block 35O of Figure 14. 55 36b is examined and, in our present example, because
[OO89] If the event is the receipt of data, then the path the data is a web browser originated communication
from block 33O to block 331 is taken and the client-side transmitted by the client-side intercept module, a new
intercept function 8O receives the browser originated virtual socket must be created in the server-side inter-
14
27 EP O 823 173 B1 28
cept module 4O. Thus the path from block 32O to block and a virtual event is signaled. When the virtual event
321 of Figure 13 is taken. The server socket manager is signaled, the virtual-side intercept function 85 exits
69 then carries out the operations reflected in block321 , block 366 of Figure 15 and examines the event as
block 322, block 323, and block 324 of Figure 13. The shown in block 37O. If the event is a socket closed, then
server socket manager 69 creates a multiplex virtual 5 an error condition occurs and an error message is con-
socket 95, as shown in block 321 , cancels the multiplex structed as the response as shown in block 375 of Fig-
socket activity timer as reflected in block 322 and initi- ure 15. However, if the event is the receipt of data, then
ates an application of the server-side intercept function the path from block 37O to block 371 is taken and the
as reflected in block 323 of Figure 13 and shown as server-side intercept function 85 performs a virtual re-
block 85 in Figure 12. The data received at the real 1O ceive, as described herein with reference to Figure
socket 36b is then queued to the multiplex virtual socket 16-3, to obtain the server response from the simplexvir-
95 and a virtual event is signaled. tual socket 75 as shown in block 371 . The server-side
[OO91] The creation of the server-side intercept func- intercept function 85 then performs a virtual close of the
tion, as reflected in block 323, is shown as block 36O of simplex virtual socket 75 as reflected in block 372 and
Figure 15. After creation of the se_er-side intercept 15 described herein with reference to Figure 17-2 and proc-
function 85, the function receives the data from the mul- esses the response as described above for the server-
tiplex virtual socket 95 which was sent from the client- side intercept module and shown in block 373 (see for
side intercept module 3O and corresponds to the web example Figures 6 and 1 O) .
browser originated communication. This operation is re- [OO93] Whether the exit path of block 37O of Figure
flected as block 361 of Figure 15. After receiving the 2O 15 is the error path to block375 or the data path to block
data from the client-side intercept module, the server- 371 , at block 374 the simplex virtual socket 75 is delet-
side intercept function 85 processes the data as de- ed. The server-side intercept function then performs a
scribed above for the server-side intercept module. The virtual send operation to the multiplex virtual socket 95
carrying out of the server-side functions is reflected in to transmit the web server originated communication to
block 362 (see for example Figures 5 and 9). After 25 the client-side intercept module 3O, as shown in block
processing the information, the server-side intercept 376. The server-side interceptfunction 85 then performs
function 85 creates a simplex virtual socket 75 by per- a virtual flush operation to flush the data queued in the
forming a virtual create, the operation of which is de- multiplex virtual socket 95. These operations are shown
scribed herein with reference to Figure 16-1 . This op- in block 377. The server-side intercept function 85 then
eration is reflected in block 363 of Figure 15. The serv- 3O performs a virtual close operation to close the multiplex
er-side intercept function 85 then sends the web brows- virtual socket 95 as shown in block 378 of Figure 15.
er originated communication to the simplex virtual sock- Finally, the server-side intercept function 85 deletes the
et 75 as shown in block364 by performing avirtual send, multiplex virtual socket and terminates, as reflected in
the operation of which is describe herein with reference blocks 379 and 38O.
to Figure 16-2. The server-side intercept function 85 35 [OO94] The server-side intercept function performs
then performs a virtual flush to flush data queued in the the virtual send and flush operations to the multiplex vir-
simplexvirtual socket 75tothe real socket6O_ and waits tual socket 95. These trigger events on the real socket
for an event on the simplex virtual socket 75. The virtual 36a and the client socket manager 68 exits block 3O2
flush operation is described herein with reference to Fig- and examines the event, as shown in block 3O5, be-
ure 1 7-1 . The send and flush operations are shown in 4O cause the data is received on real socket 36a, the path
blocks 364 and 365 of Figure 15. The wait operation from block 3O5 to block 32O of Figure 13 is taken and
may be carried out by performing the virtual select func- the data is queued to multiplex virtual socket 9O. There-
tion described in Figure 16-4. When the server-side in- fore, when real sock 36a receives the web server re-
terceptfunction 85 createdthe simplexvirtual socket 75, sponse from real socket 36b over the external commu-
a corresponding real socket 6O_ was also created. By 45 nication link 35, this information is demultiplexed and
sending the web browser originated communication to provided to the appropriate multiplex virtual socket. The
the simplex virtual socket 75, the server-side intercept receipt of the data causes a virtual event to occur as
function 85 transferred the web browser originated com- shown in block324 of Figure 13 and block336 of Figure
munication to the web server. 14 would be exited and the client-side intercept function
[OO92] When the server-side intercept module 4O re- 5O 8O would examine the event as reflected in block34O of
ceives the response from the web server on the real Figure 14.
socket 6O_, a real event occurs and the server socket [OO95] If the event is a socket closed response, then
manager 69 exits block 3O2 of Figure 13 and examines the path from block 34O to block 345 of Figure 14 is
the event which occurred on real socket6O_ as reflected taken and the client-side intercept function 8O creates
in block 3O5. ln the present case, it will be data for an 55 an error message response and proceeds to block 344
existing virtual socket and the path from block 32O of of Figure 14. If the event is data received, as would be
Figure 13 to block 324 will be taken. The data received the case in the present example, then the path from
on the real socket 6O_ is queued to the virtual socket 75 block 34O to block 341 of Figure 14 is taken and the
15
29 EP O 823 173 B1 3O
client-side intercept function 8O performs a virtual re- is taken and the virtual socket is connected to the real
ceive operation to receive the response from the multi- socket as shown in block 4O9. If, however, a real socket
plexvirtual socket 9O. This receive operation is reflected is required, then the ''Yes'' path of block 4O5 is taken. As
in block 341 of Figure 14. After receiving the data from seen in block 4O6, a real socket is created. The real
the multiplex virtual socket 9O, the client-side intercept 5 socket is then added to the event list as shown in block
function 8O performs a virtual close operation to close 4O8 for monitoring as reflected in block 3O2 of Figure
the multiplex virtual socket 9O as reflected in block 342. 13. After creating a real socket and establishing a con-
The client-side intercept function 8O then processes the nection, the virtual socket is then connected to the real
response as described above for the client-side inter- socket as shown in block 4O9 and create operation is
cept module as reflected in block 343 (see for example 1O completed as shown in block 41 O.
Figures 4 and 8). [OO99] For carying out the virtual send operation re-
[OO96] The operations of block 344 are then carried flected in blocks 334 and 346 of Figure 14, or blocks
out whichever path is taken exiting block34O. The client- 364 and 376 of Figure 15, the operations beginning with
side intercept function 8O deletes the multiplex virtual block 42O of Figure 16-2 are carried out. The data is
socket as shown in block 344 and then performs the vir- 15 added to the virtual socket queue as shown in block427
tual send operation to send the response to the browser and when complete, the send operation terminates as
via the simplex virtual socket 7O as shown in block 346. shown in block 428.
When the virtual send operation completes, the client- [O1 OO] The virtual receive operation reflected in
side intercept function 8O performs a virtual flush oper- blocks 331 and 341 of Figure 1 4 and blocks 361 and
ation toflush the data queued in the simplexvirtual sock- 2O 371 of Figure 15 are pe_ormed by carrying out the op-
et as shown in block347 to the real socket 6Ob and then erations beginning at block 43O of Figure 16-3. As
performs a virtual close operation to close the simplex shown in block 435, the virtual socket queue is evaluat-
virtual socket as shown in block 348. After closing the ed to determine if any data is present on the virtual sock-
simplex virtual socket to the client-side intercept func- et queue. If data is present on the virtual socket queue,
tion the simplex vi_ual socket is deleted and the client- 25 then the ''yes'' path of block 435 is taken and the data
side intercept function terminates as shown in blocks is returned to the function calling the receive operation
349 and 35O of Figure 14. as shown in block 436. If there is no data on the virtual
[OO97] As will be appreciated by one of skill in the art, socket queue and the socket is not marked as closing,
the present invention has been described with respect then the ''No'' path of decision block 44O is taken and
to one particular instance of the creation of simplex and 3O nothing is returned as shown in block 441 . However, if
multiplex virtual sockets and client-side intercept and there is no data on the queue and the socket is marked
server-side intercept functions, however, a plurality of as closing, then the ''Yes'' path of block 44O is taken and
these functions may be created within a single client- the socket is marked closed as shown in block 442 and
side intercept module or server-side intercept module. the closed socket response is returned to the operation
Accordingly, a client-side intercept module and server- 35 requesting the receive as shown in block 443.
side intercept module according tothe present invention [O1 O1] The virtual select operation carried out in
maycreate a TCP/l P connection between the client-side blocks 326 and 336 of Figure 14 and block 366 of Fig-
intercept module 3O and a server-side intercept module ure 15 is performed by carrying out the operations be-
4O and then multiplex on the TCP/IP connection plurality ginning with block 445 of Figure 16-4. As seen in block
of web browser or web server originated communica- 4O 446 it is first determined if data or a virtual close opera-
tions while maintaining the TCP/l P connection. tion is pending for the selected virtual socket. If no data
[OO98] The remaining functions of the client socket or virtual close are pending then the ''no'' path out of
manager and the server socket manager may best be block 446 is taken and the process waits for a virtual
understood with reference to Figures 1 6-1 through 16-4 event on the selected virtual socket as reflected in block
and Figureg 17-1 and 17-2 which describe the opera- 45 447 and terminates after receiving such an event as re-
tions carried out by the client-side intercept module and flected in block 448. If data or a virtual close is pending
the server-side intercept module when a virtual create, for the selected virtual socket the a virtual event has al-
a virtual send, a virtual receive, a virtual select, a virtual ready occurred and the ''yes'' path out of block 446 is
flush, or a virtual close operation is executed as reflect- taken and the process terminates as reflected in block
ed in flowcharts of Figure 14 and Figure 15. When a 5O 448.
virtual create operation is performed, such as shown in [O1 O2] The virtual flush operation referred to in blocks
block 333 of Figure 14 and block 363 of Figure 15, the 335 and 347 of Figure 14 and blocks 365 and 377 of
operations beginning with block 4OO of Figure 16-1 are Figure 15 is performed by carrying out the operations
carried out. The socket manager then determines if a beginning with block 45O of Figure 17-1 . When called,
real socket is required as shown in block 4O5. lf a real 55 the vi_ual flush operation determines if there is any data
socket already exists, such as when create creates a in the virtual socket queue to be flushed as reflected in
multiplex virtual socket which is to be connected to an the decision block 455. If there is no data in the virtual
existing real socket, then the ''No'' path out of block 4O5 socket queue, then the flush operation simply termi-
16
31 EP O 823 173 B1 32
nates and returns to the calling function as reflected by 498.
the ''No'' path of block 455. If, however, there is data in [O1 O5] Figure 13 will now be described as it relates
the queue, then the ''Yes'' path of block 455 is taken and to Figures 16-1 through 1 6-4 and Figures 17-1 and
it is determined if the virtual socket queue is for a mul- 17-2. When a real event occurs, block 3O2 of Figure 13
tiplex socket as shown in block 46O. If it is a multiplex 5 is exited and the socket manager examines the event
socket, then the socket header, which consists of three based upon how the event was generated. If the event
bytes reflecting a unique identifierfor the socket and the is the timing out of the multiplex socket activity timer
amount of data in thetransfer, is addedtothe real socket which was set in block496 of Figure 17-2, then the path
buffer as reflected in block 461 . In either case, if it is a from block 3O5 to block 312 is taken in Figure 1 3. As
multiplex socket or a simplex socket, the data for the 1O shown in Figure 13, the operations of block 312 and
real socket is then moved to the real socket buffer as 313 are then carried out by the socket manager to close
shown in block 462. If the real socket buffer is full, then the multiplex real socket and delete the multiplex real
the ''Yes'' path of block 465 is taken and the data from socket which corresponds to the socket which connects
the real socket buffer is sent on the real socket as shown the client-side intercept module to the server-side inter-
in block 466. lf the real buffer is not full, then the ''No'' 15 cept module. The socket manager then waits for the
path of block 465 is taken. The virtual flush function then next real event. This multiplex event timer is reset by the
tests to determine if there is any other data on any other creation of a multiplex virtual socket as shown in block
multiplex virtual socket queue which is to be sent to the 322.
real socket. If the answer is Yes, then the ''yes'' path of [O1 O6] If the event occurring on the real socket is a
block 47O is taken and the data in the real socket buffer 2O real socket close such as the web server performing a
is not sent until the virtual flush operation is called again close operation on the socket connections between the
to flush one of the other virtual socket queues. If there web server and the server-side intercept module, then
is no other data or after adding the data from the other the path from block 3O5 to block 3O9 of Figure 13 is
multiplexvirtual sockets, then the operation of block466 taken. The socket manager removes the real socket
is carried out and the data in the real socket buffer is 25 from the real event list as shown in block 3O9 and dis-
sent on the real socket. After all the data in the virtual connects the virtual socket or sockets in the case of mul-
socket queue corresponding tothe function which called tiple multiplex sockets from the real socket or sockets
the virtual flush operation is sent to the real socket, then as shown in block 31 O. The socket manager then marks
the virtual flush operation terminates as reflected in the virtual socket as closing and signals a virtual event.
block 467. 3O This operation is reflected in block311 and when all data
[O1 O3] The virtual close operation shown in blocks is emptied from the virtual socket queue, the virtual
342 and 348 of Figure 14 and blocks 372 and 378 of socket will close. After marking the virtual socket as
Figure 15 is carried out by performing the operations closing, the socket manager then determines whether
beginning with block 48O of Figure 17-2. When the vir- or not the real socket, which is to be closed, is a simplex
tual close operation is called, the operation first tests to 35 socket as shown in decision block315. If the real socket
determine ifthevirtual close is of a multiplexvirtual sock- closing is a simplex socket, then the real socket is closed
et as reflected in block 485. If it is a multiplex virtual and deleted as reflected in block 31 6. The socket man-
socket, then the ''Yes'' path of block 485 is taken and the ager then waits forthe next real event as shown in block
''close'' operation indicator is added to the virtual socket 3O2.
queue. Whether the virtual close is of a multiplex virtual 4O [O1 O7] If it is not a simplex real socket which is being
socket or not, the virtual close operation calls the virtual closed, then the ''No'' path of block 315 is taken and the
flush operation as shown in block 487 and then discon- socket managerthen waits forthe next real event. Thus,
nects from the real socket as shown in block 488. The the multiplex real socket or the socket connecting the
operation then tests to see if the virtual close is of a sim- client-side intercept module and the server-side inter-
plex virtual socket as shown in block 49O, and if not, the 45 cept module can only be closed by the timeout of the
''No'' path is taken to block 495. Because the close is of multiplex socket activity timer. This allows for the main-
a multiplex virtual socket, block 495 tests to determine tenance of the connection between the client-side inter-
if it's the last multiplex virtual socket and, if it is the last cept module and the server-side intercept module even
multiplex virtual socket, sets the multiplex activity timer after the last communication between the modules has
as shown in block496. lf it is not the last multiplexvi_ual 5O occurred for a user specified predetermined time. ln the
socket, then block 496 is skipped. event of a subsequent connection request from the
[O1 O4] Returning to block 49O, if the virtual close is of browser prior to the timing out of the multiplex socket
a simplex virtual socket, then the corresponding real activity timer, the communication could be carried out
socket is removed from the event list as shown in block without reestablishing the connection between the cli-
491 and the real socket is closed and deleted as shown 55 ent-side intercept module and the server-side intercept
in block 492. Whether the socket is simplex or multiplex module and thereby eliminating the need for the over-
virtual socket, the virtual socket is marked as closed in head of reestablishing such a connection.
block 497 and the close operation terminates in block [O1 O8] The final path to be described of Figure 1 3 is
17
33 EP O 823 1 73 B1 34
when a real event occurs and the event is the receipt of puter in response to each connection request
data on the multiplex real socket or sockets 36a or 36b by the first application for receiving request da-
in Figure 1 2. When data is received on the multiplex ta originated by the first application;
real sockets, this data is examined and in the event the establishing a first real socket in the first com-
data includes the close operation indicator such as that 5 puter and a second real socket in the second
added to a virtual queue in block 486 of Figure 1 7-2, computer to connect the first computer to the
then a virtual close operation is performed and the path second computer over the external communi-
from block 32O to block 31 O is taken. The socket man- cation link
ager disconnects from the real socket the multiplex vir- establishing in the second computer a second
tual socket identified in the data received on the real 1O virtual socket for each connection request by
socket as shown in block 31 O and then marks the virtual the first application wherein the second virtual
socket as ''closing'' and signals a virtual event as shown socket corresponds to a first virtual socket es-
in block 31 1 . Because the close is the close of a multi- tablished in the first computer in response to a
plex virtual socket, the ''No'' path out of block 31 5 is tak- connection request by the first application;
en and the socket manager waits for another real event 15 multiplexing request data associated with a first
as shown in block 3O2. virtual socket onto the first real socket_,
[O1 O9] Through carrying out the operations described transmitting the multiplexed request data over
in Figures 1 3 through 1 7 a particular aspect of the the external communication link utilizing the
present invention establishes a persistent connection TCP protocol to the second real socket; receiv-
between the first computer and the second computer 2O ing the multiplexed request data from the exter-
over the external communication link. The persistent nal communication link;
connection is maintained until all web browser originat- demultiplexing the request data received by the
ed communications are completed and a plurality of web second real socket from the external communi-
browser originated communications are intercepted and cation link;
multiplexed them onto the external communication link 25 providing the demultiplexed request data to the
while the persistent connection is maintained. The cli- second virtual socket which corresponds to the
ent/server specific data stream may then be demulti- first virtual socket established in response to
plexed to create a plurality of HTTP data streams and the request from the first application;
the plurality of HTTP data streams are provided to the providing the request data received by the sec-
web server. The persistent connection is also main- 3O ond virtual socket to the second application;
tained until all web server originated communications and
are completed. A plurality of web server originated com- maintaining the first and second real sockets
munications are intercepted and multiplexed onto the until the request data corresponding to a re-
external communication link while the persistent con- quest from the first application which estab-
nection is maintained. Furthermore, the client/server 35 lished a first virtual socket has been provided
specific data stream may be demultiplexed to create a to the second application.
plurality of HTTP data streams and the plurality of HTTP
data streams provided to the web server. 2. The method of Claim 1 further comprising the steps
[O1 1 O] In the drawings and specification, there have of_.
been disclosed typical preferred embodiments of the in- 4O
vention and, although specific terms are employed, receiving response data from the second appli-
these terms are used in a generic and descriptive sense cation in response to a request from the first
only and not for purposes of limitation, the scope of the application at the second virtual socket associ-
invention being set forth in the following claims. ated with the request from the first application;
45 multiplexing the response data received by the
second virtual socket onto the second real
Claims socket_,
transmitting the multiplexed response data
1 . A method of reducing the data transmitted over a over the external communication link utilizing
communication link from a first application resident 5O the TCP communication protocol to the first real
in a first computer and to a second application res- socket;
ident in a second computer wherein the data is receiving the multiplexed response data from
transmitted over an external communication link the external communication link_,
from the first computer to the second computer uti- demultiplexing the response data received by
lizing the TCP communication protocol, the method 55 the first real socket_,
comprising_. providing the demultiplexed response data to
the first virtual socket which corresponds to the
establishing a first virtual socket in the first com- request from the first application as the re-
1 8
35 EP O 823 1 73 B1 36
sponse to the request from the first application; means for transmitting the multiplexed request
and data over the external communication link uti-
providing the response data received by the lizing the TCP protocol to the second real sock-
first virtual socket to the first application. et;
5 means for receiving the multiplexed request da-
3. The method of Claim 2 further comprising the steps ta from the external communication link;
of_. means for demultiplexing the request data re-
ceived by the second real socket from the ex-
closing the second virtual socket after the re- ternal communication link;
sponse data is multiplexed; and 1O means for providing the demultiplexed request
closing the first virtual socket afterthe response data to the second virtual socket which corre-
data is provided to the first application. sponds to the first virtual socket established in
response to the request from the first applica-
4. The method of Claim 3 wherein said maintaining tion;
step comprises closing the first and second real 15 means for providing the request data received
sockets when all first virtual sockets are closed. by the second virtual socket to the second ap-
plication; and
5. The method of Claim 3 wherein said maintaining means for maintaining the first and second real
step comprises maintaining the first and second re- sockets until the request data corresponding to
al sockets for a predetermined time after all first vir- 2O a request from the first application which estab-
tual sockets are closed. lished a first virtual socket has been provided
to the second application.
6. The method of Claim 1 wherein the first application
comprises a web server and the second application 9. The apparatus of Claim 8 further comprising_.
comprises a web browser. 25 means for receiving response data from the
7. The method of Claim 1 wherein the external com- second application in response to a request
munication link comprises a wireless communica- from the first application at the second virtual
tion link. socket associated with the request from the first
3O application;
8. An apparatus for reducing the data transmitted over means for multiplexing the response data re-
a communication link from a first application resi- ceived by the second virtual socket onto the
dent in a first computer and to a second application second real socket;
resident in a second computer wherein the data is means for transmitting the multiplexed re-
transmitted over an external communication link 35 sponse data over the external communication
from the first computer to the second computer uti- link utilizing the TCP communication protocol
lizing the TCP communication protocol, the appa- to the first real socket;
ratus comprising_. means for receiving the multiplexed response
data from the external communication link_,
means for establishing a first virtual socket in 4O means for demultiplexing the response data re-
the first computer in response to each connec- ceived by the first real socket;
tion request by the first application for receiving means for providing the demultiplexed re-
request data originated by the first application; sponse data to the first virtual socket which cor-
means for establishing a first real socket in the responds to the request from the first applica-
first computer and a second real socket in the 45 tion as the response to the request from the first
second computer to connect the first computer application; and
to the second computer over the external com- means for providing the response data re-
munication link ceived by the first virtual socket to the first ap-
means for establishing in the second computer plication.
a second virtual socket for each connection re- 5O
quest by the first application wherein the sec- 1 O. A computer program product for reducing the data
ond virtual socket corresponds to a first virtual transmitted over a communication link from a first
soc