Skip to content
Published on

[Computer Networking] 05. Application Layer: HTTP and the Web

Authors

This post is based on the textbook Computer Networking: A Top-Down Approach (6th Edition) by James Kurose and Keith Ross.


1. Network Application Architectures

1.1 Client-Server Architecture

Always-on server (fixed IP)
       ^v
+------+------+
| Client 1    |
| Client 2    |  (intermittent connection, dynamic IP possible)
| Client 3    |
+-------------+

Characteristics:

  • Server is always running with a fixed IP address
  • Clients do not communicate directly with each other
  • Data centers are used for scaling

1.2 P2P Architecture

Peer1 <-----> Peer2
  ^v            ^v
Peer3 <-----> Peer4

Every peer is both a client and a server

Characteristics:

  • No (or minimal) always-on server
  • Self-scalability: Service capacity grows as more peers join
  • Examples: BitTorrent, Skype, Bitcoin

1.3 Process Communication

Network applications consist of communication between processes running on different end systems.

  • Client process: The process that initiates communication
  • Server process: The process that waits for incoming connections
  • Processes access the network through sockets
+--------------+                    +--------------+
| Application  |                    | Application  |
|  Process     |                    |  Process     |
|      |       |                    |      |       |
|  Socket(door)|                    |  Socket(door)|
+------+-------+                    +------+-------+
| Transport    |                    | Transport    |
|      |       |  <-- Internet -->  |      |       |
|   ...        |                    |   ...        |
+--------------+                    +--------------+
  Client                             Server

2. HTTP Overview

2.1 What Is HTTP

HTTP (HyperText Transfer Protocol) is the Web's application-layer protocol.

  • Follows the client-server model
  • Client: Web browser (requests and displays web objects)
  • Server: Web server (responds with objects)

2.2 Web Pages and Objects

Web page structure:
  +-- Base HTML file
  +-- JPEG image (referenced object)
  +-- JavaScript file
  +-- CSS stylesheet
  +-- Video file

Each object is identified by a single URL.

URL structure:

http://www.example.com/path/page.html
 --+--  ------+------  -----+-------
Protocol   Host name      Path name

2.3 Characteristics of HTTP

  • Uses TCP: Ensures reliable delivery
  • Stateless protocol: The server does not retain information about previous client requests
HTTP communication process:
  1. Client initiates TCP connection to server port 80 (or 443)
  2. TCP connection established (3-way handshake)
  3. HTTP messages exchanged
  4. TCP connection closed

3. Non-Persistent vs Persistent Connections

3.1 Non-Persistent HTTP

Each request/response pair is sent over a separate TCP connection.

Requesting a page with base HTML + 10 images:

1. TCP setup -> base HTML request/response -> TCP close
2. TCP setup -> image 1 request/response -> TCP close
3. TCP setup -> image 2 request/response -> TCP close
...
11. TCP setup -> image 10 request/response -> TCP close

-> 11 TCP connections required!

Response Time Analysis

RTT (Round-Trip Time): The time for a packet to travel from client
                        to server and back

Time for one object request:

  Client           Server
     |-- SYN -------->|
     |<- SYN+ACK ----|   <- 1 RTT (TCP connection setup)
     |-- GET -------->|
     |<- File transfer|   <- 1 RTT + file transfer time
     |                |

  Total time = 2 RTT + file transfer time

3.2 Persistent HTTP

The server keeps the TCP connection open after sending a response.

Persistent connection:

1. TCP connection setup                  <- 1 RTT
2. Base HTML request/response            <- 1 RTT
3. Image 1 request/response (same conn)  <- 1 RTT
4. Image 2 request/response (same conn)  <- 1 RTT
...

-> TCP connection is reused, reducing overhead

Pipelining

A technique where requests are sent consecutively without waiting for responses on a persistent connection.

Without pipelining:          With pipelining:
  Request 1 -->              Request 1 -->
  <-- Response 1             Request 2 -->
  Request 2 -->              Request 3 -->
  <-- Response 2             <-- Response 1
  Request 3 -->              <-- Response 2
  <-- Response 3             <-- Response 3

  Total: 3 RTTs              Total: approx. 1 RTT

In HTTP/1.1, persistent connections are the default.


4. HTTP Message Format

4.1 HTTP Request Message

GET /somedir/page.html HTTP/1.1
Host: www.example.com
Connection: close
User-Agent: Mozilla/5.0
Accept-Language: ko-KR

Request Message Structure

+----------------------------------------+
| Request line                           |
|   Method SP URL SP Version CR LF       |
+----------------------------------------+
| Header lines                           |
|   Header-field: value CR LF            |
|   Header-field: value CR LF            |
|   ...                                  |
|   CR LF (blank line = end of headers)  |
+----------------------------------------+
| Entity body                            |
|   Used with POST method                |
+----------------------------------------+

Main HTTP Methods

MethodPurposeHas Body
GETRequest an objectNo
POSTSubmit form dataYes
HEADSame as GET but returns headers onlyNo
PUTUpload an object to a specific URLYes
DELETEDelete an object at a specific URLNo

4.2 HTTP Response Message

HTTP/1.1 200 OK
Connection: close
Date: Thu, 19 Mar 2026 12:00:00 GMT
Server: Apache/2.4
Content-Length: 6821
Content-Type: text/html

(data...)

Major Status Codes

CodeMeaningDescription
200OKRequest succeeded
301Moved PermanentlyObject permanently moved
304Not ModifiedCached version can be used
400Bad RequestRequest format error
404Not FoundRequested object not found
505HTTP Version Not SupportedUnsupported HTTP version

5. Cookies

HTTP is a stateless protocol, but websites need to identify users. Cookies are used for this purpose.

5.1 Four Components of Cookies

1. Set-Cookie header in HTTP response messages
2. Cookie header in HTTP request messages
3. Cookie file stored on the client (browser)
4. Back-end database on the website

5.2 How Cookies Work

First visit:
  Client                    Server
     |-- GET /index.html -->|
     |                       | Generate cookie ID 1678
     |<-- Set-Cookie: 1678 --|
     |                       | Store record for 1678 in DB
     |  Browser saves cookie |

Return visit:
     |-- GET /cart           |
     |   Cookie: 1678 --->   |
     |                       | Look up 1678 in DB
     |<-- Personalized resp -|

6. Web Caching

6.1 Proxy Server

A web cache (or proxy server) is a network entity that responds to HTTP requests on behalf of the origin server.

Client --> Proxy server --> Origin server
                |
           Cache storage

6.2 How It Works

1. Client sends request to proxy server
2. Does the proxy have the object in cache?
   +-- YES -> Return cached object to client
   +-- NO  -> Request from origin server -> Cache response -> Return to client

6.3 Benefits of Web Caching

Example: Institution network -> Internet access link (15 Mbps) -> Internet

Request rate: 15 requests/sec, average object size: 1 Mbit
Total request traffic: 15 Mbps

Access link utilization = 15/15 = 100% -> Queuing delay explodes!

Solution 1: Upgrade access link (100 Mbps) -> High cost
Solution 2: Install web cache (assuming 40% hit rate)
  -> Access link traffic = 15 * 0.6 = 9 Mbps
  -> Utilization = 9/15 = 60% -> Delay reduced!
SolutionAccess Link UtilizationCost
Link upgrade (100 Mbps)15%Very high
Web cache (40% hit rate)60%Low

7. Conditional GET

A mechanism to verify whether a cached object is up to date.

7.1 How It Works

Initial request:
  Proxy -- GET /fruit.gif -----------> Server
  Proxy <-- 200 OK                --  Server
              Last-Modified: Wed, 9 Mar 2026

Cache validation (Conditional GET):
  Proxy -- GET /fruit.gif -----------> Server
             If-Modified-Since:
             Wed, 9 Mar 2026

  Case 1: Not modified
  Proxy <-- 304 Not Modified --------- Server
              (No object body! Bandwidth saved)

  Case 2: Modified
  Proxy <-- 200 OK ------------------- Server
              (New object body included)

A 304 response contains no object body, thus saving bandwidth.


8. HTTP Version Evolution

HTTP/1.0 (1996):
  - Non-persistent connections
  - GET, POST, HEAD

HTTP/1.1 (1997):
  - Persistent connections (default)
  - Pipelining
  - Host header required
  - PUT, DELETE added

HTTP/2 (2015):
  - Binary framing
  - Multiplexing (parallel requests/responses over a single connection)
  - Header compression
  - Server push

HTTP/3 (2022):
  - Based on QUIC protocol (UDP)
  - Solves HOL blocking
  - Faster connection setup

9. Summary

HTTP Key Summary:
  +-- TCP-based, stateless protocol
  +-- Request-response model
  +-- Non-persistent/persistent connections (persistent is default since HTTP/1.1)
  +-- State management via cookies
  +-- Web cache (proxy) reduces delay and saves bandwidth
  +-- Conditional GET validates cache freshness

10. Review Questions

Q1. How many TCP connections are needed to request a web page containing 10 objects using non-persistent HTTP?

11. One for the base HTML file + 10 for the referenced objects = 11 TCP connections total. Each TCP connection requires 2 RTTs (1 RTT for connection setup + 1 RTT for request/response), so 22 RTTs are needed in total.

Q2. How does HTTP identify users despite being a stateless protocol?

By using cookies. The server sends a unique identifier via a Set-Cookie header, the browser stores it and includes it in subsequent requests via the Cookie header. The server uses this cookie value to look up user information in its back-end database.

Q3. What is the purpose of a Conditional GET?

It is used to verify whether a cached object is up to date. By including an If-Modified-Since header in the request, the server responds with 304 Not Modified without the object body if the object has not changed. This reduces unnecessary data transfer and saves bandwidth.