DOCS · v1.0 · 10 chương

Giáo trình Networking
Mạng máy tính từ TCP/IP đến HTTPS

Tài liệu mô tả chi tiết toàn bộ 10 chương: TCP/IP, IP/subnet, TCP/UDP, HTTP/1-2-3, HTTPS/TLS, DNS, WebSocket/gRPC, Cookie/JWT/OAuth, security/CDN. Học xong, bạn trả lời được mọi câu hỏi network trong vòng phỏng vấn backend / DevOps / SRE.

🌐 Triết lý học Networking
  1. Mở Wireshark / tcpdump. Network không phải lý thuyết — nó là thật. Bắt packet thật mà xem.
  2. Mỗi giao thức ra đời để giải quyết 1 vấn đề. Hiểu vấn đề trước, hiểu giải pháp sau.
  3. Layer hoá tư duy. Mỗi layer chỉ quan tâm việc của mình, không xen vào layer khác.
  4. Trade-off khắp nơi. TCP đáng tin nhưng chậm; UDP nhanh nhưng mất data — tuỳ use case.
  5. Phỏng vấn-oriented. Tập trung câu hỏi hay xuất hiện: TCP handshake, HTTPS, DNS, JWT, CORS.

📚 Mục lục — 10 chương

CH.01

OSI & TCP/IP Models

Foundation

Bộ khung tư duy của tất cả networking. Mỗi layer làm gì, encapsulation, "Tại sao layer hoá?".

🎯 Mục tiêu

  • Vẽ và nhớ thuộc 7 layer OSI và 4 layer TCP/IP
  • Hiểu encapsulation: HTTP → TCP → IP → Ethernet
  • Mapping protocol vào layer đúng (HTTP=L7, TCP=L4, IP=L3, Ethernet=L2)
  • Phân biệt L4 vs L7 load balancer

📖 Nội dung

  • 1.1 Tại sao cần model layer?
  • 1.2 7 layer OSI: Physical → Data Link → Network → Transport → Session → Presentation → Application
  • 1.3 4 layer TCP/IP: Link → Internet → Transport → Application
  • 1.4 So sánh OSI vs TCP/IP
  • 1.5 Encapsulation & decapsulation
  • 1.6 Mapping: HTTP, TCP, IP, Ethernet ở layer nào
  • 1.7 L4 vs L7 load balancer trong thực tế (nginx, HAProxy)

💡 Câu hỏi phỏng vấn

  • Phân biệt OSI và TCP/IP?
  • Mỗi layer thêm header/trailer gì?
  • L4 vs L7 LB khác nhau khi nào dùng cái nào?
CH.02

IP, Subnet, Routing

Network

Cách máy tính tìm nhau qua mạng — IP address, subnet mask, NAT, routing. Nền tảng cho mọi thứ trên Internet.

🎯 Mục tiêu

  • Đọc/viết được IPv4 và IPv6, hiểu khác biệt
  • Hiểu subnet, CIDR notation (vd 192.168.1.0/24)
  • Hiểu NAT — tại sao máy local IP 192.168.x.x ra Internet được
  • ARP — IP → MAC mapping trong LAN
  • Routing table cơ bản

📖 Nội dung

  • 2.1 IPv4 (32-bit) format, classes A/B/C/D/E (lịch sử)
  • 2.2 Subnet mask & CIDR — bài toán chia dải
  • 2.3 Private IP (RFC 1918) vs Public IP
  • 2.4 NAT & Port Forwarding — vì sao LAN IP ra Internet được
  • 2.5 IPv6 — tại sao cần, format, NDP thay ARP
  • 2.6 ARP — IP→MAC trong LAN
  • 2.7 Routing — bảng route, gateway, default route
  • 2.8 ICMP — ping, traceroute hoạt động ra sao

💡 Câu hỏi phỏng vấn

  • 192.168.1.0/24 — máy được bao nhiêu host?
  • Tại sao có NAT? Có phải mọi máy trên Internet đều có IP public?
  • Khác biệt IPv4 và IPv6?
  • traceroute hoạt động ra sao?
CH.03

TCP — Handshake & Reliability

Transport

Giao thức "đáng tin cậy" — đảm bảo data đến nguyên vẹn, đúng thứ tự. Cơ sở của HTTP, SSH, SMTP, mọi connection-oriented protocol.

🎯 Mục tiêu

  • Vẽ được TCP 3-way handshake và 4-way termination
  • Hiểu sequence number, ACK number, sliding window
  • Hiểu flow control vs congestion control
  • Hiểu các state: ESTABLISHED, TIME_WAIT, CLOSE_WAIT — bug nổi tiếng
  • Tại sao TCP "chậm" và TCP-over-TCP là antipattern

📖 Nội dung

  • 3.1 TCP là gì? Đặc điểm: connection-oriented, reliable, ordered
  • 3.2 3-way handshake: SYN → SYN-ACK → ACK
  • 3.3 4-way termination: FIN, ACK, FIN, ACK
  • 3.4 Sequence & ACK number
  • 3.5 Sliding window & flow control
  • 3.6 Congestion control: slow start, AIMD, Reno, Cubic
  • 3.7 TCP states & lệnh netstat / ss
  • 3.8 TIME_WAIT bug — port exhaustion trên server bận
  • 3.9 Nagle's algorithm & TCP_NODELAY
  • 3.10 Keep-alive

💡 Câu hỏi phỏng vấn

  • Vẽ 3-way handshake?
  • Tại sao 3-way mà không phải 2-way?
  • TIME_WAIT là gì? Tại sao tồn tại?
  • Khác biệt flow control vs congestion control?
CH.04

UDP — Khi nào không cần TCP

Transport

Giao thức "ngược lại" TCP — không bắt tay, không đảm bảo, nhưng cực nhanh. Nền tảng của DNS, video call, game online.

🎯 Mục tiêu

  • Hiểu UDP là gì, khi nào dùng
  • So sánh TCP vs UDP về header size, latency, reliability
  • Hiểu app nào dùng UDP và lý do (DNS, video, game, QUIC)
  • Hiểu QUIC — đỉnh cao của UDP-based transport (HTTP/3)

📖 Nội dung

  • 4.1 UDP là gì? Connectionless, không reliable, không ordered
  • 4.2 UDP header — chỉ 8 byte (vs TCP 20 byte)
  • 4.3 So sánh TCP vs UDP — bảng đối chiếu
  • 4.4 Use case: DNS, NTP, DHCP, video streaming, VoIP, online game
  • 4.5 Tại sao realtime apps thích UDP — head-of-line blocking của TCP
  • 4.6 QUIC — UDP+reliability ở user space
  • 4.7 WebRTC dùng UDP cho data channel

💡 Câu hỏi phỏng vấn

  • TCP vs UDP — khi nào dùng cái nào?
  • Tại sao game online dùng UDP, không TCP?
  • QUIC là gì?
CH.05

HTTP/1.1, HTTP/2, HTTP/3

Application

Giao thức của Web. Đa số phỏng vấn backend đều hỏi sâu HTTP. Hiểu method, status, header, multiplexing.

🎯 Mục tiêu

  • Hiểu HTTP request/response anatomy: method, path, headers, body
  • Thuộc các status code phổ biến (200, 201, 301, 304, 401, 403, 404, 500, 502, 503)
  • Hiểu HTTP/1.1 keep-alive, head-of-line blocking
  • Hiểu HTTP/2 multiplexing, server push, header compression
  • Hiểu HTTP/3 trên QUIC — không HOL blocking ở transport
  • Idempotency — tại sao GET, PUT, DELETE phải idempotent

📖 Nội dung

  • 5.1 HTTP request/response anatomy
  • 5.2 Methods: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
  • 5.3 Status codes — 1xx, 2xx, 3xx, 4xx, 5xx
  • 5.4 Headers quan trọng: Content-Type, Authorization, Cache-Control, Cookie
  • 5.5 HTTP/1.1: keep-alive, persistent connection, pipelining
  • 5.6 HTTP/2: binary frame, multiplexing, server push, HPACK
  • 5.7 HTTP/3: QUIC, no head-of-line blocking
  • 5.8 Idempotency & safety
  • 5.9 Caching: Cache-Control, ETag, Last-Modified, 304
  • 5.10 Compression: gzip, brotli

💡 Câu hỏi phỏng vấn

  • Phân biệt 301 vs 302; 401 vs 403?
  • HTTP/2 nhanh hơn HTTP/1.1 ở đâu?
  • Tại sao GET nên idempotent?
  • ETag dùng để làm gì?
CH.06

HTTPS, TLS, Certificates

Security

Mã hoá & xác thực HTTP. Hiểu TLS handshake, asymmetric vs symmetric, PKI, Let's Encrypt.

🎯 Mục tiêu

  • Hiểu vì sao cần HTTPS — confidentiality, integrity, authentication
  • Vẽ TLS handshake (1.2 vs 1.3)
  • Phân biệt asymmetric vs symmetric encryption
  • Hiểu certificate chain, Root CA, Let's Encrypt
  • Hiểu MITM attack và self-signed cert

📖 Nội dung

  • 6.1 Vấn đề của HTTP plain — sniffing, tampering, impersonation
  • 6.2 Symmetric vs Asymmetric encryption — AES vs RSA/ECDSA
  • 6.3 TLS 1.2 handshake — 4 round trip
  • 6.4 TLS 1.3 — 1-RTT (hoặc 0-RTT với resumption)
  • 6.5 Certificate & PKI — Root CA → Intermediate → Server
  • 6.6 Let's Encrypt & ACME protocol — free TLS
  • 6.7 SNI — nhiều cert trên 1 IP
  • 6.8 Cipher suites & perfect forward secrecy
  • 6.9 HTTPS vs HTTP/3 (TLS bắt buộc)
  • 6.10 Tools: openssl, browser DevTools security tab

💡 Câu hỏi phỏng vấn

  • TLS handshake các bước?
  • Tại sao dùng cả symmetric + asymmetric?
  • Cert chain hoạt động ra sao?
  • Self-signed cert là gì? Có an toàn không?
CH.07

DNS — How the Internet finds servers

Application

"Hệ thống danh bạ" của Internet. Mỗi lần bạn vào google.com, DNS làm việc trước. Hiểu recursive vs iterative, record types, caching, propagation.

🎯 Mục tiêu

  • Hiểu DNS hierarchy: root, TLD, authoritative
  • Phân biệt recursive resolver vs authoritative
  • Hiểu các record type: A, AAAA, CNAME, MX, TXT, NS
  • Hiểu TTL & DNS caching, vì sao "DNS propagation"
  • Dùng được dig, nslookup

📖 Nội dung

  • 7.1 DNS là gì & tại sao cần (IP khó nhớ)
  • 7.2 DNS hierarchy: root → TLD (.com) → authoritative
  • 7.3 Recursive vs iterative query
  • 7.4 Record types: A, AAAA, CNAME, MX, TXT, NS, SOA, SRV
  • 7.5 TTL & DNS caching layers
  • 7.6 DNS propagation — vì sao thay DNS phải đợi
  • 7.7 DNS over TCP, DNS over HTTPS (DoH), DNS over TLS (DoT)
  • 7.8 Tools: dig, nslookup, host
  • 7.9 Anycast DNS (Cloudflare 1.1.1.1, Google 8.8.8.8)

💡 Câu hỏi phỏng vấn

  • DNS resolution các bước khi vào example.com?
  • A vs CNAME vs ALIAS?
  • Tại sao DNS dùng UDP?
  • DNS cache poisoning là gì?
CH.08

WebSocket, SSE, gRPC, REST, GraphQL

API

5 cách build API/realtime communication. Mỗi cái có điểm mạnh riêng, biết khi nào dùng cái nào.

🎯 Mục tiêu

  • Hiểu REST principles, RESTful design
  • Hiểu GraphQL — single endpoint, query language
  • Hiểu gRPC — Protocol Buffers, HTTP/2, RPC
  • Hiểu WebSocket — full-duplex realtime
  • Hiểu Server-Sent Events (SSE) — server push 1 chiều
  • Long polling vs short polling vs WebSocket vs SSE

📖 Nội dung

  • 8.1 REST: nguyên lý, RESTful URL design
  • 8.2 GraphQL: schema, query, mutation, subscription
  • 8.3 REST vs GraphQL — over-fetching, under-fetching
  • 8.4 gRPC: Protobuf, code generation, streaming
  • 8.5 WebSocket: handshake (upgrade), full-duplex, frame format
  • 8.6 Server-Sent Events: HTTP-based, 1-chiều
  • 8.7 Polling: short vs long polling
  • 8.8 So sánh: khi nào dùng cái nào

💡 Câu hỏi phỏng vấn

  • REST vs GraphQL — trade-off?
  • WebSocket vs HTTP — khi nào dùng WebSocket?
  • gRPC nhanh hơn REST ở đâu?
  • SSE khác WebSocket gì?
CH.09

Cookies, Sessions, JWT, OAuth

Auth

Authentication & Authorization. Phân biệt 4 cơ chế phổ biến + biết khi nào dùng cái nào.

🎯 Mục tiêu

  • Hiểu Cookie — Set-Cookie, HttpOnly, Secure, SameSite
  • Hiểu Session-based auth (cookie + server session store)
  • Hiểu JWT — header.payload.signature, stateless
  • Hiểu OAuth 2.0 flow (Authorization Code, Implicit, PKCE)
  • So sánh Session vs JWT — trade-off
  • Hiểu refresh token, rotation

📖 Nội dung

  • 9.1 Authentication vs Authorization
  • 9.2 Cookie — anatomy, attributes (HttpOnly, Secure, SameSite, Path, Domain)
  • 9.3 Session-based auth flow
  • 9.4 JWT — JSON Web Token, base64 header.payload.signature
  • 9.5 JWT signing: HS256 (HMAC) vs RS256 (RSA)
  • 9.6 Session vs JWT — pros/cons, khi nào dùng cái nào
  • 9.7 Access token vs Refresh token
  • 9.8 OAuth 2.0 — concept, scope, grant types
  • 9.9 Authorization Code flow + PKCE
  • 9.10 OpenID Connect (OIDC) — auth trên OAuth
  • 9.11 Common attacks: token theft, replay, CSRF

💡 Câu hỏi phỏng vấn

  • Session vs JWT — khi nào dùng cái nào?
  • JWT lưu ở đâu (cookie vs localStorage)?
  • Refresh token để làm gì?
  • OAuth Authorization Code flow các bước?
CH.10

CORS, CSRF, XSS, CDN, Load Balancer

Security/Infra

Web security cơ bản + infrastructure (CDN, Load Balancer, Reverse Proxy, Rate Limiting). Phỏng vấn hỏi gần 100%.

🎯 Mục tiêu

  • Hiểu Same-Origin Policy & CORS
  • Hiểu CSRF attack & cách phòng (CSRF token, SameSite cookie)
  • Hiểu XSS & content escaping, CSP
  • Hiểu CDN — caching ở edge, push vs pull
  • Hiểu Load Balancer — algorithms (round-robin, least-conn, IP hash), L4 vs L7
  • Hiểu Reverse Proxy (nginx) vs Forward Proxy
  • Hiểu Rate Limiting — token bucket, leaky bucket

📖 Nội dung

  • 10.1 Same-Origin Policy — origin = scheme + host + port
  • 10.2 CORS — preflight (OPTIONS), Access-Control-Allow-* headers
  • 10.3 CSRF — exploit, prevention (token, SameSite)
  • 10.4 XSS — stored vs reflected vs DOM-based, prevention (escape, CSP)
  • 10.5 CDN — Cloudflare, Cloudfront — edge caching, geographical
  • 10.6 Load Balancer — algorithms, sticky session, health check
  • 10.7 L4 (TCP) vs L7 (HTTP) load balancer
  • 10.8 Reverse Proxy vs Forward Proxy
  • 10.9 nginx — reverse proxy, LB, static file
  • 10.10 Rate Limiting — token bucket, leaky bucket, sliding window
  • 10.11 DDoS protection cơ bản

💡 Câu hỏi phỏng vấn

  • CORS lỗi do gì? Cách fix?
  • CSRF khác XSS thế nào?
  • CSP là gì?
  • Round-robin LB có drawback gì?
  • Sticky session là gì?
  • Token bucket vs Leaky bucket?
⚠️ Lời khuyên cuối

Networking phải thực hành: mở Wireshark/tcpdump bắt packet thật. Mở Chrome DevTools tab Network xem HTTP request thật. Dùng curl -v để thấy header. Mọi thứ đều có thể quan sát được.

Sách tham khảo: "Computer Networking: A Top-Down Approach" (Kurose & Ross) — sách đại học cực kinh điển. Online: High Performance Browser Networking (Ilya Grigorik, free).

← Quay lại Trang chủ Networking Bắt đầu học Chương 01: OSI & TCP/IP →