This project implements a bare-bones web proxy called Roxy that passes requests and data between multiple web clients and web servers, concurrently.
- HTTP communications between client and server.
- HTTPs communications between client and server.
- Caching of popular content using at least two scheduling algorithms.
- Content filtering (filtering rules should be configurable via admin console).
Also contained in this repo is a further iteration of the ideas from Roxy where reliable data transfer (RDT) protocol used by TCP has been developed from scratch.
- RDT ACK
- RDT Timeout
- RDT Duplication Check
- Checksum Validity Check
- Sequence and acknowledgment numbers will be based on the number of bytes transferred
- Fix timeout period
All the code was run using python 3.6 but should work well with any othere version too.
Google Drive Link: https://drive.google.com/file/d/1GBK5BT3ORQcyVordl6QaHIruVZ2RP5qO/view?usp=sharing
- StackOverflow - How many characters can UTF-8 encode?
- RealPython - Python Sockets
- GitHub, sgtb3 - Reliable Data Transfer Protocol
- Python Docs - Socket Programming
- Stack Exchange, Network Engineering - Why can't a single port be used for both incoming and outgoing traffic?
- RealPython - An Intro to Threading in Python
- UTF8.com, UTF-8 and Unicode
- StackOverflow, Convert binary to ASCII and vice versa
- Docs Python, OpenSSL - Self-signed Certificates