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 1200+ tech skills courses.