HTTP & HTTPS
đ 60. What are HTTP and HTTPS protocols?â
HTTP (HyperText Transfer Protocol) āĻšāϞ⧠āĻāύā§āĻāĻžāϰāύā§āĻā§ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ (āĻŦā§āϰāĻžāĻāĻāĻžāϰ) āĻāĻŦāĻ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻŽāϧā§āϝ⧠āϤāĻĨā§āϝ āĻāĻĻāĻžāύ-āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻžāϰ āĻŽā§āϞ āĻĒā§āϰā§āĻā§āĻāϞāĨ¤ āĻāĻāĻŋ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ-āϰā§āϏāĻĒāύā§āϏ āĻŽāĻĄā§āϞ⧠āĻāĻžāĻ āĻāϰ⧠āĻāĻŦāĻ āĻĒā§āϰā§āĻ 80 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ HTTPS (HTTP Secure) āĻšāϞ⧠HTTP āĻāϰāĻ āύāĻŋāϰ āĻžāĻĒāĻĻ āĻŦāĻž āĻāύāĻā§āϰāĻŋāĻĒā§āĻ āĻāϰāĻž āĻāĻžāϰā§āϏāύāĨ¤ āĻāĻāĻŋ āĻĄā§āĻāĻžāϰ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻĻāĻŋāϤ⧠TLS āĻĒā§āϰā§āĻā§āĻāϞ āϝā§āĻā§āϤ āĻāϰ⧠āĻāĻŦāĻ āĻĒā§āϰā§āĻ 443 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
đ What is the difference between HTTP/1.0, HTTP/1.1, HTTP/2, and HTTP/3?â
| āĻāĻžāϰā§āϏāύ | āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻāĻŦāĻ āĻĒāĻžāϰā§āĻĨāĻā§āϝ |
|---|---|
| HTTP/1.0 | āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻā§āϰ āĻāύā§āϝ āύāϤā§āύ TCP āĻāĻžāύā§āĻāĻļāύ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāϤ⧠āĻāĻŦāĻ āϰā§āϏāĻĒāύā§āϏ āĻĒā§āϞ⧠āϤāĻž āĻŦāύā§āϧ āĻšāϝāĻŧā§ āϝā§āϤāĨ¤ āĻāĻāĻŋ āĻ āύā§āĻ āϏā§āϞ⧠āĻāĻŋāϞāĨ¤ |
| HTTP/1.1 | Keep-Alive āĻ āĻĒāĻļāύ āύāĻŋāϝāĻŧā§ āĻāϏā§āĨ¤ āĻāĻāĻ TCP āĻāĻžāύā§āĻāĻļāύ āĻā§āϞāĻž āϰā§āĻā§ āĻĒāϰ āĻĒāϰ āĻāĻāĻžāϧāĻŋāĻ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻĒāĻžāĻ āĻžāύ⧠āϝāĻžāϝāĻŧāĨ¤ āϤāĻŦā§ "Head-of-Line Blocking" āϏāĻŽāϏā§āϝāĻž āĻāĻŋāϞ (āĻāĻā§āϰ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻā§āϞ⧠āĻĨāĻžāĻāϞ⧠āĻĒāϰā§āϰāĻā§āϞ⧠āĻāĻāĻā§ āϝā§āϤ)āĨ¤ |
| HTTP/2 | Multiplexing āύāĻŋāϝāĻŧā§ āĻāϏā§āĨ¤ āĻ āϰā§āĻĨāĻžā§, āĻāĻāĻāĻŋāĻŽāĻžāϤā§āϰ TCP āĻāĻžāύā§āĻāĻļāύā§āϰ āĻā§āϤāϰ āĻĻāĻŋāϝāĻŧā§ āĻāĻāϏāĻžāĻĨā§ āĻ āύā§āĻāĻā§āϞ⧠āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāĻŦāĻ āϰā§āϏāĻĒāύā§āϏ āĻĒā§āϝāĻž āϰāĻžāϞāĻžāϞāĻŋ āĻāĻŦāĻ āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻĢāϰāĻŽā§āĻā§ āĻĒāĻžāĻ āĻžāύ⧠āϏāĻŽā§āĻāĻŦāĨ¤ āĻĒā§āĻ āϞā§āĻĄ āĻĢāĻžāϏā§āĻ āĻšāϝāĻŧāĨ¤ |
| HTTP/3 | TCP āĻā§ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻŦāĻžāĻĻ āĻĻāĻŋāϝāĻŧā§ UDP-āĻāĻŋāϤā§āϤāĻŋāĻ QUIC āĻĒā§āϰā§āĻā§āĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻļā§āϰ⧠āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻāĻžāύā§āĻāĻļāύ āĻāĻāĻžāϰāĻšā§āĻĄ āĻāĻŽāĻŋāϝāĻŧā§ āĻāĻŽ āϞā§āĻā§āύā§āϏāĻŋāϰ (0-RTT) āϏā§āĻŦāĻŋāϧāĻž āĻĻā§āϝāĻŧāĨ¤ |
⥠What protocol does HTTP/3 use instead of TCP, and why?â
HTTP/3 āĻā§āϰāĻžāύā§āϏāĻĒā§āϰā§āĻ āϞā§āϝāĻŧāĻžāϰ āĻĒā§āϰā§āĻā§āĻāϞ āĻšāĻŋāϏā§āĻŦā§ TCP-āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠QUIC (Quick UDP Internet Connections) āĻĒā§āϰā§āĻā§āĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϝāĻž āĻŽā§āϞāϤ UDP āĻāϰ āĻāĻĒāϰ āϤā§āϰāĻŋāĨ¤
- āĻā§āύ? TCP āϤ⧠āĻāĻžāύā§āĻāĻļāύ āϤā§āϰāĻŋ āĻāϰāϤ⧠3-way Handshake āĻāĻŦāĻ āĻāύāĻā§āϰāĻŋāĻĒāĻļāύā§āϰ āĻāύā§āϝ TLS Handshake āĻŽāĻŋāϞ⧠āĻ āύā§āĻ āϏāĻŽāϝāĻŧ āύāώā§āĻ āĻšāϤā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻž TCP-āϤ⧠āĻāĻāĻāĻŋ āĻĒā§āϝāĻžāĻā§āĻā§ āĻāϰāϰ āĻšāϞ⧠āĻĒā§āϰ⧠āĻāĻžāύā§āĻāĻļāύ āĻāĻāĻā§ āϝā§āϤāĨ¤ QUIC āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠UDP-āĻāϰ āĻāϤāĻŋāϰ āϏāĻžāĻĨā§ āĻāύ-āĻŦāĻŋāϞā§āĻ āĻāύāĻā§āϰāĻŋāĻĒāĻļāύ āĻāĻŦāĻ āĻŽāĻžāϞā§āĻāĻŋāĻĒā§āϞā§āĻā§āϏāĻŋāĻ āϝā§āĻā§āϤ āĻāϰ⧠āĻāĻ āϞā§āϝāĻžāĻā§āύā§āϏāĻŋ āϏāĻŽāϏā§āϝāĻžāĻā§āϞ⧠āĻĻā§āϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
đ 61. What happens during an HTTP request-response cycle?â
URL type â DNS â TCP â TLS â Request â Server â Response â Render
đ Step by Stepâ
1ī¸âŖ DNS Resolutionâ
google.com â āĻā§āĻĨāĻžāϝāĻŧ?
Browser cache â OS cache â Router â ISP DNS
â
âŧ
142.250.190.46 â
2ī¸âŖ TCP + TLSâ
TCP: SYN â SYN-ACK â ACK (connection)
TLS: ClientHello â ServerHello (encryption)
3ī¸âŖ HTTP Request āĻĒāĻžāĻ āĻžāĻâ
GET /search?q=hello HTTP/1.1
Host: www.google.com
User-Agent: Chrome/120
Accept: text/html
Cookie: SID=abc123
4ī¸âŖ Server Process āĻāϰā§â
Load Balancer â Web Server â App Server â DB/Cache
â
Response āϤā§āϰāĻŋ
5ī¸âŖ HTTP Response āĻāϏā§â
HTTP/1.1 200 OK
Content-Type: text/html
Content-Encoding: gzip
<!DOCTYPE html>...
6ī¸âŖ Browser Render āĻāϰā§â
HTML parse â DOM
CSS parse â CSSOM
DOM+CSSOM â Render Tree â Paint đ¨
đ Status Codes â āĻŽāύ⧠āϰāĻžāĻā§â
2xx â â
Success (200 OK, 201 Created)
3xx â đ Redirect (301 Permanent, 304 Cached)
4xx â â Client Error (401, 403, 404, 429)
5xx â đĨ Server Error (500, 502, 503)
đ HTTP Versionsâ
HTTP/1.1 â Keep-Alive, āĻāĻŋāύā§āϤ⧠HOL blocking
HTTP/2 â Multiplexing, Header compression
HTTP/3 â QUIC (UDP), fastest đ
đˇī¸ What is the role of the Host header in HTTP/1.1?â
â ī¸ āϏāĻŽāϏā§āϝāĻžāĻāĻž āĻā§ āĻāĻŋāϞ?â
HTTP/1.0 āϤ⧠Host header āĻāĻŋāϞ āύāĻžāĨ¤ āϤāĻāύ:
Client â TCP connect āĻāϰ⧠IP: 192.168.1.1
Client â "GET /index.html āĻĻāĻžāĻ"
Server āĻāĻžāĻŦā§: "āĻā§āύ website āĻāϰ āĻāύā§āϝ? āĻāĻžāύāĻŋ āύāĻž!"
āĻāĻāĻāĻž IP āϤ⧠āϤāĻāύ āĻāĻāĻāĻžāĻ website āĻšā§āϏā§āĻ āĻāϰāĻž āϝā§āϤāĨ¤â
đ¯ Host Header āĻā§ Solve āĻāϰā§?â
āĻāĻāĻā§ āĻāĻāĻāĻž server āĻ āĻšāĻžāĻāĻžāϰ⧠website āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠â āϏāĻŦāĻžāϰ āĻāĻāĻ IP:
IP: 104.21.30.45 āĻ āĻāĻā§:
â google.com
â facebook.com
â amazon.com
â āĻāϰ⧠āĻšāĻžāĻāĻžāϰāĻāĻž!
Host header āĻŦāϞ⧠āĻĻā§āϝāĻŧ "āĻāĻ IP āϤ⧠āĻā§āύ website āĻāĻžāĻ:"
GET /index.html HTTP/1.1
Host: google.com â āĻāĻāĻžāĻ key!
đĨī¸ Virtual Hosting â Host Header āĻāϰ āĻāϏāϞ āĻāĻžāĻĻā§â
CLIENT SERVER (104.21.30.45)
â â
â GET / HTTP/1.1 â
â Host: site-a.com âââââââââââââļâ
â â Host āĻĻā§āĻā§ route āĻāϰā§
â ââââļ site-a.com files
â â
â GET / HTTP/1.1 â
â Host: site-b.com âââââââââââââļâ
â ââââļ site-b.com files
â â
â GET / HTTP/1.1 â
â Host: site-c.com âââââââââââââļâ
â ââââļ site-c.com files