HTTP Web Proxy
This proxy contains operations that deal with connecting to servers, servicing requests, and caching them if needed. A proxy is an intermediary to a client and a server. A client sends a server request to a proxy, the proxy parses and formats the request properly in the form of a header, and sends the request to the server. When the server sends a response back to the proxy, the proxy sends the data back to the client, and attempts to cache it if it is of the appropriate size. A proxy is useful in the real word for reasons such as caching files (as described) for multiple users at a time, increasing bandwidth and performance. This also makes use of threading to handle concurrent requests.
The cache used in our proxy is not like a traditional cache, and acts more like a key-value storage system. The key being the URL, and the value being the text or bytes received from the server. The cache used is an array cache, which blocks are stored in an array and can be accessed by indexing into an array. Alternative methods include the usage of a linked list structure.
Please contact me in the case that you would like to see the full implementation and please do not share this private page. This is due to CMU’s academic integrity policy.
Language and Tools:
Written in C, GDB, HTTP, Curl, Netcat