The application layer is in the layered network model. Programs in the application layer run on different end systems, and communicate over the network (without necessarily worrying about how exactly the data is transmitted).

There are two main paradigms:

  • Client-server has two types of programs.
    • A server is an always-on host, with a permanent IP address. They’re often run on data centres, for scalability purposes in distributed systems. A server process waits to be contacted.
    • A client contacts the server. It may be intermittently connected, and may have dynamic IP addresses. They don’t communicate directly with each other. A client process initiates communications.
  • Peer-to-peer (P2P) has no always-on server. Instead, each end system communicates directly with each other. In this case, each end system acts both like a client and a server. Peers request/provide service from/to other peers.
    • This has the property of self-scalability, where new peers can bring new service capability and new service demands.
    • Peers are generally intermittently connected and change IP addresses.

An application layer protocol defines:

  • Types of messages exchanged, i.e., requests or responses.
  • Message syntax, like what fields are in the messages and how they’re separated.
  • Message semantics, i.e., what each field’s information means.
  • Rules for when and how processes send and respond to messages.

The application layer has specific requirements that define the choice of the transport layer:

  • Data integrity
  • Throughput — how many bytes per second are necessary.
  • Timing — how quickly one packet is transmitted from one host to another.
  • Security

Sub-pages