In this section, you should create a program that emulates a GBN node. Two GBN nodes will be running to send packets to each other through the UDP protocol. For emulation purpose, the receiver will deliberately discard data packets (as if the packets are lost and not received) and the sender will deliberately discard ACKs before actually handling them. There are two ways to control the drop of the packets - deterministic and probabilistic. The deterministic way is to drop every nth packet, and the probabilistic way is to drop packets randomly with certain probability p. Which method will be used and the value of n or p will be passed in when starting the program.
The GBN node should be started with any of the following commands:
C $ ./gbnnode [ -d j -p ]
Java $ java gbnnode [ -d j -p ]
Python $ python gbnnode.py [ -d j -p ]
The user should only specify either -d or -p. The square bracket and the vertical line means to choose between the two options.
-d means the GBN node will drop packets (data or ACK) in a deterministic way (for every n packets), and -p