Developers often use TCP connections to realize reliable point-to-point communication in distributed systems. A common issue in such systems' design is whether a middleware or an application can rely solely on TCP or if a higher-level reliable mechanism should be implemented above it. A related question is whether developers can use the breakage of TCP for failure detection. The famous end-to-end argument answers the first question. Yet common wisdom suggests that TCP breakage always results from the failure of a process or machine on either end of the connection or from a severe networking problem. Consequently, some designers might be tempted to avoid implementing a higher-level reliable delivery mechanism when designing systems for LAN environments. Others might rely on TCP breakage as a definite indication of a failure or a network partition. Here, we highlight the dangers of relying solely on TCP for reliability without any additional message- recovery mechanism at the application level (or at least inside a middleware in the same address space as the application). Also, TCP breakage can occur in a perfectly functioning LAN, so it can't be relied on for failure detection either.
No takes yet. Share an insight, caveat, or question.
Drabkin et al. (2008) studied this question.
Synapse has enriched 5 related papers. Consider them for comparative context: