Skip to content

tuethan1999/http-proxy

Repository files navigation

The github pages does not display tables correctly. Please visit the actual github repository to see a breakdown of the files at https://github.com/tuethan1999/http-proxy

High Performance HTTP proxy

The purpose of this project was to create a robust high performance proxy with the following features:

  • HTTP caching
  • CONNECT tunneling(HTTPS)
  • Handling partial messages
  • Rate limiting via the bucket method

Modules

File Functionality
proxy.c Proxy Implementation-- all files moved into here for performance and grading
Bucket.c/h Leaky/Token Bucket algorithm to limit and regulate network
Buffer.c/h. Stores partial messages in a buffer so complete packets can be handled
CacheObject.c/h Object that is stored within the cache
cache_tests.c Tests CacheObject
HandleMessage.c/h Handles messages from clients and servers and stores partial messages in a buffer array
HttpCache.c/h Store and query and delete cache objects
RequestParser.c/h Parse a HTTP requests by taking in a buffer and storing it in struct which has values for every possible optional argument
ServerHandler.c/h Communicates with servers and keeps track of which servers we're talking to
baseline_unit_tests.c/h Unit tests for baseline functionality without Rate limiting
utarray.h dynamic array implementation
uthash.h hash table implementation

Testing

We can see that we get relatively stable performance with fixed number of clients but we have decreasing performance with more clients. This shows how rate limiting allows us to manage performance against greedy clients but is still susceptible to a denial of service style attack

Performance with fixed requests per client and variable numbr of clients

performance with fixed clients

Performance with fixed clients and variable number of requests per client

performance with fixed clients

About

Tufts Comp112 Final project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published