Hello Logout


Development of a HTTP Caching Proxy Server


Title of the project


Development of a HTTP Caching Proxy Server


Abstract of the project


A proxy acts as an intermediary agent between its clients and the servers which they want to access, performing functions directed towards a variety of purposes, like security, caching, etc, in its capacity as an intermediary. Specifically, caching HTTP Proxy Servers are intermediate servers, which maintain a cache of Internet objects like html files, image files, etc which are obtained via HTTP.




Generic Technlogy keywords


Operating Systems, Programming Languages


Specific Technology keywords


Unix, Windows, C, C++, Java


Project type keywords


Analysis, Design, Implementation, Testing


Functional components of the project


Following is a list of functionalities to be supported by the caching HTTP Proxy Server. More functionalities can be added to this list. And, in places where the description of functionality is not adequate, you can make appropriate assumptions and proceed.


  1. It should support multiple requests from different users at the same time. Concurrency issues should be handled.


  1. It should allow for caching of internet objects such as HTML, Image files etc. The proxy server accepts requests from clients and


  1. Services them from its cache, if the required objects can be found on-disk and aren’t stale (the staleness can be determined in a number of ways, e.g., by using the Expires HTTP Header, or by using configurable policies, if the header isn’t seen, etc)


  1. If the above step fails, it forwards the requests to the original server, i.e., the server that contains the original copies of the requested web-objects.


  1. It should also support both HTTP 1.0 and 1.1. Refer RFC 1954 and RFC 2616. The proxy should support for all important HTTP messages.


  1. It should have security features which will allow specific users or machines/ip to be allowed or denied access. Alternatively it should be able to block a website to be accessed as well. It should have a rule file to describe all the security rules.


Steps to start-off the project


The following steps will be helpful to start off the project.


  1. Study and be comfortable with technologies such as
    1. Windows OS or Unix/Linux OS,
    2. C/C++/Java programming language
    3. Socket Programming
    4. RFCs for HTTP 1.0 and HTTP 1.1
    5. Cache management in Proxy servers


  1. Study in detail the design of a proxy server by looking at some proxy server available in the market (for eg:  http://www.squid-cache.org/) and try to add more functionalities than listed in the previous section. 




Hardware requirements




Alternatives (If available)


PC with 2 GB hard-disk and 256 MB RAM






Software requirements




Alternatives (If available)





C/C++/Java compiler

Not Applicable


Manpower requirements


3 to 4 students can complete this in 4-6 months if they work fulltime on it.


Milestones and Timelines



Milestone Name

Milestone Description




(From Week – To Week)




Requirements/ Functional Specification

Complete specification of the system (with appropriate assumptions) including listing down the functionalities to be supported by the proxy server. A document detailing the same should be written and a presentation on that be made.


Attempt should be made to add some more relevant functionalities other than those that are listed in this document.



Technology familiarization &

Task breakup

Understanding of the technology needed to implement the project.


The presentation should be from the point of view of being able to apply it to the project, rather than from a theoretical perspective.

The requirements should be broken up into individual members of the team and they should come up with milestones in their project life-cycle and dates of completion

A excel sheet containing the break-up of the tasks and important milestones dates should be the output of this stage


High-level and Detailed  Design

The design should detail about the approach towards creating the proxy server. Incase of OOAD approach towards design, the output of this phase would be a design document containing the UML Class diagram and Sequence Diagram.


The scenarios should map to the requirement specification (ie, for each requirement that is specified, a corresponding approach or design should be there in the document).


Implementation/ Build

The actual implementation of the proxy server should be made in this phase. Unit Testing for each unit/component of the system should be done so that the functionality of each unit is verified.


During this milestone period, it would be a good idea for the team (or one person from the team) to start working on a test-plan for the entire system. This test-plan can be updated as and when new scenarios come to mind.


Integration Testing

The system should be thoroughly tested by running all the test cases written for the system (from milestone 4).


Another 2 weeks should be there to handle any issues found during testing of the system. After that, the final demo can be arranged.


Final Review

Issues found during the previous milestone are fixed and the system is ready for the final review.


During the final review of the project, it should be checked that all the requirements specified during milestone number 1 are fulfilled (or appropriate reasons given for not fulfilling the same)



Guidelines and References


  1. www.google.com
  2. www.w3.org/Protocols/rfc2616/rfc2616.html
  3. http://objectclub.esm.co.jp/Jude/ - For UML tool for Detailed Design
  4. http://argouml.tigris.org/ - Another UML tool
  5. “Unix network programming” by Richard Stevens
  6. http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html
  7. http://pont.net/socket/java/

Tags :
Your rating: None Average: 3.3 (6 votes)