-
Notifications
You must be signed in to change notification settings - Fork 20
Lab1Milestone2
| Assigned | 3/27/2019 |
| Due | 4/3/2019 |
| Points | 100 |
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_serverandplayground.create_connectionmust cause the handshake to happen -
Once a handshake is complete, the application layer's
connection_mademust 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.
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.
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