End-to-End Arguments in System Design

In order to achieve careful file transfer, the application program that performs the transfer must supply a file-transfer-specific, end-to-end reliability guarantee – in this case, a checksum to detect failures and a retry/commit plan. For the data communication system to go out of its way to be extraordinarily reliable does not reduce the burden on the application program to ensure reliability.

any attempt by the computer designer to anticipate the client’s requirements for an esoteric feature will probably miss the target slightly and the client will end up reimplementing that feature anyway.

End-to-end arguments are a kind of “Occam’s razor” when it comes to choosing the functions to be provided in a communication subsystem. Because the communication subsystem is frequently specified before applications that use the subsystem are known, the designer may be tempted to “help” the users by taking on more function than necessary. Awareness of end-to-end arguments can help to reduce such temptations.

A Note on Distributed Computing

Fallacies of Distributed Computing Explained