Topic · Distributed systems
Two generals are planning an attack from opposite sides of a valley.
They can only coordinate by sending messengers across enemy territory. Any messenger might be captured. To win, both generals must attack at the same time. Neither can be sure the other got the message. Acknowledgements need acknowledgements, forever. There is no number of round-trips that makes both sides certain. This is why exactly-once delivery is impossible over an unreliable network, and why every distributed system you use settles for "at least once" plus a way to make duplicates harmless.
Adding a third messenger trip would make both generals certain that they will attack together.
False. You cannot reach mutual certainty over an unreliable channel. Real systems pick: at-most-once, at-least-once with idempotency, or human-in-the-loop reconciliation.