Project 4: Reliable Networking and Streams

Project 4: Reliable Networking and Streams - Project 4...

Info iconThis preview shows pages 1–2. Sign up to view the full content.

View Full Document Right Arrow Icon
CS4411 Practicum in Operating Systems Project 4: Reliable Networking and Streams Important announcement Assignment 4A: Make sure have you read the slides and attempted assignment 4A before working on the project proper. Every student needs to turn in an individual copy of the assignment via CMS (i.e. this assignment is not group work ). Assignment 4A is due at 11.59pm on 25 October , which is much earlier than the project deadline. As the entire CS 4411 staff will be away for SOSP/SOCC, there will be no office hours or lecture for the week of 22-29 October. Please e-mail the staff if you have any questions pertaining to the project. Overview Your task in this project is to extend your networking package to provide reliable delivery. The previous assignment developed an unreliable networking layer, with ports as endpoints. Data sent from one host to another could be lost in the network. The applications would not know if their data made it across, or whether it got lost. Needless to say, this is not a good programming model for most applications. In practice, best-effort delivery is often an insufficient guarantee for application writers; only a few applications such as streaming video are able to adapt to lost packets at the receiver side, without requiring retransmissions. Adding the notion of connection also helps user level programming since the communication between the applications can be viewed as a stream. While it would be possible to require every application designer to write a reliable network protocol along side our UDP-like protocol, there are powerful reasons to provide a standard reliable protocol. First, it is unquestionably more convenient: writing an efficient protocol is nontrivial. Second, there is an important incentive in standardizing the one reliable transport protocol, since these protocols must incorporate mechanisms for flow control and congestion avoidance. The more protocols which are in use, the harder it is to predict how they will contribute to the overall behavior of the network. One of the reasons why TCP has been so successful is that its behavior under adverse conditions is well understood. For this project, you need to implement minisockets, a connection-based reliable communication channel abstraction which is a simplification of TCP. Your implementation will overcome restrictions that the previous project imposed on the message length. With minisockets, it should be possible to send a message of any size, instead of one limited by the network's maximum datagram size. To accomplish this, your implementation will fragment and reassemble the packets such that the receiver is provided with the illusion of a continuous stream of data. The Details
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 2
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 12/07/2011 for the course CS 4410 taught by Professor Vollset during the Spring '07 term at Cornell.

Page1 / 4

Project 4: Reliable Networking and Streams - Project 4...

This preview shows document pages 1 - 2. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online