To properly learn something, we have to start at the beginning. We will learn one concept at a time, process it, and move to the next.

The goal is to consistently learn and absorb information while feeling engaged and not overwhelmed.

I have divided the application layer articles into two parts.

  1. Introduction to Application layer
  2. Application Layer Protocols

Goal of this article

I will be giving the introduction to the application layer of the TCP/IP Five-layer network model.

The Application Layer

  • The fifth layer of the TCP/IP Five-layer protocol is the application layer.

  • The communication for a network application occurs between end systems at the application layer.

  • The application layer is present entirely on end systems.

Functions of Transport Layer

  • The application layer's primary function is to enable end-users to access the Internet via several applications.

  • The application layer writes data off the network in a format compliant with the protocol in use.

Network Application Architectures

When coding for software, we should have an architectural plan for the application. The application architecture is distinctly different from network architecture. The application architecture determines how the application is structured over different end systems. The architecture lays out how the application communicates and with what.

Client Server Architecture

  • In this architecture, a network application consists of two parts: client-side and server-side. These pieces of software are generally called processes, and they communicate with each other through messages.

  • There is an always-on host, called the server, which services requests from many other hosts, called clients.

  • Server has a fixed, well-known IP address, and a client can always contact the server by sending a packet to the server's IP address.

  • Clients do not directly communicate with each other.

  • Client processes use the Internet to consume content and use the services. Client processes almost always initiate connections to servers, while server processes wait for requests from clients.

  • In a large-scale client-server application, a single-server host cannot keep up with all the requests

from clients. Additionally, servers may crash due to any reason and might stop working. For this reason, a data center housing a large number of hosts is often used to create a powerful virtual server.

Peer to Peer Architecture

  • In a P2P architecture, there is minimal (or no) reliance on dedicated servers in data centers. Instead

the application exploits direct communication between pairs of intermittently connected hosts called peers.

  • One of the most compelling features of P2P architectures is their self-scalability.

  • P2P applications face challenges of

security, performance, and reliability due to their highly decentralized structure.

Process Communication

Processes on two different end systems communicate with each other by exchanging messages across the computer network. A sending process creates and sends messages into the network, and a receiving process receives these messages and possibly responds by sending messages back.

Sockets

Processes on different machines send messages to each other through the computer network. The interface between a process and the computer network is called a socket. Note that sockets do not have anything to do with hardware – they are software interfaces.

Processes direct their messages to sockets and don't worry about it after that, and for identifying the receiving process, two pieces of information need to be specified:

  • Messages must be addressed to a specific application on a particular end system, done via addressing constructs like IP addresses.

  • An Identifier that specifies the receiving process in the destination host. Since every end-system may have several applications running, ports are used to address the packet to specific applications.

Did you find this post helpful?

I would be grateful if you let me know by sharing it on Twitter!

Follow me @ParthS0007 for more tech and blogging content :)