Application Layer Protocols
We have just learned that network processes communicate with each other by sending messages into sockets. But how are these messages structures? What are the meanings of the various fields in the messages? When do the processes send the messages? These questions bring up into the realm of application-layer protocols. An application-layer protocol defines how an application’s processes, running on different end systems, pass messages to each other. In particular, an application-layer protocol defines:
- The types of messages exchanged, for example, request messages and response messages
- The syntax of the various messages types, such as the fields in the message and how the fields are delineated
- The semantics of the fields , that is, the meaning of the information in the fields
- Rules for determining when and how a process sends messages and responds to messages
Some application-layer protocols are specified in RFCs and are therefore in the public domain. For example, the web’s applications-layer protocol, HTTP (the Hyper Text Transfer Protocol), is available as an RFC. If a browser developer follows the rules of the HTTP RFC, the browser will be able to retrieve web pages from any web server that has also followed the rules of the HTTP RFC. Many other application-layer protocols are proprietary and intentionally not available in the public domain. For example, Skype uses proprietary application-layer protocols.
It is important to distinguish between network applications and application-layer protocols. An application-layer protocol is only one piece of a network application (albeit, a very important piece of the application from our point of view!). Let’s look at a couple of examples. The web is a client-server application that allows users to obtain documents from web servers on demand. The web application consists of many components, including a standard for document formats (that is, HTML), web browsers (for example Firefox and Chrome), web servers (for example, Apache and Microsoft servers), and an application-layer protocol. The web’s application-layer protocol, HTTP, defines the format and sequence of messages exchanged between browser and web server. Thus, HTTP is only one piece (albeit, an important piece) of the web application. As another example, an internet e-mail application also has many components, including mail servers that house user mailboxes; mail clients (such as Microsoft Outlook) that allow users to read and create messages; a standard for defining the structure of an e-mail message; and application-layer protocols that define how messages are passed between servers, how messages are passed between servers and mail clients, and how the contents of message headers are to be interpreted. The principal application-layer protocol for electronic mail is SMTP (Simple Mail Transfer Protocol). Thus, e-mail’s principal application-layer protocol, SMTP, is only one piece (albeit, an important piece) of the e-mail application.