4.3.24 · HinglishComputer Networks

HTTP - 1.1 — methods, status codes, headers, persistent connections

2,046 words9 min readRead in English

4.3.24 · Coding › Computer Networks


HTTP exist kyun karta hai, aur 1.1 kyun?

KYA problem hai: Browsers aur servers ko ek common language chahiye web resources (HTML, images, JSON) maangne aur deliver karne ke liye. Ek agreed format ke bina, har site alag tarah se baat karti.

1.1 kyun 1.0 se behtar hai: HTTP/1.0 mein, har request ne ek naya TCP connection khola, ek exchange kiya, phir band ho gaya. 30 images wala ek page = 30 TCP handshakes (har ek mein ek full round-trip + slow-start ka cost). Yeh brutally slow hai. HTTP/1.1 isko fix karta hai persistent connections aur pipelining se, saath hi mandatory Host header se (taaki ek IP kaafi saari sites serve kar sake = virtual hosting).


HOW: ek request/response ka shape (format derive karo)

Hum message format ko requirements se DERIVE karte hain, yaad nahi karte.

  1. Humein ek action verb + target + version chahiye → yeh hai start line.
  2. Humein metadata chahiye (length, type, cookies…) → header lines Name: Value.
  3. Humein ek separator chahiye taaki parser ko pata chale ki headers khatam hue → ek blank line (CRLF CRLF).
  4. Optional mein ek payload → body.
Figure — HTTP - 1.1 — methods, status codes, headers, persistent connections

Methods (the verbs)


Status codes (jawab)

Pehla digit class batata hai — yahi 80/20 hai jo tumhe pakka yaad karna hai:

Class Meaning Examples
1xx Informational 100 Continue
2xx Success 200 OK, 201 Created, 204 No Content
3xx Redirection 301 Moved Permanently, 304 Not Modified
4xx Client error 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5xx Server error 500 Internal Server Error, 503 Service Unavailable

Key headers


Persistent connections — core upgrade

WHY framing matters: Agar socket kabhi band nahi hota, "body woh sab hai jo EOF se pehle aata hai" ab kaam nahi karta. Isliye har response ko apni length Content-Length ke zariye ZAROOR declare karni chahiye ya Transfer-Encoding: chunked use karna chahiye. Iske bina, client ko nahi pata ki ek response kahan khatam hota hai aur agla kahan shuru hota hai.

Pipelining (agla request bhejna pehle reply aane se pehle) isko aur kam karta hai ki taraf, lekin head-of-line blocking ka shikar hota hai (pehli slow response ke wajah se peeche ki saari responses ruk jaati hain usi connection par) — yahi exactly woh flaw hai jo HTTP/2 multiplexing baad mein solve karta hai.

Recall Forecast-then-Verify

Formula padhne se pehle: andaza lagao — kya connection khula rakhna zyada time bachata hai jab RTT bada ho ya chhota? Verify karo: saving RTT, toh yeh RTT ke saath scale karta hai — high-latency links (mobile, satellite) par zyada. Tumhara intuition ki "slow networks sabse zyada faayda uthate hain" bilkul sahi hai.


Common mistakes (Steel-man + fix)


Flashcards

HTTP/1.1 ne kya cheez default bana di jo HTTP/1.0 ne nahi ki?
Persistent (keep-alive) TCP connections — ek socket ko kaafi saari requests ke liye reuse karo.
HTTP/1.1 mein kaun sa header mandatory ho gaya aur kyun?
Host: — virtual hosting support karne ke liye (ek IP par kaafi saare domains).
Status code ka pehla digit tumhe kya batata hai?
Class: 1xx info, 2xx success, 3xx redirect, 4xx client error, 5xx server error.
Safe aur idempotent mein kya farq hai?
Safe = koi server state change nahi; idempotent = N calls = 1 call jaisa same final state.
Kya POST idempotent hai?
Nahi — ise repeat karne se duplicate resources ban sakte hain.
Ek persistent connection ko Content-Length ya chunked encoding kyun CHAHIYE?
Socket kabhi band nahi hota, isliye client EOF use karke yeh nahi jan sakta ki body kahan khatam hoti hai.
HTTP/1.1 pipelining mein head-of-line blocking kya hai?
Ek slow pehli response usi connection par peeche ki saari queued responses ko rok deti hai.
404 vs 500 — kaun galat hai?
404 = client (resource nahi mila); 500 = server (internal error).
HTTP/1.1 mein persistence se OPT OUT kaise karte ho?
Connection: close bhejo.
HTTP message mein header section kahan khatam hota hai?
Ek blank line (CRLF CRLF) se.
R resources fetch karne mein 1.0 vs 1.1 mein roughly kitne RTTs lagte hain (toy model)?
1.0 ≈ 2R·RTT; 1.1 ≈ (R+1)·RTT.

Recall Feynman: 12-saal ke bachche ko explain karo

Socho tum kisi counter par khaana order kar rahe ho. Tum apna order chillate ho (method + kya chahiye), cook ek number chillata hai jiska matlab hai "ho gaya!", "yeh nahi hai!", ya "maine kitchen jala diya!" (status code). Purana HTTP/1.0 tumhe har ek item ke liye counter tak poora jaana padta tha — bahut thakane wala. HTTP/1.1 kehta hai: counter par hi raho aur order karte raho (persistent connection). Lekin ab cook ko batana padega "yeh dish 13 chamach bhari hai" (Content-Length) taaki tumhe pata chale ki ek dish kahan khatam hoti hai aur agli kahan shuru hoti hai, kyunki tum line kabhi nahi chhodte.

Connections

  • TCP three-way handshake — woh cost jo persistent connections amortize karte hain.
  • TCP slow start — kyun ek warmed-up connection reuse karna faster hai.
  • HTTP-2 multiplexing — 1.1 pipelining ka head-of-line blocking fix karta hai.
  • TLS handshake — aur bhi zyada RTTs add karta hai, isliye HTTPS ke liye persistence aur important hai.
  • DNS resolution — pehle HTTP request se pehle hota hai.
  • Caching, ETag and conditional GET — 304 Not Modified use karta hai.
  • Virtual hosting — mandatory Host header se enable hota hai.

Concept Map

runs on top of

upgrades

new TCP per request = slow

reuses open pipe

shaped as

begins with

then

ended by

precedes

request has

response has

mandatory for virtual hosting

requires

tells client bytes to read

TCP transport

HTTP 1.1 request-response

HTTP 1.0

Message format

Start line

Header lines

Blank line CRLF CRLF

Optional body

Methods GET HEAD

Status code + reason

Host header

Persistent connection

Content-Length