EE122 Project #3: Peer-to-Peer File Sharing Application

Page Last Updated: November 1, 3:30 PM

Updates and Announcements

Introduction

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.

Project Structure

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 the protocol and message formats for a directory lookup service.
  • Design a reliable transport protocol on top of UDP

More Info

Design Report 20
2 11PM, Dec 10
  • Implement a peer-to-peer file sharing application.
    • The application should implement and use the reliable transport protocol designed in Phase 1.
    • The application should locate a file by querying a directory lookup service.

More Info

Working implementation 80

Team Work

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.