`Bittinger et al.
`
`[54] DIFFERENCING CLIENT/SERVER
`COMMUNICATION SYSTEM FOR USE
`WITH CGI FORMS
`
`[75] Inventors: Reed Reed Bittinger; Michael Levi
`Fraenkel, both of Raleigh; Barron
`Cornelius Housel III, Chapel Hill;
`David Bruce Lindquist, Raleigh., all of
`NC.
`
`[73] Assignee: International Business Machines
`Corp., Armonk, NY.
`
`[ * ]
`
`Notice:
`
`The term of this patent shall not extend
`beyond the expiration date of Pat. No.
`5,754,774.
`
`[21] Appl. No.: 601,903
`[22]
`Filed:
`Feb. 15, 1996
`
`[51] Int. Cl.6 ...................................................... .. G06F 3/00
`[52] US. Cl. ............................... .. 395/200.33; 395/200.48
`[58] Field of Search ....................... .. 395/200.01, 200.48,
`395/200.47, 200.33, 200
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`3/1993 Bordsen et al. ...................... .. 711/152
`5,193,162
`8/1993 Epard et al. .... ..
`.. 345/502
`5,241,625
`5,473,772 12/1995 Halliwell et al. .
`.. 395/712
`5,574,906 11/1996 Morris
`707/1
`5,600,834
`2/1997 Howard
`707/201
`5,611,038
`3/1997 Shaw et a1. ........................... .. 345/302
`
`FOREIGN PATENT DOCUMENTS
`
`0 665 670 A3 1/1995 European Pat. Off. ...... .. H04L 29/06
`
`OTHER PUBLICATIONS
`
`IBM Technical Disclosure Bulletin, Method to Reduce
`Changed Data Sent BetWeen Computer Systems, vol. 35,
`No. 1B, pp. 110—112.
`Austin, et al., File System Caching in Large Point—to—Point
`Networks, Software Engineering Journal, vol. 7, No. 1, pp.
`65—80 (Jan. 1992).
`
`US005859971A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,859,971
`*Jan. 12, 1999
`
`Nelson, et al., Caching in the Sprite Network File System,
`Operating Systems Review, vol. 21, No. 5, pp. 3—4 (1987).
`HuiZinga, et al., TWo—Level Client Caching and Discon
`nected Operation of Notebook Computers in Distributed
`Systems, SIGICE Bulletin, vol. 21, No. 1, pp. 9—14 (Jul.
`1995).
`Abstract, IBM Technical Disclosure Bulletin, Method for
`Transmitting Only Document Change Data, vol. 27, pp.
`844—846 (Jun. 1984).
`International Search Report.
`
`(List continued on next page.)
`
`Primary Examiner—Parshotam S. Lall
`Assistant Examiner—Kenneth R. Coulter
`Attorney, Agent, or Firm—Jerry W. Herndon
`
`[57]
`
`ABSTRACT
`
`A method, apparatus and computer program product for
`reducing the data transmitted over an external communica
`tion link from a ?rst application resident in a ?rst computer
`to a second application resident in a second computer. The
`method, apparatus and computer program product include
`storing a data stream from the ?rst application to be provided
`to the second application in response to a request from the
`second application in a cache resident in the ?rst computer
`to create a server base cache entry and in a cache resident in
`the second computer to create a client base cache entry.
`Requests from the second application are interrogated to
`determine if a client base cache entry corresponding to the
`interrogated request exists and to determine if a server base
`cache entry corresponding to the interrogated request exists.
`The response data stream is intercepted prior to transmission
`of the response on the external communication link and
`compared to the server base cache entry to provide differ
`ence data corresponding to the difference betWeen the inter
`cepted response and the server base cache entry. The dif
`ference data is sent over the external communication link
`and acquired by the second computer Which reconstructs the
`response data stream by combining the client base cache
`entry With the difference data to create a response data
`stream Which is provided to the second application.
`
`48 Claims, 19 Drawing Sheets
`
`ac m resperree
`= can at server
`ese em
`7
`
`No
`
`cerrrpure dmererree
`eerweerr server eeee
`cache emrv lay CGI
`request and response
`rrerrr we/o eemsr
`
`Update server base
`were entry wirrr m'rP
`data of response, sac
`of HTTP news and Null
`me CGI emererree data
`
`creere server nese
`cache emry by storing
`URL or CGI requeer,
`HrrP data or response
`lrom server and
`one 01 rm'P data
`
`Send response re (:51
`01 one of SSI base
`
`dmererroe dare
`
`Petitioner Microsoft Corporation - Ex. 1011, p.1
`
`
`
`5,859,971
`Page 2
`
`OTHER PUBLICATIONS
`
`IBM Sales Brochure G325—3595—00, printed Sep. 1995.
`
`HypterteXt Transfer Protoco1—HTTP/1.0, HTTP Working
`Group, Berners—IJee et a1.—Internet—Draft Basic HTTP.
`IBM Sales Brochure G325—3598—0 printed Sep. 1995.
`
`IBM ARTOur Technical OVerVieW_Re1eaSe 1_
`
`IBM Publication SB14—0110—00, 1995.
`
`Petitioner Microsoft Corporation - Ex. 1011, p.2
`
`
`
`U.S. Patent
`
`Jan. 12,1999
`
`Sheet 1 0f 19
`
`5,859,971
`
`FIG. 1
`
`PRIOR ART
`
`TCP/ IP
`15
`
`Web Browser
`
`Web Server
`
`FIG. 2
`
`_
`
`_ _ _ _
`
`_
`
`_ _
`
`_ _ _ _
`
`_ .
`
`_ 0
`
`_ 0
`
`u m/ |
`
`_ S
`
`5 3
`
`S
`
`_ 0 r
`
`_ e _ S
`_ 2/ m
`_ W
`_ be
`
`_ B
`_ w _ W
`_ w
`
`_ 1/ w
`
`_ 3/ m _ C
`
`_ .llllllllllllllll'
`
`Petitioner Microsoft Corporation - Ex. 1011, p.3
`
`
`
`U.S. Patent
`
`Jan. 12, 1999
`
`Sheet 2 0f 19
`
`5,859,971
`
`FIG. 3
`
`100
`/
`
`Receive request from
`web browser
`
`Cache Entry Exist
`for Request
`
`No
`
`Is entry
`Coherent
`?
`
`111
`
`/
`
`V
`
`Send Cache entry
`to Browser as
`HTI'P data stream
`
`112
`\
`Send "Coherency Check"
`request to SS1 including
`Coherency Interval,
`CRC of cache entry
`and HTI'P request
`
`106
`/
`Send Request to Server
`Side Intercept Module
`(SS1) including HTTP
`request, Coherency
`Interval and Null CRC
`
`Petitioner Microsoft Corporation - Ex. 1011, p.4
`
`
`
`U.S. Patent
`
`Jan. 12, 1999
`
`Sheet 3 0f 19
`
`5,859,971
`
`160
`/
`Receive Response from
`SSI including Response
`Type, CR0 and Age
`
`FIG. 4
`
`Response
`Type
`‘?
`
`Coherent
`
`166
`/
`Update cache entry by
`updating Store Date
`Time = Current Date
`Time - Age received
`from SSI
`
`167
`\
`
`Receive data stream
`and store
`
`170
`
`Yes
`
`Cache entry exist
`for data stream
`
`171
`
`Delete old
`cache entry
`
`172
`\
`Update Cache with
`received data including
`H'l'l'P data, CRC of HTTP
`data and Store Date
`Time = Current Date
`Time - Received Age
`
`173
`/
`l
`Create Cache Entry
`by storing HTTP data
`received, URL of HTTP
`data, CRC of HTTP data
`and Store Date Time =
`Current Date ‘?me - Age
`
`174
`/
`Send HTTP data of
`Cache Entry to Browser
`as H‘lTP data stream
`
`CD
`
`Petitioner Microsoft Corporation - Ex. 1011, p.5
`
`
`
`U.S. Patent
`
`Jan. 12,1999
`
`Sheet 4 0f 19
`
`5,859,971
`
`Reoelve Request from
`Cllent Slde Intercept
`Module (CSI) Including
`Coherency Interval,
`CRC and HITP data
`
`F IG- 5
`
`126
`
`I
`
`Send HITP
`request to
`server
`
`Send "coherenf'
`response to CSI
`
`137
`/
`Send 'streom"
`response to CS!
`Including CRC of SSI
`entry. Age of SSI entry
`and HTTP data of 88!
`entry
`
`Petitioner Microsoft Corporation - Ex. 1011, p.6
`
`
`
`U.S. Patent
`
`Jan. 12, 1999
`
`Sheet 5 0f 19
`
`5,859,971
`
`Recelve response from /
`server and store HTTP
`data stream and
`calculate CRC of H“?
`
`l5]
`/
`r
`Update Store
`Date llme
`= Current
`Date llme
`
`152
`
`Delete stored
`response
`from server
`
`Delete HTTP data of
`server cache entry
`
`154
`/
`Update Server cache
`entry wlth CRC of server
`response, HI'IP data of
`sewer response and Store
`Date llme = Current
`Date llme
`
`146
`
`Create a Sewer Cache
`Entry by storing the CRC
`of recelved HTIP data.
`the HlTP data and the
`Stored Date llme =
`Current Date llme
`
`FIG. 6
`
`156
`/
`Send 'coherent“ response
`wtth Age = 0
`
`l
`
`157
`/
`Send "stream" response
`lncludlng HTlP data recetved
`from sewer, CRC of HTTP
`data and Age = 0
`
`Petitioner Microsoft Corporation - Ex. 1011, p.7
`
`
`
`U.S. Patent
`
`Jan. 12,1999
`
`Sheet 6 0f 19
`
`5,859,971
`
`200
`
`FIG. 7
`
`Receive HiTP request
`from browser
`
`206
`
`Send HTiP
`Request to SSI
`
`No
`
`client base
`cache entry exist
`for CGl request
`
`212
`
`21 1
`
`Set CRC *0 send 1°
`SSI to null
`
`Set CRC to send to SSI
`to CRC of client base cache
`entry for Get request
`
`213
`
`Send CGI request to SSI
`Including HiTP request and
`CRC of client base
`cache entry
`
`V
`
`Petitioner Microsoft Corporation - Ex. 1011, p.8
`
`
`
`U.S. Patent
`
`Jan. 12, 1999
`
`Sheet 7 0f 19
`
`5,859,971
`
`267
`/
`Pass HTTP response
`to browser
`
`FIG. 8
`
`260
`/
`Receive response to CGI
`request from SSI including
`response type and CR0
`of server base form
`
`response to a
`CGI request
`'2
`
`Yes
`
`266
`/
`
`Receive response and store
`HTTP data, CGI difference
`data and CR0
`
`270
`
`Yes
`
`a client base
`form exist for
`CGI request
`
`Does
`CRC of client
`orm match CRC of
`server form
`
`Rebase the client bas =
`cache by storing the
`HTTP data received
`from the SSI and
`the CRC received
`from the SSI
`
`271
`/
`Create a client base
`cache entry by storing
`the URL of the CGI
`request, the CRC of
`the HTTP data from
`the SSI and the HTTP
`data from the SSI
`
`277
`/
`r
`Reconstruct the HTTP
`iresponse from the web
`server by merging the
`CGI difference data to ‘
`the client base form
`HTTP data to create
`the HTTP data stream
`278
`r
`/ 1
`Send reconstructed
`response to browser
`as HTTP data stream
`
`Ct}
`
`Petitioner Microsoft Corporation - Ex. 1011, p.9
`
`
`
`U.S. Patent
`
`Jan. 12, 1999
`
`Sheet 8 0f 19
`
`5,859,971
`
`Fl G 9
`'
`
`220
`/
`Fieceive CGI request from
`CSI including CFiC of
`client base cache entry
`and HTTP data of request
`
`221
`A
`i
`Send CGI request
`to web server
`
`'
`
`HG‘
`10A
`
`FIG.
`10B
`
`230
`l
`Receive response from
`server and store HTTP
`data, CRC of HTTP
`data and null CGI
`difference data
`
`G _ 1 0 A
`
`request a
`CGI request
`
`236
`j c
`Send HTTP
`response to CSI
`
`Petitioner Microsoft Corporation - Ex. 1011, p.10
`
`
`
`U.S. Patent
`
`Jan. 12,1999
`
`Sheet 9 0f 19
`
`5,859,971
`
`245
`
`(iqggérgfsgggzi
`
`'
`Compute difference
`between server base
`cache entry for CGI
`request and response
`from web server
`
`ls
`server rebasing
`required
`
`7
`Update server base
`cache entry with HTTP
`data of response, CFlC
`of HTTP data and Null
`the CGI difference data
`
`F
`
`1
`
`241
`l
`J
`Create server base
`cache entry by storing
`URL of CGI request,
`HTTP data of response
`from sewer and
`CFlC of HTTP data
`
`l
`
`250
`
`ls
`CRC of SSl =
`CFlC of CSI
`
`Yes
`
`251
`\
`
`l
`
`l
`
`Null
`HTTP data
`
`253
`l j
`HTTP data set
`to received
`HTTP data
`
`252
`/
`Send response to CSl
`of CR6 of SSl base
`cache entry, HTTP a
`data and CGI
`difference data
`
`7
`
`Petitioner Microsoft Corporation - Ex. 1011, p.11
`
`
`
`U.S. Patent
`
`Jan. 12, 1999
`
`Sheet 10 0f 19
`
`5,859,971
`
`_
`
`_
`
`,
`
`" _ _ _
`
`u ‘ n _ 6 _
`
`_ } V _ _ A r _
`
`@ m,
`
`
`
`
`
`_.|||.L. l l | I l l a I | l l | I l I 1 1 1 I I ll 1 I l | | ll... t I | I I | | l l l I | | | | | l IIJ
`
`_ >08 08/ n n \ m8 <8/ “
`
`_ / \ u _ \ \ _
`
`_ u _ \ _
`_ _ _ _
`
`n 9 v 18 u n E) i u
`u k {8 u n 61 n ‘ n
`
`
`
`_P ON 3 _ n 8 | 1 Ion, ||||||| | I u
`
`u _ _ \ m8 <9; _
`
`_ 9 ‘ n _ 1 ‘ _
`
`_ _ _
`
`" 2% 0%,, _ mm H \ mam < / n
`
`_ I _
`
`_ 55% mm; 2% 08 / am _ n 60 \ m8 <9; 596% mm; H
`
`_ mm
`
`> _ _ 1 r _
`
`_ 6 _
`
`Petitioner Microsoft Corporation - Ex. 1011, p.12
`
`
`
`US. Patent
`
`Jan. 12, 1999
`
`Sheet 11 of 19
`
`5,859,971
`
`0%
`
`
`
`Emacs—2umxoom
`
`_mmm mum.mewcmzumxoom
`
`NF.0.”—
`
`_mmm_-_
`
`Petitioner Microsoft Corporation - EX. 1011, p.13
`
`Petitioner Microsoft Corporation - Ex. 1011, p.13
`
`
`
`
`US. Patent
`
`Jan. 12, 1999
`
`Sheet 12 of 19
`
`5,859,971
`
`N5newmom
`
`
`
`umxoomx2923:>nU288E08Ema
`
`
`
`
`
`“9.08am.63E?»2:a:E96a29-EzE9:3205E2._>_8<mEmem5:08:00mEEoo£5x08fie.uu<
`
`
`
`mom$20amxoomRm.:03282San.how
`
`:oEma
`
`5x08xwaEE
`
`<9.GE
`
`com
`
`Pom
`
`Now
`
`5E0590
`
`5x0839
`
`Em>mcm.2gm;
`
`
`
`5x08.3.m:o
`
`
`
`<9.GE
`
`
`
`
`
`m2.9...
`9..GE
`
`
`
`8x08.mm:98.9.x2335.xmfiEfim93.0
`
`
`E.Em>m.3.Eat“Boom395x08fists
`
`
`
`
`mFm
`
`-52:m5928
`
`5x08.3.xoa
`
`mEmem
`
`Emu9.:
`
`was252
`
`$58.36.8a5m
`
`9:.2cosoca
`
`“96833.3
`
`Petitioner Microsoft Corporation - Ex. 1011, p.14
`
`
`
`
`
`~Il¢llcllulla|ullullu|un'ulolnll.|u|ul-|uulclu'uallullaII.|-'u|u.lu'.lcll.|ul|.ll.|.
`
`
`
`
`
`Petitioner Microsoft Corporation - Ex. 1011, p.14
`
`
`
`
`
`
`
`
`
`US. Patent
`
`Jan.12,1999
`
`Sheet13 of19
`
`5,859,971
`
`
`
`mm:.GE
`
`oz
`
`m5
`
`mum
`
`wmm
`
`.o50mtmuw
`
`
`
`couoca.mm
`
`
`
`
`
`__m.__m=:_>.963as:323
`
`2mmum
`
`fistsx55.9:6050
`
`“8:585
`
`ants
`
`.3308
`
`“8322:m@890
`
`5.08Eats
`
`
`
`
`
`ucmammeoOm5x08x2322:
`
`
`
`cm>om:5560m.8.xwfigm.2SamM.mcmum“Hm
`
`
`92%new$20«$0833:59:9Emu
`
`2.030
`
`“$.08mczflxm
`
`Petitioner Microsoft Corporation - EX. 1011, p.15
`
`
`
`
`
`o'.l|allel.ll.|oll-I-.l-Ilnlullulolull-Il:a'ol.l.luluu'o'cllnll.‘|-|-InII-lnl.li.l'
`
`
`
`
`
`Petitioner Microsoft Corporation - Ex. 1011, p.15
`
`
`
`
`
`
`
`US. Patent
`
`Jan. 12, 1999
`
`Sheet 14 of 19
`
`5,859,971
`
`Nam
`
`$895
`
`
`
`“$392“..9:
`
`hmwgobn9.:
`
`960mm:828mmmEmem
`
`San\
`
`xm_aE_mm_>fiasco.
`
`
`
`
`umxoow_m:t_>
`
`Em>m9:
`
`fistsm.2:35
`
`xmfiEfim5:0Em>m
`
`
`
`6x08_m:t_>
`
`omm
`
`mNm
`
`03w
`
`00m
`
`U085
`
`“3.00m
`
`9%
`
`oEEMxm
`
`:55m5
`
`33.3mL2=m>>
`
`.52.:m5:o#65
`
`
`
`“9.00m_m:t_>$3
`
`cm823,50
`
`:33me5:9.
`
`3:88..
`
`05Sofia
`
`6323:.
`
`H988Eats
`
`Emu9:Ewan...
`
`m5E8335
`
`
`
`Eats.6322:
`
`6x08
`
`6x08Eats33
`
`-23505asamwe9fiance9:__ucmm__
`x2356m3390..
`
`
`
`.mm9:9Exocm.mst_>
`
`828$.Ema
`
`380$
`
`mmcoqmm.m5
`
`0538.0..
`
`63:38
`
`
`
`“9.00m_w:t_>
`
`
`
`_wm9.:._m>_woom_.
`
`.32.:or:m_>mmcoamm:
`
`E08_m:t_>xmfi
`
`3m
`
`0mm
`
`9:22009:_.mmo_o_.
`
`.
`
`6x08fists6x08fists
`
`
`
`
`
`2636“9.08fists
`6x08antsmeEE
`
`xmagmxmagm
`xwfiEfim5583m:.
`9,:m_>3265m59mmcoamm.9::05?
`
`Emu9:Ewan...
`
`Petitioner Microsoft Corporation - EX. 1011, p.16
`
`Petitioner Microsoft Corporation - Ex. 1011, p.16
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`US. Patent
`
`Jan. 12, 1999
`
`Sheet 15 of 19
`
`5,859,971
`
`cmHOP—EEOC
`
`2:228
`
`
`
`303me5:9.
`
`3:039
`
`xm_aE_w
`
`“9.00mEats
`
`882m
`
`0283..m5
`
`05=mwo_0=
`
`5353
`
`“968Eats
`
`$me
`
`.886
`
`mkm
`
`$5893
`
`E059:
`
`Em8mmom
`
`mam:.“mxoow
`
`
`
`5mem595x08fists
`
`
`
`um>_moom3mm.
`
`Km
`
`Ewaammm53.0:$83
`
`waEfim5coEm>m9:E88:6
`33.3m1.2:m>>END05Ems—n...
`
`“9.00m_m:t_>.mztSmeEfi
`
`
`
`
`6x08_m:t_>xmfigm
`2ng52mm9:9mauve9:=25.
`xmagmm.285: 0mm
`
`mom
`
`_.
`
`0m
`
`50__m>_momm._
`
`x2922:m_>$352
`
`“9.0863.3
`
`523m5__w>_womm__
`
`m5m33:032
`
`mnmwkm
`
`9,:228
`
`x0353E
`
`
`
`6x08fists
`
`m5__mmo_0_.
`
`x2e22:
`
`$0853.3
`
`mam:.Exocm
`
`9:E8336
`
`Emu9:Ema“...
`ants652:5
`-EzE9:m350may93:03205__ucmm__
`
`“oxoow83.5$3
`
`Ch
`
`05m
`
`
`
`
`
`Exocm_m2t_>xm_aE_m
`
`Petitioner Microsoft Corporation - EX. 1011, p.17
`
`Petitioner Microsoft Corporation - Ex. 1011, p.17
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Jan. 12,1999
`
`Sheet 16 0f 19
`
`5,859,971
`
`FIG. 16-2
`
`420
`
`1
`
`Send
`
`1
`
`427
`/
`
`'
`Add data
`.
`to “dual
`socket queue
`
`1
`
`428
`
`Return
`
`FIG. 16-1
`
`400
`
`Real socket
`needed
`7
`
`No
`
`406
`/
`
`v
`Create
`real socket
`
`l
`
`408
`
`Add real
`socket to
`event list
`
`409
`/
`
`r
`
`Connect virtual
`to real socket
`
`}
`r
`Return
`
`410
`)
`
`1
`
`Petitioner Microsoft Corporation - Ex. 1011, p.18
`
`
`
`U.S. Patent
`
`Jan. 12, 1999
`
`Sheet 17 0f 19
`
`5,859,971
`
`FIG. 16-3
`
`430
`
`Receive
`
`Data on
`input queue
`
`Mark socket
`"Closed"
`
`443
`
`Return
`"Closed"
`
`Return
`Nothing
`
`FIG. 16-4
`
`445
`
`data or a "close'
`
`Yes
`
`Wait for
`virtual event
`
`if
`448
`
`Return
`
`Petitioner Microsoft Corporation - Ex. 1011, p.19
`
`
`
`U.S. Patent
`
`Jan. 12, 1999
`
`Sheet 18 0f 19
`
`5,859,971
`
`450
`
`Any data
`in queue
`
`Move virtual socket
`data to real buffer
`
`Real Buffer
`full
`
`Yes
`
`Send real
`buffer data
`
`FIG. 17-1
`
`‘Move socket header
`to real buffer
`
`470
`
`Any
`data on other
`queues
`?
`
`Yes
`
`Petitioner Microsoft Corporation - Ex. 1011, p.20
`
`
`
`US. Patent
`
`Jan. 12, 1999
`
`Sheet 19 0f 19
`
`5,859,971
`
`480
`
`
`FIG. 17-2
`
`485
`
`Multiplex
`socket
`
`?
`
`
`
`
`
`Add "Close" indicator
`
`495
`
`Last
`multiplex virtual
`socket
`?
`
`496
`
`l
`It“
`St rt
`a. in” -IP ex
`actMty timer
`
`Mark the
`
`socket closed
`
`498
`
`
`
`Petitioner Microsoft Corporation - Ex. 1011, p.21
`
`
`
`
`
`
`
`
`
`
`
`to socket queue
`
`487
`
`488
`
`490
`
`real socket
`
`Simplex
`
`socket
`
`7
`
`491
`
`Close and delete
`real socket
`
`Remove real socket
`from real event list
`
`492
`
`
`
`
`
`Petitioner Microsoft Corporation - Ex. 1011, p.21
`
`
`
`5,859,971
`
`1
`DIFFERENCING CLIENT/SERVER
`COMMUNICATION SYSTEM FOR USE
`WITH CGI FORMS
`
`FIELD OF THE INVENTION
`
`The present invention relates to methods of communicat-
`ing between applications resident on different computers
`such as a web browser and a web server. More particularly
`the present
`invention relates to differencing methods of
`communication over an external communication link
`
`between two computers.
`
`BACKGROUND OF THE INVENTION
`
`The recent publicity and emphasis on the “information
`superhighway” has increased awareness and acceptance of
`the Internet as a mass communication media. This broad
`
`based recognition of the Internet as a viable media for
`communication and interaction across multiple networks has
`also created a large established user base built upon the
`Internet standardized protocols for interaction between com-
`puter networks.
`The paradigm for the Internet is that of a client-server
`relationship where Internet clients (browsers) communicate
`with Internet servers. To provide greater access to the
`Internet the communication protocols and languages utilized
`by the clients and servers have become standardized. These
`protocols include the Hyper-Text Transfer Protocol (HTTP),
`which is the communication protocol used for communica-
`tions between clients and servers, and the Transfer Control
`Protocol/Internet Protocol (TCP/IP) the TCP portion of
`which is the transport specific protocol for communication
`between computers or applications. Also standardized is the
`language in which clients and servers communicate which is
`called Hyper-Text Markup Language (HTML). Because
`these protocols and language are machine independent, and
`utilize a connectionless best-efforts protocol
`to sending
`information, each transaction is fully self contained. Thus,
`for example, each message from a client contains informa-
`tion about the capabilities of the browser and is independent
`of any other communications for the communication to be
`completed. This self-contained nature of the communica-
`tions between a client and a server may be referred to as
`“stateless” communications and increases the amount of
`data which must be transferred between a client and a server
`
`for a given communication.
`In the context of the World Wide Web client/server
`applications the client may be a web browser which acts as
`the user interface. The web browser sends user requests to
`the appropriate web server and formats and displays the
`HTML data returned from the web server. The web browser
`
`also evaluates the HTML data to determine if there are any
`embedded hyper-link statements in the HTML data which
`would require subsequent browser requests which would
`then be initiated by the browser. A web server acts as the
`server for the client and processes the web browsers requests
`and returns the requested response as an HTML data portion
`of a HTTP data stream.
`
`As an example of a typical world wide web communica-
`tion the case of a web browser initiating a request for a
`“home page” from the web server illustrates the basic
`relationship between HTTP, HTML, TCP and the web
`browser and server. When the user of the web browser
`
`the web
`requests information from a specific web site,
`browser initiates communication with the web server by
`sending a “get” request to the web server specifying the
`Universal Resource Locator (URL) of the desired web site
`
`2
`which, for purposes of this example, may be a “home page.”
`The URL acts as the address of the web site and is unique
`throughout the Internet. The web server would then obtain
`and supply the web browser with the HTML data corre-
`sponding to the home page specified by the URL. This
`operation may involve further communications on the Inter-
`net by the Internet web server or the URL may specify the
`server which is in the local network to which the browser is
`attached. The web browser would then evaluate the HTML
`data received as an HTTP data stream from the web server
`
`to see if there were any embedded hyper-links such as an
`icon or an image and, if such a hyper-link exists would
`initiate requests specifying the URL of the hyper-link to
`obtain the specified data. This data would then be incorpo-
`rated into the home page and displayed to the user. As is seen
`in this simple example, a single user input request by a web
`browser may result in multiple additional requests which are
`automatically carried out by the web browser in response to
`the receipt of the HTML data corresponding to the user input
`request.
`The basic communication structure for an Internet based
`
`system is depicted in FIG. 1. In FIG. 1 a web browser 10
`communicates with a web server 20 over a communication
`
`link 15. This communication link is typically a local area
`network connection, wide area network connection, a con-
`nection over telephone lines or a combination thereof. The
`web browser 10 communicates with the web server 20 using
`TCP/IP. For the majority of Internet communications a web
`browser communicates with a web server using the generic
`communication protocol HTTP which is transmitted
`between the web browser and the web server over the
`TCP/IP link between the web browser and the web server.
`The actual data transferred between the web browser 10 and
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`the web server 20 are HTTP data objects (e.g. HTML data)
`as described above. The web server 20 may be a proxy
`which receives web browser communications from a num-
`
`ber of web browsers and routes them to the appropriate
`server.
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`The popularity of the web browser/web server and their
`common information and transport protocols, HTML and
`HTTP, has lead to rapid acceptance of web technology as a
`universal
`interface for network access to information.
`
`Furthermore, because the protocols and language for com-
`munication between web browsers and web servers are
`
`standardized the communication protocols and language
`will be the same whether a user is using Netscape
`NavigatorTM, NCSA MosaicTM, WebExplorerTM or any other
`web browser as their web browser to access network infor-
`
`the large installed user base for web
`mation. Therefore,
`browsers combined with the connectivity of the Internet and
`the ease of writing web application servers using the HTTP
`defined Common Gateway Interface (CGI)make web tech-
`nology very attractive for a large class of forms-based
`applications.
`At the same time that the Internet was growing in popu-
`larity and acceptance, mobile computing was also increasing
`in popularity. The use of laptops, notebooks, Personal
`Digital/Communication Assistants (PDAs/PCAs) and other
`portable devices has lead to an increase in demands for
`wireless communications. Wireless wide area networks,
`cellular communications and packet radio, however, suffer
`from common limitations if used in a web context. The high
`cost per byte of communications, slow response time, low
`bandwidth and unreliability all hamper use of wireless
`technology for the stateless communication protocol of the
`World Wide Web. Also, because the web protocol is stateless
`the amount of data per request and the number of commu-
`
`Petitioner Microsoft Corporation - Ex. 1011, p.22
`
`Petitioner Microsoft Corporation - Ex. 1011, p.22
`
`
`
`5,859,971
`
`3
`nication requests transferred over the wireless connection
`are larger than would be necessary if the communication
`were not self contained. Thus, combining wireless
`technology, or any low-speed communication technology,
`with web technology seems impractical as the strength of the
`web technology in its universal nature exacerbates the
`weaknesses of the wireless technology.
`OBJECTS AND SUMMARY OF THE
`INVENTION
`
`In view of the above limitations it is one object of the
`present invention to provide a communication system which
`reduces the amount of data to be transferred between appli-
`cations.
`
`invention to
`is an additional object of the present
`It
`provide a communication system which may be used in a
`web browser/server environment.
`invention to be
`It
`is a further object of the present
`compatible with existing communication protocols and lan-
`guages in a low speed or wireless communication system
`without requiring modification of web browser or web
`server applications.
`invention to
`It
`is an additional object of the present
`provide a communication system which reduces the amount
`of communication required between a web browser and a
`web server and thereby enhances performance of the com-
`munication system.
`In view of these and other objects, the present invention
`provides a method of reducing the data transmitted over a
`communication link from a first application resident in a first
`computer and to a second application resident in a second
`computer where the data is transmitted over an external
`communication link from the first computer to the second
`computer. One aspect of the present
`invention includes
`storing a data stream from the first application to be provided
`to the second application in response to a request from the
`second application in a cache resident in the first computer
`to create a server base cache entry. The data stream to be
`provided to the second application in response to a request
`from the second application is also stored in a cache resident
`in the second computer to create a client base cache entry.
`Requests from the second application are evaluated to
`determine if a client base cache entry corresponding to the
`interrogated request exists to provide a client base form.
`Requests from the second application are also interrogated
`to determine if a server base cache entry corresponding to
`the interrogated request exists to provide a server base form.
`The data stream corresponding to the response originated by
`the first application in response to the interrogated request
`from the second application is intercepted prior to transmis-
`sion of the response on the external communication link and
`compared to the server base form to provide difference data
`corresponding to the difference between the intercepted
`response and the server base form. The difference data is
`sent to the second computer over the external communica-
`tion link and the difference data transmitted over the external
`
`communication link sent by the first computer is acquired
`from the external communication link. The response data
`stream corresponding to the communication from the first
`application is reconstructed from the client/server specific
`data stream received over the external communication link
`
`by combining the client base form with the difference data
`received over the external communication link to create a
`
`response data stream corresponding to the intercepted
`response. The reconstructed data stream corresponding to
`the intercepted response is provided to the second applica-
`tion.
`
`4
`In a further aspect of the present invention, the second
`computer determines if the server base form is identical to
`the client base form and the server base form and the
`difference data are transmitted to the second computer over
`the external communication link if the server base form is
`not
`identical
`to the client base form. The intercepted
`response data stream corresponding to the response from the
`first application is then reconstructed by combining the
`server base form received over the external communication
`link with the difference data received over the external
`
`communication link to create a data stream corresponding to
`the intercepted response. The client base form correspond-
`ing to the interrogated request is also updated by storing the
`received server base form as the client base cache entry
`corresponding to the interrogated request.
`In a server rebasing aspect of the present invention, the
`first computer determines if the difference between the
`server base form and the intercepted response is greater than
`a predefined difference threshold. The server base form
`corresponding to the interrogated request
`is updated by
`storing the intercepted response data stream received from
`the first application as the server base cache entry corre-
`sponding to the intercepted request if the difference between
`the server base form and the intercepted response is greater
`than the predefined difference threshold. The comparison
`then utilizes the updated server base form.
`In an alternative embodiment of the present invention, a
`plurality of server base cache entries which correspond to
`the request from the second application are maintained. A
`request from the second application is interrogated to deter-
`mining if a plurality of server base cache entries exist
`corresponding to the request from the second application to
`provide a plurality of server base forms. The first computer
`determines if one of the plurality of server base forms is
`identical to the client base form and utilizes the one of the
`
`plurality of server base forms which is identical to the client
`base form if one of the plurality of server base forms is
`identical to the client base form.
`
`invention
`An additional embodiment of the present
`includes updating the server cache entry with the data stream
`from the first application in response to the request from the
`second application. Aplurality of difference data sets which
`correspond to the request from the second application and
`which represent the differences between successive server
`cache entries are maintained to provide archival difference
`data. Aplurality of CRC entries are also maintained wherein
`each of the plurality of CRC entries is associated with one
`of the plurality of difference data sets and uniquely identify
`the server base form from which the difference data set was
`
`derived. If a plurality of difference data sets and CRCs exist
`corresponding to the request from the second application
`and if one of the plurality of CRCs corresponds to a server
`base form which is identical to the client base form the
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`archival difference data corresponding to the CRC which
`corresponds to the client base form, the successive archival
`difference data sets and the difference data calculated for the
`
`60
`
`65
`
`current server base form and the response from the first
`application are sent to the second computer over the external
`communication link. The response data stream correspond-
`ing to the communication from the first application from the
`data stream received over the external communication link
`
`is reconstructed by successively combining the client base
`form with the difference data received over the external
`
`communication link to create a response data stream corre-
`sponding to the intercepted response. The client cache entry
`corresponding to the request from the second application is
`also updated with the reconstructed data stream.
`
`Petitioner Microsoft Corporation - Ex. 1011, p.23
`
`Petitioner Microsoft Corporation - Ex. 1011, p.23
`
`
`
`5,859,971
`
`5
`In alternative embodiments of the present invention, the
`first application comprises a web server and the second
`application comprises a web browser. Alternatively,
`the
`external communication link comprises a wireless commu-
`nication link. Furthermore, an alternative embodiment
`includes the request from the web browser comprising a CGI
`request.
`As will be appreciated by those of skill in this art, the
`above described aspects of the present invention may also be
`provided as an apparatus or a program product having
`computer-readable program means.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a block diagram of a typical web browser/web
`server system;
`FIG. 2 is a block diagram of a web browser/web server
`system according to one embodiment of the present inven-
`tion utilizing a client intercept and a server intercept;
`FIG. 3 is a flow diagram depicting operations carried out
`by a client-side intercept module in a preferred embodiment
`of the present invention implementing a coherent caching
`system;
`FIG. 4 is a flow diagram depicting operations carried out
`by a client-side intercept module in a preferred embodiment
`of the present invention implementing a coherent caching
`system;
`FIG. 5 is a flow diagram depicting operations carried out
`by a server-side intercept module in a preferred embodiment
`of the present invention implementing a coherent caching
`system;
`FIG. 6 is a flow diagram depicting operations carried out
`by a server-side intercept module in a preferred embodiment
`of the present invention implementing a coherent caching
`system;
`FIG. 7 is a flow diagram depicting operations carried out
`by a client-side intercept module in a preferred embodiment
`of the present invention implementing a differencing data
`transfer system;
`FIG. 8 is a flow diagram depicting operations carried out
`by a client-side intercept module in a preferred embodiment
`of the present invention implementing a differencing data
`transfer system;
`FIG. 9 is a flow diagram depicting operations carried out
`by a server-side intercept module in a preferred embodiment
`of the present invention implementing a differencing data
`transfer system;
`FIG. 10 (which is comprised of FIG. 10A and FIG. 10B
`which collectively form FIG. 10) is a flow diagram depicting
`operations carried out by a server-side intercept module in a
`preferre