Introduction

As discussed earlier, distributed systems run on commodity machines interconnected by an IP network, which is usually Ethernet. The network connecting the machines is an asynchronous packet network, which means that a sender can’t determine the status of the sent packet other than when the sender receives a confirmation response from the receiver.

For instance, a packet sent may be in any of the following states:

  • Packet is waiting in an OS queue on the sender’s machine waiting to be sent out

  • Packet is lost on its way to the recipient due to any variety of reasons such as network switches not working properly, physical cables being damaged, load-balancer failures, buggy software running on networking gear etc

  • Packet is waiting in a queue at any one of the intermediate network hops connecting the sender and the receiver

  • Packet has been received at the receiver but is waiting in an OS queue to be delivered to the receiving application

  • Packet has been received and processed by the receiver application but the response packet has been lost

Get hands-on with 1400+ tech skills courses.