The Application Layer is the final interface between the user and the network and generally varies from system to system and program to program. Moreover, this layer contains a variety of protocols that are commonly required. For instance, it is apparent that there are hundreds of incompatible terminal types in the world. Consequently, consider the predicament of a full screen editor that is supposed to work over a network with a multitude of different terminal types, each with varying screen layouts, escape sequences for inserting and deleting text and so on.

One method used to resolve this difficulty is to define an abstract network virtual terminal that editors and other programs can be written to communicate with. In order to handle each terminal type, a piece of software must be written to map the functions of the network virtual terminal onto the real terminal. For example, when the editor moves the virtual terminal's cursor to a specified area, this software must issue the proper command sequence to the tangible terminal to get its cursor there as well - all the virtual terminal software is located in this layer.

Another function that is applicable to the Application Layer is that of file transfer. Different file systems have different file naming conventions, different ways of representing text lines, and so on. Obviously transferring a file between two different systems requires manipulating these and other incompatibilities. Along with this task the Application Layer is also responsible for electronic mail, directory lookup and various other general and special purpose facilities.

Services provided to application processes

This layer contains all functions which are required by communication between open systems not provided by the lower layers. Communication between application processes takes place via application entities in this layer. Below are some of the functions performed in the Application Layer