confundo python project -- 2

Job ID: 36366019

Budget: $250 – $750 USD

In this project you will need to implement Confundo, a basic version of reliable data transfer protocol, including basics of connection establishment and congestion control. You will implement Confundo protocol in context of server and client applications, where client transmits a file as soon as the connection is established (same as in project 1).

All implementations should be written in Python BSD sockets. No high-level network-layer abstractions are allowed in this project. You are allowed to use some high-level abstractions for parts that are not directly related to networking, such as string parsing.

For simplicity, we will NOT use any multi threading or parallelism in project 2. Just a single connection at a time.

The objective of this project is to deepen your understanding on how TCP protocol works and specifically how sequence number operate, how retransmissions happen, and specifics of congestion control advancement.

The project includes implementation of a new Confundo Socket, which is API compatible with regular TCP socket, but implements everything on top of UDP protocol, according to the defined specification. There is a lot of implementation in the skeleton code, and the minimal base implementation can be done by just meaningfully updating the marked pieces in confundo/socket.py code. You do not have to follow the exact logic there and are free to completely rewrite the code.

You should be able to use the new Confundo.Socket in your project 1 implementation, just make sure you don’t use multi threading as things will potentially “explode”.

The skeleton does not implement anything regarding congestion control, which is your responsibility to implement.

Also, the skeleton has a very simplistic implementation of the sending logic (stop and go, sending a single segment and waiting for the ACK). To get max credit for the project, you would need to improve this logic.

Note that it is your responsibility to update/set any constants (e.g., in confundo/common.py) according to the written specification.

REST OF INSTRUCTIONS WILL BE SENT THROUGH DM

IM ATTACHING ALL TESTS THIS CODE HAS TO PASS
AND DEBUG RESULT OF A BAD CODE
Related categories: C Programming Python Linux Software Architecture BSD