In Project 1, you wrote a client which sends data to a server that simply echoes it back. The goal of the project was to learn socket programming and to get introduced to the client-server networking paradigm. In project 2, you implemented a web crawler that interacts with a real-world text based protocol. In both project 1 and project 2, you did not have to design your own protocol or message format.
In this project, you will apply the networking principles you learnt in the course to design your own protocol and message formats for a directory lookup service. You will also deepen your understanding of reliable transport and congestion control by implementing your own transport protocol using UDP. You will then use the directory lookup service and the reliable transport protocol you implemented to create a peer-to-peer file sharing application.
This project consists of the following 2 phases:
Phase | Due | Overview of Tasks | Deliverable | % of Project 3 Grade |
---|---|---|---|---|
1 | 11PM, Nov 16 (No slip dates) |
|
Design Report | 20 |
2 | 11PM, Dec 10 |
|
Working implementation | 80 |
You can work in teams of 2 for this project. You are free to choose your own partner. You may also work on your own; however there will be no extra credit or additional time granted for working alone. Since this project involves a significant amount of design and implementation, it is likely best if you work with a partner.