Let us understand this by considering a simple communication system where we have a sender and a receiver.
A sender is the one who is providing any kind of information through a message and a receiver is the one who receives this message.
The diagram below explains the simple communication mechanism.

The immediate question which follows is about the distance of separation between the sender and the receiver. Various methods have been recognized and evolved for better communication through various mechanisms when they are separated by large distances. One such software/hardware solution is to have a shared communication channel between the sender and the receiver.
Sender puts the messages into the communication channel and receiver reads it from the channel. The diagram representing the process can be seen below.

However, in reality, the communication channels are not reliable. There is possibility that the message would get corrupted or lost over the channel. This demands an acknowledgement from the receiver that the message was received in integrity.
With above understanding, we can consider a simple system with sender and receiver with following mentioned characteristic.
Sender:
- Sender sends a message through communication channel
- Waits for the confirmation message from the receiver
- If confirmation acknowledges a correct reception, new message is sent
- If confirmation acknowledges an incorrect reception, previous message is resent
Receiver:
- Receiver receives the message
- Sends a confirmation message of correct reception if the message is error free
- Sends a confirmation message of incorrect reception if the message is corrupted