Request 1 (for index.html):
SYN_STREAM 1, stream-group (G)=0
Header-block:
Store(0x1): level(C),index(0),k: ":method"
Store(0x1): level(C),index(0),v: "GET"
Store(0x1): level(C),index(1),k: ":version"
Store(0x1): level(C),index(1),v: "HTTP/1.1"
Store(0x1): level(C),index(2),k: "user-agent"
Store(0x1): level(C),index(2),v: "blah blah browser version blah blah"
Store(0x1): level(C),index(3),k: "accept-encoding"
Store(0x1): level(C),index(3),v: "sdch, bzip, compress"
Store(0x1): level(G),index(0),k: ":host"
Store(0x1): level(G),index(1),k: "cookie"
Store(0x1): level(G),index(1),v: "SOMELONGSTRINGTHATISMOSTLYOPAQUE;BLAJHBLA"
Store(0x1): level(G),index(2),k: ":path"
Store(0x1): level(G),index(2),v: "/index.html"
Store(0x1): level(G),index(3),k: "date"
Store(0x1): level(G),index(3),v: "Wed Jul 18 11:50:43 2012"
At this point the connection headers table looks like this:
0: ":method", "GET"
1: ":version", "HTTP/1.1"
2: "user-agent", "blah blah browser version blah blah"
3: "accept-encoding", "sdch, bzip, compress"
The stream-group table for group zero looks like this:
1: "cookie", "SOMELONGSTRINGHTATISMOSTLYOPAQUE;BLAJHBLA"
2: ":path", "/index.html"
3: "date", "Wed Jul 18 11:50:43 2012"
Request 1 (on stream 1) would look like the following if forwarded on HTTP/1.1:
GET /index.html HTTP/1.1
date: Wed Jul 18 11:50:43 2012
cookie: SOMELONGSTRINGTHATISMOSTLYOPAQUE;BLAJHBLA
user-agent: blah blah browser version blah blah
accept-encoding: sdch, bzip, compress
Request 2 (for index.js):
SYN_STREAM 3, stream-group (G)=0
Header-block:
Store(0x1): level(G),index(2),v: "/index.js"
Store(0x1): level(G),index(3),v: "Wed Jul 18 11:50:44 2012"
At this point the connection headers table is unchanged:
0: ":method", "GET"
1: ":version", "HTTP/1.1"
2: "user-agent", "blah blah browser version blah blah"
3: "accept-encoding", "sdch, bzip, compress"
The stream-group table for group zero looks like this:
1: "cookie", "SOMELONGSTRINGHTATISMOSTLYOPAQUE;BLAJHBLA"
2: ":path", "/index.js"
3: "date", "Wed Jul 18 11:50:44 2012"
Both the path and the date have changed.
Request 2 (on stream 3) would look like the following if forwarded on HTTP/1.1:
GET /index.js HTTP/1.1
date: Wed Jul 18 11:50:44 2012
cookie: SOMELONGSTRINGTHATISMOSTLYOPAQUE;BLAJHBLA
user-agent: blah blah browser version blah blah
accept-encoding: sdch, bzip, compress
Request 3 (for index.css):
SYN_STREAM 5, stream-group (G)=0
Header-block:
Store(0x1): level(G),index(2),v: "/index.css"
Store(0x1): level(G),index(3),v: "Wed Jul 18 11:50:44 PDT 2012"
Connection level-headers are implied.
Stream-group level headers are implied.
For this example, using TaCo (truncate and concatenate) wasn't useful.
If the user, however, changes the cookie on the next request...
Request 3 (for somepage.html):
SYN_STREAM 5, stream-group (G)=0
Header-block:
Store(0x1): level(G),index(2),v: "/somepage.html"
TaCo(0x1): level(G),index(1),v,TruncTo(40),"FOOBLA"
At this point the connection headers table remains unchanged.
0: ":method", "GET"
1: ":version", "HTTP/1.1"
2: "user-agent", "blah blah browser version blah blah"
3: "accept-encoding", "sdch, bzip, compress"
The stream-group table for group zero looks like this:
1: "cookie", "SOMELONGSTRINGHTATISMOSTLYOPAQUE;FOOBLA"
2: ":path", "/somepate.html"
Both the path and the date have changed.
Request 3 (on stream 5) would look like the following if forwarded on HTTP/1.1:
GET /somepage.html HTTP/1.1
date: Wed Jul 18 11:50:44 2012
cookie: SOMELONGSTRINGTHATISMOSTLYOPAQUE;FOOBLA
user-agent: blah blah browser version blah blah
accept-encoding: sdch, bzip, compress