1.
Introduction to the Application Layer
Role of the Application Layer
o This is the topmost layer of the Internet protocol stack.
o It provides services directly to the user’s applications such as web browsers, email clients,
messaging apps, streaming platforms.
o Without this layer, the Internet would just be raw data transfer with no usable services.
Examples of Application-Layer Services:
o Social Networking (Facebook, Twitter, Instagram).
o Web Browsing (Chrome, Firefox using HTTP/HTTPS).
o E-Mail (Gmail, Outlook using SMTP, IMAP, POP3).
o Messaging (WhatsApp, Messenger).
o Streaming (YouTube, Netflix, Spotify).
o Online Gaming (Fortnite, PUBG).
o Remote Login (SSH).
o Search Engines (Google).
Key Focus Areas in Application Layer Study:
1. Principles of network applications (design models like client-server and P2P).
2. Protocols such as HTTP, SMTP, DNS.
3. Programming tools (sockets for TCP/UDP).
2. Principles of Network Applications
Creating a Network Application
To build a networked app (e.g., web browser + server):
o You only need to write code for end systems (client and server programs).
o No need to touch routers or network core devices (they just forward packets).
o This makes app development faster and widely deployable.
Client-Server Paradigm
Server:
o Always-on host with a fixed (often static) IP.
o Usually hosted in data centers for reliability and scalability.
o Examples: Web servers, email servers.
Clients:
o Devices like laptops or smartphones.
o May have dynamic IP addresses, may disconnect and reconnect.
o Initiate communication but usually don’t talk directly to each other.
Examples: HTTP (web), IMAP (mail), FTP (file transfer).
Peer-to-Peer (P2P) Paradigm
Definition: No always-on server; peers communicate directly.
How it works:
o Peers act both as clients and servers.
o Example: BitTorrent (file sharing).
Advantages:
o Scalability: New peers bring new resources as well as demands.
Challenges:
o Peers come and go (churn), IP addresses change, management is complex.
Examples: BitTorrent, early Skype, blockchain networks.
Processes and Communication
Process: A running program on a host.
Communication:
o On the same host → use OS inter-process communication.
o On different hosts → exchange messages across the network.
Roles:
o Client Process: Initiates communication.
o Server Process: Waits to be contacted.
Sockets
Definition: A socket is the interface between the application process and the network.
Analogy: Like a door — the app pushes data into the socket, and the transport layer delivers it.
Two sockets are involved: one at sender, one at receiver.
Addressing Processes
Requirement: To communicate, a process needs an identifier.
Identifiers include:
o IP Address (of host).
o Port Number (of process on that host).
Examples of port numbers:
o HTTP → 80.
o HTTPS → 443.
o SMTP (mail) → 25.
Application-Layer Protocols
Define:
1. Types of messages (request/response).
2. Message syntax (fields, order).
3. Semantics (meaning of each field).
4. Rules (when/how messages are sent).
Open Protocols: Published in RFCs (e.g., HTTP, SMTP). Anyone can use them.
Proprietary Protocols: Owned by companies (e.g., Skype, Zoom).
Transport Service Needs of Apps
Applications differ in requirements:
1. Data Integrity: File transfer needs 100% reliability; audio may tolerate some loss.
2. Timing: Real-time apps (VoIP, gaming) need low latency.
3. Throughput: Streaming video needs guaranteed minimum throughput; file transfers can adapt.
4. Security: Encryption, authentication.
Internet Transport Services
TCP: Reliable, connection-oriented, provides flow/congestion control. Used for web, email, file
transfer.
UDP: Unreliable, connectionless, lightweight. Used for streaming, gaming where speed > reliability.
3. Web and HTTP
What is HTTP?
o HyperText Transfer Protocol.
o Application-layer protocol of the web.
o Uses client-server model: browser = client, Apache/Nginx = server.
o Runs over TCP (port 80 or 443 with TLS).
HTTP Characteristics:
o Stateless: server doesn’t remember previous requests.
o Two connection types:
1. Non-Persistent: New TCP connection for each object (inefficient).
2. Persistent: Single TCP connection for multiple objects (HTTP/1.1).
Request Methods:
o GET: Retrieve object.
o POST: Send form data in request body.
o HEAD: Retrieve headers only.
o PUT: Upload/replace object.
Response Codes:
o 200 OK → success.
o 301 Moved Permanently → new location.
o 400 Bad Request → syntax error.
o 404 Not Found → page doesn’t exist.
o 505 → HTTP version unsupported.
Cookies:
o Mechanism to maintain state in stateless HTTP.
o Stored on client, sent back with each request.
o Uses: login sessions, shopping carts, tracking users.
Caching:
o Proxy caches reduce delay and bandwidth usage.
o Browser uses conditional GET to avoid downloading unchanged objects.
HTTP/2 & HTTP/3:
o HTTP/2 (2015): Multiplexing, server push, prioritization → reduced delay.
o HTTP/3: Runs over QUIC (UDP) with encryption, removes TCP head-of-line blocking.
o QUIC: A UDP-based transport protocol with built-in TLS encryption, faster handshakes,
multiplexed streams, and support for connection migration.
4. Email and Protocols (SMTP, IMAP, POP3)
Components:
1. User Agents (UA): Mail clients (Outlook, Gmail app).
2. Mail Servers: Store mailboxes and outgoing queues.
3. SMTP: Transfers mail between servers.
SMTP (Simple Mail Transfer Protocol):
o Uses TCP (port 25).
o Push protocol (sender pushes mail to receiver’s server).
o Persistent connections.
o Messages must be ASCII text.
Mail Access Protocols:
o IMAP: Keeps mail on server; supports folders, multiple devices.
o POP3: Downloads and deletes mail (simpler).
o HTTP-based: Gmail, Yahoo Mail (web interface).
Message Format:
o Defined by RFC 2822.
o Header: To, From, Subject.
o Body: Message text.
5. DNS (Domain Name System)
Purpose: Maps human-readable names (e.g., [Link]) to IP addresses.
Why not centralize? Single point of failure, too much traffic, poor scalability.
Services Provided:
o Hostname → IP address translation.
o Host aliasing (canonical names vs. easy aliases).
o Mail server aliasing.
o Load distribution (replicated servers).
Hierarchy:
o Root servers → TLD servers (.com, .edu, .org, country domains) → Authoritative servers
(organization’s servers).
o Local DNS servers: Provided by ISP, act as first point of contact.
Queries:
o Iterative: Each server refers client to another server.
o Recursive: Server does all work and returns final answer.
DNS Records:
o A: Name → IP.
o NS: Domain → authoritative server.
o CNAME: Alias → canonical name.
o MX: Mail server mapping.
Security Issues:
o DNS cache poisoning (false IPs injected).
o DDoS on root/TLD servers.
o Solution: DNSSEC (authentication, integrity).
6. Peer-to-Peer Applications
BitTorrent Example:
o File divided into chunks.
o Tracker helps peers find each other.
o Peers exchange chunks (tit-for-tat strategy).
o “Rarest first” download strategy.
o Peers may leave (selfish) or stay to seed (altruistic).
Comparison to Client-Server:
o Client-Server → server bottleneck, time grows with number of clients.
o P2P → scalable, time decreases as more peers join (since they contribute upload capacity).
7. Video Streaming & Content Distribution Networks (CDNs)
Challenges:
o High demand (YouTube/Netflix consume 80% of ISP bandwidth).
o Heterogeneity (different devices, speeds, networks).
o Continuous playback constraint → buffering needed.
DASH (Dynamic Adaptive Streaming over HTTP):
o Video split into chunks encoded at multiple bitrates.
o Client requests appropriate chunk based on bandwidth.
o Adaptive → prevents buffering during congestion.
Content Distribution Networks (CDNs):
o Store copies of videos across multiple locations.
o Reduce delay by serving users from nearby servers.
o Akamai: 240,000 servers worldwide.
o Netflix OpenConnect: Netflix places its own CDN servers at ISPs.
8. Socket Programming
Purpose: Allows applications to send/receive data over the Internet.
Two types of sockets:
o TCP sockets: Reliable, connection-oriented (used for HTTP, FTP, email).
o UDP sockets: Fast, connectionless, no guarantees (used for gaming, streaming).
Example: Writing a simple chat app using sockets.
Summary
Application layer enables Internet services like web, email, streaming.
Applications follow client-server or P2P models.
Protocols (HTTP, SMTP, DNS) define communication rules.
Different apps need different transport-layer services (TCP/UDP).
HTTP evolved from non-persistent → persistent → HTTP/2 → HTTP/3.
DNS maps names to IPs, crucial for usability.
CDNs and DASH enable scalable video streaming.
Socket programming lets developers build real network applications.