Question
The RDT 2.2 protocol (c). Consider the rdt 2.2 sender and receiver below, with FSM transitions labeled in red. Also consider the sender and receiver
The RDT 2.2 protocol (c). Consider the rdt 2.2 sender and receiver below, with FSM transitions labeled in red. Also consider the sender and receiver timeline following the FSMs, where a green OK label indicates a message that is not corrupted, and a red corrupt label indicates a message that is corrupted. We are interested in the sequence number (0 or 1) of a data message, and the ACK number (0 or 1) of an ACK message for the messages sent at t= 2, 3, 4, 5 in the figure below.
Which of the following sequences of interleaved data sequence numbers and ACK numbers corresponds to those in the messages sent at t=2 (data sequence number); t=3 (ACK number), t=4 (data sequence number), and t=5 (ACK number)? Only one sequence is correct.
Note: you can generate/solve/practice many similar instances of this question here.
1, 0, 0, 1 | ||
1, 0, 1, 0 | ||
1, 1, 0, 1 | ||
0, 0, 0, 0 | ||
0, 1, 1, 0 | ||
1, 1, 1, 0 | ||
1, 0, 1, 1 | ||
1, 1, 1, 1 |
SO rdt_send(data) sndpkt-make_pkt(0, data, checksum) udt_send(sndpkt) rdt_rev(revpkt) && (corrupt (revpkt) || iSACK (revpkt,1)) (S1 udt_send(sndpkt) Wait for call o from above Wait for rdt_rev (revpkt) && not corrupt (revpkt) && ISACK(revpkt, 1) A RDT 2.2 sender rdt_rev (revpkt) && notcorrupt (revpkt) && ISACK (revpkt,0) S2 A S5 Wait for ACK 1 Wait for call 1 from above rdt_rev(revpkt) && (corrupt (revpkt) || S4 SACK( revpkt,0)) udt_send(sndpkt) S3 rdt_send(data) sndpkt-make_pkt(1, data, checksum) udt_send(sndpkt) RO rdt_rev (revpkt) && notcorrupt (revpkt) && has_seq0 (revpkt) extract (revpkt, data) deliver_data (data) sndpkt-make_pkt(ACK, 0, checksum) rdt_rev (revpkt) && udt_send(sndpkt) (corrupt (revpkt) | R1 has_seq0(revpkt)) sndpkt-make_pkt(ACK, 0, checksum) udt_send(sndpkt) Wait for RDT 2.2 Wait for O from 1 from below receiver below rdt_rev (revpkt) && (corrupt (revpkt)! has_seql(revpkt)) (R3 sndpkt-make_pkt (ACK, 1, checksum) udt_send (sndpkt) R2 rdt_rev (revpkt) && notcorrupt (revpkt) && has_seql (revpkt) extract (revpkt, data) deliver_data (data) sndpkt=make_pkt(ACK,1, checksum) udt_send(sndpkt) sender receiver t = 0 AK data OK t = 1
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started