Due: Wednesday, December 6, 2017, 2:10 pm (start of the class)
This question can be answered by analyzing the protocols in question, however, in this assignment you are expected to study it experimentally. You will implement a system consisting of a client making a simple request to a server, the server responds with some arbitrary data, the client receives it, and measures, as precisely as possible, the time the entire transaction took, i.e., including the time it took to establish the connection, if applicable.
Experiment with four protocols: raw data over UDP, raw data over TCP, HTTP, and HTTPS. Both request and response should be no more than few tens of bytes in length, not including the protocol overhead. For all experiments, you need to write both client and server side, for the HTTP/HTTPS experiments, you are expected to write a server in
node.js. It is fine to use libraries to implement HTTP/HTTPS on the client side. HTTPS experiment requires that you generate your own self-signed (not backed by an accepted CA) certificate. Most HTTPS client libraries will require extra steps to confirm that it is fine to accept a self-signed certificate.
To facilitate your experiments, two Linux servers are set up on the CS network:
rb2.cs.unh.edu. Besides connectivity to the department network, the servers are connected via five links that carry no other traffic than the one produced by the experiments. Each of the links is configured so that traffic experiences diffrent link delays. The extra delays added to the inherent delay of a directly connected link are set as follows:
The links are configured with private IP addresses, make sure that you send your test traffic over them and not over the public interfaces
rb2.cs.unh.edu. Standard development tools are installed there. Accounts are being set up for all students in the course with the same username as you have on Agate but with a different password. Your username and password has been stored in your home directory on Agate in file cs725.info. You will also receive the password in an email. The servers do not mount your Agate filesystem.
How exactly you set up the experiments is up to you. You do not have to run the experiment on all links but the choices that you make should not be arbitrary. Your submission should include a brief justification of the experiment design decisions. Each of the experiments must be repeated sufficient number of times so that the collected results are statistically significant.
© 2017 Radim Bartos.