CS544 Computer Networks Assignment: Network Protocol Implementation - Prof. Michael T. Kai, Study Guides, Projects, Research of Computer Systems Networking and Telecommunications

The final group assignment for cs544 computer networks course during winter 2008-2009. Students are required to implement their own network protocol, both a concurrent server and a client, ensuring statefulness. The assignment aims to complete the design process by implementing and validating the protocol. Preferred languages are c/c++ or java, and linux/solaris machines are preferred for implementation. Students will be graded on the correctness and robustness of their implementation.

Typology: Study Guides, Projects, Research

Pre 2010

Uploaded on 08/19/2009

koofers-user-2uv
koofers-user-2uv 🇺🇸

10 documents

1 / 2

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CS544 -- Computer Networks
Winter 2008-2009
Professor Mike Kain
Network Protocol Implementation
Due Date: Wednesday, March 11th, 2009 at 11:59pm
Your final group assignment is to implement your protocol (probably a session layer) by writing
a concurrent server (one that handles multiple clients simultaneously) and a client that use your
stateful protocol. The goal of this assignment is to complete the process of designing a network
protocol, by implementing it, and showing that there is feedback in the design process through
implementation. Depending on your protocol, it may be peer-to-peer or client/server.
Both the client and server can be written in (almost) any language, but C/C++ or JAVA is
preferred. If other than those, please get our agreement before starting. We prefer that you
implement this on the department’s machines (Linux/Solaris), but you can implement on other
platforms as long as we can get to them to execute them ONLINE.
Requirements:
Both the client and server must implement and check & validate the statefulness of your
protocol. THIS IS IMPORTANT
The server must be able to handle multiple clients (either using a process/thread model or
select) – both can be found in any programming text or see myself or KP.
The server must bind to a hardcoded port number (you pick this value) and the client defaults
to that port number.
The client must be able to specify the hostname or IP address of the server (be able to specify
either).
The user interface of the client isn’t too important here – a command line UI is acceptable.
NOTE: Porting of the code for the socket algorithm(s) (the shell of the client and server) is
acceptable – but every procedure MUST be accompanied by a reference in the header of where
you took the routine (like a term paper). You MUST write your protocol implementation from
scratch.
NOTE: You’ll be graded on the implementation of your protocol and how correct and robust the
implementation has become.
Turn in (zipped together as groupxx.zip):
An updated complete proposal document (including any changes or updates we suggested
and a section describing any differences since the original submission). The implementation
must agree with the protocol design. Also include any performance implications that you
find during your coding and testing.
All (well-commented) source code. Refer to the coding standards on the course web page.
My basic rule is that all code should be commented in a way that others can pick up the code
and instantly understand it – write comments the way you would want to see them if you
picked up code and had to learn it.
pf2

Partial preview of the text

Download CS544 Computer Networks Assignment: Network Protocol Implementation - Prof. Michael T. Kai and more Study Guides, Projects, Research Computer Systems Networking and Telecommunications in PDF only on Docsity!

CS544 -- Computer Networks

Winter 2008-

Professor Mike Kain

Network Protocol Implementation

Due Date: Wednesday, March 11

th, 2009 at 11:59pm

Your final group assignment is to implement your protocol (probably a session layer) by writing a concurrent server (one that handles multiple clients simultaneously) and a client that use your stateful protocol. The goal of this assignment is to complete the process of designing a network protocol, by implementing it, and showing that there is feedback in the design process through implementation. Depending on your protocol, it may be peer-to-peer or client/server.

Both the client and server can be written in (almost) any language, but C/C++ or JAVA is preferred. If other than those, please get our agreement before starting. We prefer that you implement this on the department’s machines (Linux/Solaris), but you can implement on other platforms as long as we can get to them to execute them ONLINE.

Requirements: − Both the client and server must implement and check & validate the statefulness of your protocol. THIS IS IMPORTANT − The server must be able to handle multiple clients (either using a process/thread model or select) – both can be found in any programming text or see myself or KP. − The server must bind to a hardcoded port number (you pick this value) and the client defaults to that port number. − The client must be able to specify the hostname or IP address of the server (be able to specify either). − The user interface of the client isn’t too important here – a command line UI is acceptable.

NOTE: Porting of the code for the socket algorithm(s) (the shell of the client and server) is acceptable – but every procedure MUST be accompanied by a reference in the header of where you took the routine (like a term paper). You MUST write your protocol implementation from scratch. NOTE: You’ll be graded on the implementation of your protocol and how correct and robust the implementation has become.

Turn in (zipped together as groupxx.zip):

  • An updated complete proposal document (including any changes or updates we suggested and a section describing any differences since the original submission). The implementation must agree with the protocol design. Also include any performance implications that you find during your coding and testing.
  • All (well-commented) source code. Refer to the coding standards on the course web page. My basic rule is that all code should be commented in a way that others can pick up the code and instantly understand it – write comments the way you would want to see them if you picked up code and had to learn it.
  • A sample run from the client's point of view.
  • Full pathnames to the executables. Your server should not be running when turned in. We will verify your programs on-line! If you develop your assignment on another machine than the main CS department machines, include the method to attach to those machines, any usercodes and passwords to logon and thereby test the assignment on-line.

EXTRA CREDIT:

Have the client program dynamically find the server (e.g. just execute client with no parameters and the program finds the server listening on that port anywhere in the network). This is all I'll say about the extra credit -- the research is up to you. It is worth up to 10 extra points, depending on how creative you get (the more you use networking, the more points you get). Be sure to mention under what circumstances your approach will or will not work.

If you have any questions, please contact KP or myself. We will have office hours as often as possible to answer questions, and be available via e-mail and WebCT/BBVista, as well as before and after class.