The paper talks about a principle called “end-to-end
argument” have a major impact on system design.
Implementing functions at lower level has issues like
redundancy and for this reason they should be implemented at a higher level or
closer to the application layer using them.
The author say that functions defined at the application
level is a very good option for efficient system designing rather than the
lower layers doing it. To explain this, they have given examples like careful
file transfer, delivery guarantees, duplicate message suppression and
Before applying the end-to-end argument to a system, we
should first consider the type of application that will be using the system.
Eg. File transfer – Application has to think about the
errors caused in network, errors in buffering data or host crash.
Thus, end-to-end argument is favored.
Eg. Telephone call – Loss of packet will not have a major
impact on the conversation and the above principle will just add delay to the
Thus, end-to-end argument is not favored here.
The authors thus say that using end-to-end argument is not
always the best option. It should depend on the application using it.