4.4.1 Proxy Architecture Overview
The client side proxy that is used to analyse HTTP requests is based on Jigsaw. Jigsaw is the
W3C reference server
.
Its main purpose is to demonstrate new protocol features as they are
defined (such as HTTP/1.1), and to provide the basis for experimentations in the field of
server software [20].
Jigsaw is written in Java to take advantage of threads and garbage collection, which allows
for very dynamic and flexible server architecture. The primary reason that Jigsaw was
chosen for the client side proxy architecture is that it is highly extensible and allows what
are referred to as Frames, which control how Resources (objects exported and made
accessible to the outside world) are served using a specific protocol. It also allows what are
referred to as filters, to be attached to the Protocol Frame (such as a HTTPFrame) of a
Resource. A Filter is a full Java Object, associated to a Frame, which can modify the
Request and/or the Reply. Usually filters are called before and after serving a Resource.
One of the frames that Jigsaw provides is a ProxyFrame. The Jigsaw ProxyFrame
implements a full blown proxy module for Jigsaw so that it can be configured to run as an
HTTP proxy. It relies on the W3C s HTTP client side API to handle both request forwarding
and reply caching on the end users behalf. The client side API emulates the interactions with
the origin server that the end user's browser would normally make. The HTTPD component
of Jigsaw accepts the requests from and sends replies to the end user's browser.
Filters in Jigsaw can be classified in two types, server side and the client side filters. Server
side filters are applied to requests to the whole server if it is running as a Web server or
proxy. A client side filter applies to the use of W3C s HTTP client side API in Jigsaw.