CS455 Syllabus

### A simple (but impractical) efficient reliable communication protocol

• Reminder: reliable communication

• Reliable communication means:

• Each data frame must be delivered once

 Data frames can be received multiple times, But duplicate frames must be discarded

• Frames must be delivered to the user in the same order in which they were sent

• The simple theorectical reliable communication protocol

• Simplifying operational assumptions:

• Send sequence number in data frame has infinite length

Consequently:

 Each data frame has a unique sequence number

• Recv sequence number in ACK frame has infinite length

Consequently:

 Each ACK frame can identify a data frame uniquely.

• Sender has infinite buffer capacity

Consequently:

 A sender can (and will) retain every data frame that it has transmitted (in its buffer) When necessary (= when some data frame is lost), the sender can always able to re-transmit the data frame

• Receiver has infinite buffer capacity

Consequently:

 A receiver can (and will) retain every data frame that it has received (in its buffer) The receiver can use the unique send seq. no to remove all duplicate data frames The receiver can use the unique send seq. no to deliver the data frames in the transmission ordering

• How to achieve reliable data communication:

• How to ensure that each data frame is delivered once:

• The sender will keep sending a data frame that has not been acknowledge

 The sender is able to do so because each frame is saved in the sender's buffer So each data frame will eventually be received by the receiver

• The receiver uses the unique send sequence number to remove duplicates

Then:

 Each data frame is delivered exactly once

• How to ensure that data frame is delivered in the same order as transmitted:

Easy:

 The receiver delivers the data frame in increasing send sequence number

• Making the "theoretical" protocol practical

• Fact:

 The above protocol can ensure reliable communcation (I.e.: it works)

The only problem is that it's not practical to implement the protocol....

• It is impractical for the following reasons:

 The protocol uses infinite number of sequence numbers The protocol uses infinite amount of buffer space The sender has infinite buffer space to store transmission frames The receiver has infinite buffer space to store received frames

• We will deal with the infinite buffer space issue first....

We will deal with the infinite sequence numbers issue later.