When an application needs to move a large quantity of information, it may wish protection from data loss due to various types of failure. We have noted that it is the responsibility of the Transport Layer to provide reliable data flow from end to end over a network connection. Why should anything further be required? What is the purpose of a reliable transfer protocol in the Application Layer?
Even if we assume that the Transport service never fails, it delivers data to the destination machine, but cannot protect against failures that occur after the data is delivered, but before the application has completed its use of the data. For example, consider an application that copies a file from a remote system to a local floppy drive. Suppose that after the data arrives at the local machine, a disk access error occurs in writing the data to the floppy drive. The transport service has done its job, but the application's need for reliable transfer has not been met. This situation illustrates one need for the additional reliability tools available to the application through use of Session Layer services.