No description
Find a file
2026-10-19 13:34:44 -06:00
challenge.py hello lab 2026-10-19 13:24:25 -06:00
channel.py hello lab 2026-10-19 13:24:25 -06:00
experiments.py hello lab 2026-10-19 13:24:25 -06:00
gbn.py hello lab 2026-10-19 13:24:25 -06:00
packet.py hello lab 2026-10-19 13:24:25 -06:00
PROTOCOL.md hello lab 2026-10-19 13:24:25 -06:00
README.md correctness fixes 2026-10-19 13:34:44 -06:00
selfcheck.py hello lab 2026-10-19 13:24:25 -06:00
sr.py hello lab 2026-10-19 13:24:25 -06:00
stopwait.py hello lab 2026-10-19 13:24:25 -06:00
transfer.py hello lab 2026-10-19 13:24:25 -06:00

Project 3: reliable transport

What is what

File Role
gbn.py yours: Sender.send(); the receiver is given
sr.py yours: Sender.send() and Receiver.receive()
stopwait.py given: stop-and-wait, with the timer, cumulative ACKs and the FIN/FINACK close
packet.py given: packet format, Internet checksum, MSS 1000
channel.py given: simulated link for the offline checks
selfcheck.py given: public checks over that link
transfer.py given: file transfer over UDP
experiments.py given: loss and window sweeps, writes results.json
challenge.py given: client for the class challenge server
PROTOCOL.md given: the challenge control exchange

The grader restores every given file from a clean copy, so leave them as they are.

Run

Python 3, standard library only.

python3 selfcheck.py                 # both protocols
python3 selfcheck.py gbn             # one side
python3 experiments.py               # both sweeps
python3 experiments.py loss          # loss sweep only
python3 experiments.py window        # window sweep only
python3 challenge.py B-gbn --student your_id

A side that is still unwritten prints SKIP after about 30 seconds per check, so run one side at a time while you write code.

The experiments need ip netns and tc netem. In the course container:

docker run --rm --privileged -v "$PWD/..":/work -w /work/starter cs4220-net
python3 experiments.py

The challenge client needs the class server: run it on your own machine, or in the container without --network none. We host no local peer.

Tool references