0

This is kind of an abstract information theory question:

A sends a piece of information, e.g., a configuration change, to B. B responds with an ACK to tell A that the configuration change was received.

Now imagine that A never gets the response from B, for example because the network link broke. The original message or the response may have been lost. Obviously A does not now whether B got the new configuration without re-establishing the link and asking B.

Is there a message flow (possibly with more than two messages) that allows A to find out reliably whether the new configuration was received by B or discarded, given that the link breaks at some point and cannot be re-established? It would be preferred that it gets discarded except when the link remains intact.

Thomas Giesel
  • 163
  • 2
  • 7
  • You try, wait for an acknowledge, and if you don't get any then retry. Repeat a couple of times. That's basically how [the Internet Transmission Control Protocol](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) works. – Some programmer dude Nov 29 '17 at 09:42
  • @Some programmer dude: Thanks for the comment. The problem is: If no attempt gets a response, A doesn't know whether the requests or the responses got lost. And B doesn't know whether to use or to discard the original message. Imagine I'd use TCP: I could implement B to use the config only when the data was transferred AND the link gets closed gracefully. Now imagine that the last FIN/ACK gets lost permanently: B would think that the teardown worked, A would think that it didn't, because it didn't see the ACK. Again, the config arrived at B but A cannot tell if B accepted it or not. – Thomas Giesel Nov 29 '17 at 10:27

0 Answers0