Skip to content

Lab1Milestone2

sethnielson edited this page Mar 30, 2019 · 1 revision

Lab 1 Milestone 2: Ideal Conditions

Assigned 3/27/2019
Due 4/3/2019
Points 100

Overview

The class PETF has chosen the PIMP PRFC as the draft for PRFC 2 (reliable). You should already have handshakes working from the previous milestone. In this assignment you will get transmissions working under 0-error conditions.

The transmission protocol is not described here. Please refer to the PRFC. However, you need to get data transmission AND session termination working correctly. In other words, a client and server should be able to open a connection, transmit data, and close the connection.

The Asyncio Protocol API should control all of these elements:

  • Creating a client and server using playground.create_server and playground.create_connection must cause the handshake to happen

  • Once a handshake is complete, the application layer's connection_made must be called

  • The application layer of either client or server must be able to send data through your protocol using transport.write

  • The application layer of either client or server must be able to end a session using transport.close

  • Once the application layer can no longer send data (as specified by the PRFC), your layer must call the application layer's connection_lost

You can test your layer using application layer protocols such as echotest. But you should also learn how to write unit tests with mock transports. See the playground network testing quickstart for more details.

Using the PRFC

YOU MUST USE THE PRFC FOR YOUR STANDARD

If you find an error, a mistake, or any other problem with the PRFC that would prevent you from completing the assignment, alert the PETF and include a proposed fix to the document. Assuming that the error is real (i.e., you didn't miss something) and your fix solves the problem, they will update the PRFC with your edits.

Grading

You do not need to make a separate submission. Please update the github with the module you previously submitted for the first milestone.

Grading for this lab is as follows:

  • 50 points for correctly using sequence numbers and ack numbers and appropriate flags in data transmissions
  • 25 points for correctly dividing data up into maximum size chunks in data transmissions
  • 10 points for correct termination handling for simultaneous shutdown (both sides terminate at approximately the same time)
  • 10 points for one side initiating the termination
  • 5 points for correct flags in termination

Clone this wiki locally