4.3.24 · D5 · HinglishComputer Networks

Question bankHTTP - 1.1 — methods, status codes, headers, persistent connections

1,736 words8 min read↑ Read in English

4.3.24 · D5 · Coding › Computer Networks › HTTP - 1.1 — methods, status codes, headers, persistent conn


True or false — justify

Har jawab wajah hai, bare verdict nahi — reveal karne se pehle apna justification bolo.

HTTP stateless hai, isliye server kabhi yaad nahi rakh sakta ki tum kaun ho.
False — protocol ke beech requests mein koi memory nahi hoti, lekin Cookie:/Set-Cookie: headers upar se identity rebuild karte hain, isliye state application mein rehti hai, transport mein nahi.
Ek persistent connection par, "socket band hone tak padho" theek kaam karta hai.
False — socket deliberately reuse ke liye open rehta hai, isliye end mark karne ke liye koi close nahi hota; tumhe exactly Content-Length bytes padhne padte hain ya chunked framing follow karni padti hai.
GET safe hai kyunki iska koi request body nahi hota.
False — safety ka matlab hai semantic promise ki koi side effects nahi honge; ek body-less request jo phir bhi data mutate kare woh contract tod degi, isliye body ka na hona ek symptom hai, cause nahi.
PUT aur DELETE dono idempotent hain.
True — "resource ko yeh set karo" ya "is resource ko hatao" baar baar karne par same final state milti hai jaise ek baar karne par, isliye lost reply ke baad retry safe hai.
Connection: keep-alive HTTP/1.1 mein socket open rakhne ke liye zaroori hai.
False — 1.1 mein persistence default hai, isliye woh header ek 1.0 ka purana tarika hai; 1.1 mein tum sirf Connection: close add karte ho jab opt out karna ho.
200 response guarantee karta hai ki jo operation tumne manga woh actually succeed hua.
POST/PUT ke liye False — 200 ka matlab hai HTTP exchange succeed hua, lekin application-level failure phir bhi 200 body ke andar report ho sakti hai; status protocol describe karta hai, hamesha tumhara business logic nahi.
Har HTTP response mein ek body hona zaroori hai.
False — 204 No Content, 304 Not Modified, aur HEAD ke responses mein design ke hisaab se koi body nahi hoti; blank line message khatam kar deti hai.
Pipelining head-of-line blocking hatata hai.
False — pipelining requests back-to-back bhejta hai lekin responses in order vapas aane chahiye, isliye ek slow response uske peeche sabko rok deta hai; sirf HTTP-2 multiplexing hi HTTP layer par yeh sach mein theek karta hai.
Host: optional hai jab tak ek IP sirf ek domain serve kare.
False — 1.1 mein yeh mandatory hai chahe kuch bhi ho; parser aur Virtual hosting logic pe depend karta hai ki yeh hamesha present rahe, isliye isko chhod dena 400 Bad Request hai.

Spot the error

Har line mein ek concrete galti hai — usse naam do, phir reveal karo.

"404 ka matlab hai server crash ho gaya aur respond nahi kar sakta."
Server ne respond kiya — 404 ek 4xx client error hai jiska matlab hai requested resource exist nahi karta; crash 5xx ke roop mein dikhta.
"HTTP/1.1 mein Connection: keep-alive bhejo warna connection ek request ke baad band ho jaata hai."
1.1 mein connection by default persist karta hai; yeh header yahan kuch nahi badalta aur iska na hona force close nahi karta.
"Response tab khatam hota hai jab hum ek blank \r\n\r\n line hit karte hain."
Blank line headers khatam karti hai, response nahi — uske baad body aati hai, jiski length Content-Length ya chunked encoding fix karta hai.
"Kyunki GET idempotent hai, POST bhi hona chahiye."
POST na safe hai na idempotent — isse baar baar karne par duplicate resources ban sakte hain (do orders, do comments), isliye browsers resubmit karne se pehle warn karte hain.
"Content-Length body mein characters count karta hai."
Yeh bytes count karta hai, characters nahi — ek multi-byte UTF-8 character (jaise emoji) kai bytes ka hota hai, isliye character count message ko galat frame kar deta.
"HEAD resource return karta hai lekin status line chhod deta hai."
HEAD puri status line aur headers bilkul GET ki tarah return karta hai; sirf body chhod deta hai, taaki tum size/freshness saste mein check kar sako.
"Transfer-Encoding: chunked ko extra safety ke liye Content-Length ke saath use karo."
Yeh dono mutually exclusive framing schemes hain — dono bhejana ek conflict hai, aur ek strict parser isse error/security risk treat karta hai (request smuggling).
"301 aur 302 ka matlab ek hi hai, sirf alag numbers hain."
301 ka matlab hai permanently move hua (clients aur caches apne links update kar sakte hain); 302 ka matlab hai temporarily move hua (agli baar original URL use karo) — caching consequences alag hain.

Why questions

Jawab mein mechanism hona chahiye, question restate nahi.

HTTP/1.1 ne persistent connections ko default kyun banaya?
Har nayi TCP connection ek TCP three-way handshake (ek RTT) plus TCP slow start ka cost leti hai jo bandwidth dhire dhire ramp karta hai, isliye ek socket reuse karna us startup cost ko kai requests mein amortize karta hai.
Persistence kyun explicit message framing force karta hai?
Socket open rehne par "body finished" mark karne ke liye koi connection-close nahi hota, isliye receiver ko Content-Length (exact byte count) ya chunked encoding chahiye taaki pata chale ek response kahan khatam hota hai aur agla kahan shuru.
Host header Virtual hosting ke liye zaroori kyun hai?
Ek IP address kai domains serve kar sakta hai, aur TCP layer sirf IP jaanta hai; Host: hi woh jagah hai jahan request bataati hai ki kaunsi site chahiye.
Slow-network latency persistence ko kam valuable kyun nahi banati, zyada valuable kyun banati hai?
Saving roughly hai resources ke liye, isliye yeh RTT ke saath scale karta hai — high-latency links (mobile, satellite) sabse zyada benefit lete hain.
Transfer-Encoding: chunked ek aisi body kyun stream kar sakta hai jise server pehle se measure nahi kar sakta?
Chunked encoding body ko size-prefixed pieces mein bhejta hai jo ek zero-length chunk par khatam hoti hai, isliye server ko total length pehle se kabhi nahi chahiye — generated ya streamed content ke liye perfect.
Pipelining ke saath bhi head-of-line blocking kyun hoti hai?
HTTP/1.1 ek single connection par responses request order mein chahiye, isliye ek slow pehla response uske peeche taiyaar khade har response ko rok leta hai.
304 Not Modified re-download karne se zyada fast kyun hai?
Client apna cached validator bhejta hai (If-None-Match ke saath ETag); agar unchanged hai to server ek tiny bodyless 304 return karta hai aur client bytes transfer karne ki jagah apni local copy reuse karta hai.
HTTP TCP ke upar kyun chalta hai, seedha bytes bhejne ki jagah?
TCP ordered, reliable, error-checked delivery deta hai, isliye HTTP assume kar sakta hai ki uska text intact aur sequence mein aata hai aur sirf request/response semantics par focus kar sakta hai.

Edge cases

Boundary aur degenerate scenarios — sirf rule nahi, case cover karo.

204 No Content response ki body ko kya frame karta hai?
Kuch frame nahi karna — definition ke hisaab se koi body nahi hai, isliye message blank line par khatam hota hai aur connection agle request ke liye free rehta hai.
Ek keep-alive connection par, agar server band karna chahta hai to aakhri expected response ke baad kya hota hai?
Woh us final response ke headers mein Connection: close bhejta hai, client ko signal karta hai ki is body ko padho phir socket band maano.
Agar ek persistent POST request mein koi Content-Length nahi aur koi chunked encoding nahi hai, to kya toot ta hai?
Server nahi bata sakta body kahan khatam hoti hai aur agla request kahan shuru hota hai, isliye ya to woh hang karta hai wait karte hue ya misparse karta hai — ek ambiguous frame, aksar 400.
Ek idempotent retry tumhe kya protect karta hai jab reply mid-flight lost ho jaaye?
Tum safely PUT ya DELETE resend kar sakte ho bina doosre effect ke dar ke, kyunki do identical calls ke baad final state ek call ke baad ki state ke barabar hoti hai.
Kya zero headers wali request (sirf start line aur blank line) 1.1 mein kabhi valid hai?
Nahi — Host: 1.1 mein mandatory hai, isliye kam se kam ek header present hona chahiye warna server 400 Bad Request return karta hai.
503 Service Unavailable kaunse status class mein aata hai, aur galti kis ki hai?
5xx — ek server error jiska matlab hai server temporarily request handle nahi kar sakta (overload, maintenance); client ki request well-formed thi.
Kya ek single persistent connection do alag domains ki requests carry kar sakta hai?
Tabhi jab dono same server par resolve hoon aur server isko accept kare; har request ko phir bhi apna Host: header chahiye, aur TLS/certificate constraints aksar connection ko ek origin par pin kar dete hain.

Recall One-line self-test

Jawab chhupa lo. Agar tum "persistence framing kyun force karta hai?" aur "404 client error kyun hai?" dono ka mechanism ek ek saanch mein bata sako, tumne is topic ke do sabse zyada common traps clear kar liye. Persistence framing kyun force karta hai? ::: End signal karne ke liye koi close nahi, isliye Content-Length ya chunked boundary draw karta hai. 404 client error kyun hai, crash nahi? ::: Server ne bilkul theek respond kiya; jo resource manga gaya woh missing hai — crashes 5xx hote hain.