A A-to-C channel C-to-A channel Lo B B-to-C channel C-to-B channel C NAK from C received Resend last packet to C START: Call rdt send(data) to get first data from above Compute checksum Create packet to C with (data, checksum, A) Send packet to C Wait ACK SENDER A wwwww ACK from C Call rdt send(data) to get next data from above Compute checksum Create packet to C with (data, checksum, "A") Send packet to C

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

A protocol for interleaved deliveries from two senders.

Consider the figure below, which shows three nodes, A, B, and C. A and C are connected by a bi-directional channel; B and C are connected by a separate independent bi-directional channel. A and B can not communicate with each other.

The goal of the protocol you will design is to transfer data from A and from B in a coordinated manner to C. The protocol between sender A and receiver C (and sender B and C) operates as follows. Senders A and B each receive data from their upper layer, via a call to rdt_send(data), which returns the data to be sent, exactly the same as the rdt protocols we studied in class and in the text. Senders A and B are to reliably send their sequence of data obtained via subsequent calls from rdt_send(data) to C.

Node C should deliver to its application layer (via a call to deliver_data())a data item from A (as soon as it has correctly received that data item), followed by a data item from B (as soon as it has correctly received that data item), followed by the next data item from A, followed by the next data item from B and so on.  As in rdt,  a sender should NOT begin sending the next data item until it knows that receiver C has delivered the current data item it has been sending.

The A-to-C channel and the B-to-C channel can corrupt but will not lose/drop packets.  The C-to-A channel and the C-to-B channels are perfect; they will neither corrupt nor lose/drop packets. (Re-read these channel assumptions; they're important!)

I’ve done some of the work for you!  In particular, I’ve given the FSM for sender A (sender B has a similar FSM) below.  Sender A sends a message to C and then waits for an ACK or a NAK from C.  If an ACK is received it will then get another data item and send to C.  If a NAK is received, the last packet will be retransmitted.

Question statement:

  • 9a. Give the FSM description for the receiver C that interoperates with A and B to implement the interleaved-delivery functionality described above.  You can specify your FSM events and actions for receiver C in English, similar to how the FSM for A is specified above.  You only use those mechanisms necessary in order to implement this functionality with the given channel assumptions.
  • 9b. In addition to your FSM, give a short explanation (e.g., a paragraph long) of how your receiver works.  In particular explain how it ensure alternating delivery of messages from A and B, and passes up (via ) received data item (in the interleaved/alternating fashion) from A or B as soon as that data item has been received correctly.
A
A-to-C channel
C-to-A channel
Lo
B
B-to-C channel
C-to-B channel
C
Transcribed Image Text:A A-to-C channel C-to-A channel Lo B B-to-C channel C-to-B channel C
NAK from C received
Resend last packet to C
START:
Call rdt send(data) to get first data from above
Compute checksum
Create packet to C with (data, checksum, A)
Send packet to C
Wait
ACK
SENDER A
wwwww
ACK from C
Call rdt send(data) to get next data from above
Compute checksum
Create packet to C with (data, checksum, "A")
Send packet to C
Transcribed Image Text:NAK from C received Resend last packet to C START: Call rdt send(data) to get first data from above Compute checksum Create packet to C with (data, checksum, A) Send packet to C Wait ACK SENDER A wwwww ACK from C Call rdt send(data) to get next data from above Compute checksum Create packet to C with (data, checksum, "A") Send packet to C
AI-Generated Solution
AI-generated content may present inaccurate or offensive content that does not represent bartleby’s views.
steps

Unlock instant AI solutions

Tap the button
to generate a solution

Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education