Module 3 — Tổng kết & cheat sheet
Recap TLS handshake, certificate chain và bộ công cụ debug mạng. Cheat sheet một trang, glossary 18 thuật ngữ, pitfall tổng hợp, self-assessment. Kết thúc course TCP, HTTP & Web.
TL;DR: Module 3 đóng lại course với hai mảng: bảo mật (TLS 1.3 handshake, certificate chain, CA tin cậy) và vận hành (dig/curl/nc/ss/tcpdump, Wireshark, latency vs throughput). Đây là một trang để bookmark: bảng cheat sheet công cụ theo chặng, sơ đồ TLS handshake, glossary, và 6 pitfall lớn nhất. Nếu bạn giải thích được TLS bắt tay thế nào và chuỗi cert được verify ra sao, chẩn đoán được sự cố bằng đúng công cụ cho từng chặng, và dựng được reverse proxy terminate TLS — bạn đã hoàn thành course và sẵn sàng cho Linux & Container (tier 3).
Đã đi qua những gì
Module 3 chuyển từ "làm sao dữ liệu đi" (module 1-2) sang "làm sao dữ liệu đi an toàn và làm sao nhìn vào khi nó hỏng".
Bài 01 mổ xẻ TLS 1.3 handshake: ClientHello/ServerHello trao đổi key share, derive session key chung qua ECDHE, và vì sao TLS 1.3 chỉ tốn 1 RTT (so với 2 RTT của TLS 1.2) — cộng 0-RTT cho session resumption.
Bài 02 giải thích certificate và chuỗi tin cậy: cert gắn public key với danh tính (domain), được CA ký, và browser verify ngược chuỗi từ leaf → intermediate → root CA đã cài sẵn. SAN, expiry, và lỗi chain thiếu intermediate.
Bài 03 đưa bộ công cụ debug: mỗi công cụ soi một chặng — dig (DNS), curl -v -w (HTTP/TLS/timing), nc (TCP thô), ss/lsof (socket local), tcpdump (gói thật) — cùng workflow chẩn đoán theo chặng.
Bài 04 dạy Wireshark: bắt gói và bóc từng tầng (Ethernet → IP → TCP → TLS), display filter, Follow TCP Stream, nhận diện retransmission/RST — biến lý thuyết encapsulation thành dữ liệu nhìn thấy được.
Bài 05 phân biệt latency và throughput: vì sao "thêm server" không luôn nhanh hơn, RTT bị giới hạn bởi tốc độ ánh sáng, và bandwidth-delay product quyết định throughput thực tế.
Lab 06 tổng hợp tất cả: dựng Nginx terminate TLS trước một backend HTTP bằng Docker, rồi verify từng chặng bằng curl -v và openssl s_client.
🗺️ Cheat sheet
TLS 1.3 handshake — 1 RTT
sequenceDiagram
participant C as Client
participant S as Server
C->>S: ClientHello (key share, cipher list, SNI)
S->>C: ServerHello (key share) + Certificate + Finished
Note over C,S: Ca hai derive session key (ECDHE)
C->>S: Finished + Application Data
Note over C,S: Da ma hoa -- 1 RTT la xongCông cụ debug theo chặng
| Chặng nghi ngờ | Công cụ | Lệnh điển hình |
|---|---|---|
| DNS — tên ra IP | dig | dig +short host, dig @8.8.8.8 host |
| TCP — port có mở | nc | nc -zv host 443 |
| TLS — cert, cipher | curl -v, openssl | curl -v https://host, openssl s_client -connect host:443 |
| Timing — chặng nào chậm | curl -w | curl -w "%{time_starttransfer}s" -o /dev/null -s URL |
| Socket local — ai nghe port | ss, lsof | ss -tlnp, lsof -i :8080 |
| Gói thật trên dây | tcpdump | sudo tcpdump -i eth0 'tcp port 443' |
Đọc curl -w timing (mốc tích luỹ)
| Biến | Delta cao nghĩa là |
|---|---|
time_namelookup | DNS chậm |
time_connect − namelookup | TCP handshake chậm (mạng xa, mất gói) |
time_appconnect − connect | TLS handshake chậm |
time_starttransfer − appconnect | Server xử lý chậm (TTFB) |
curl -v ký hiệu hướng
| Ký hiệu | Nghĩa |
|---|---|
* | Ghi chú curl (DNS, kết nối, TLS) |
> | Dữ liệu gửi đi (request) |
< | Dữ liệu nhận về (response) |
nc 3 trạng thái port
| Kết quả | Chẩn đoán |
|---|---|
succeeded | TCP ổn — soi tầng trên (TLS/HTTP/app) |
Connection refused (tức thì) | Không ai listen — sai port / app chưa chạy |
timeout (im lặng) | Firewall DROP / route hỏng |
📖 Glossary module
| Thuật ngữ | Định nghĩa 1 câu |
|---|---|
| TLS | Transport Layer Security — giao thức mã hoá kênh truyền giữa client và server (HTTPS = HTTP trên TLS). |
| Handshake | Quá trình bắt tay trao đổi key và xác thực trước khi truyền dữ liệu mã hoá. |
| ECDHE | Elliptic Curve Diffie-Hellman Ephemeral — thuật toán trao đổi key tạo session key chung mà không truyền nó qua mạng. |
| Session key | Khoá đối xứng dùng chung sinh ra trong handshake, mã hoá toàn bộ dữ liệu của phiên. |
| 0-RTT | Tính năng TLS 1.3 cho phép gửi dữ liệu ngay ở gói đầu khi resume phiên cũ — đánh đổi rủi ro replay. |
| Certificate | Tài liệu số gắn public key với danh tính (domain), được CA ký để client tin tưởng. |
| CA | Certificate Authority — tổ chức được tin cậy ký cert; root CA cài sẵn trong OS/browser. |
| Chain of trust | Chuỗi verify từ cert leaf → intermediate → root CA — mỗi cấp ký cho cấp dưới. |
| SAN | Subject Alternative Name — trường liệt kê các domain/IP cert hợp lệ; client hiện đại yêu cầu SAN, không chỉ CN. |
| SNI | Server Name Indication — client gửi domain muốn truy cập ngay trong ClientHello, để server chọn đúng cert. |
| TLS termination | Kỹ thuật reverse proxy giải mã TLS, forward HTTP thuần vào backend nội bộ. |
| dig | Công cụ truy vấn DNS trực tiếp, in record và TTL thô. |
| TTFB | Time To First Byte — thời gian từ lúc gửi request tới byte đầu của response; cao = server xử lý chậm. |
| BPF | Berkeley Packet Filter — cú pháp filter gói dùng bởi tcpdump và Wireshark capture filter. |
| Display filter | Cú pháp lọc riêng của Wireshark (dùng ==), áp trên gói đã bắt được. |
| Latency | Độ trễ — thời gian một gói đi tới đích (chi phối bởi RTT, khoảng cách vật lý). |
| Throughput | Lượng dữ liệu truyền được trên một đơn vị thời gian (chi phối bởi bandwidth và bandwidth-delay product). |
| RTT | Round-Trip Time — thời gian đi và về của một gói; giới hạn dưới bởi tốc độ ánh sáng. |
⚠️ Pitfall tổng hợp
Pitfall 1 — Cert hết hạn hoặc thiếu intermediate.
Cert leaf còn hạn nhưng server không gửi kèm intermediate cert → client không verify được chain → lỗi "unable to get local issuer certificate". Luôn cấu hình ssl_certificate bằng fullchain (leaf + intermediate), không chỉ leaf. Kiểm tra: openssl s_client -connect host:443 -showcerts.
Pitfall 2 — Self-signed/cert chỉ có CN, thiếu SAN.
Client hiện đại (curl, browser) bỏ qua CN, chỉ đọc SAN. Cert thiếu subjectAltName → lỗi dù CN đúng. Tạo cert luôn thêm -addext "subjectAltName=DNS:...".
Pitfall 3 — ping được mà app timeout.
ICMP (ping) khác TCP. Firewall có thể allow ICMP nhưng DROP port cụ thể. Test TCP thật bằng nc -zv host port, không tin ping. (Liên hệ module 1 bài 08 — MTU & PMTUD black-hole.)
Pitfall 4 — Nhầm lỗi mạng với lỗi app.
"Trang chậm" thường là TTFB cao (server xử lý chậm), không phải mạng. Dùng curl -w tách timing: nếu DNS/TCP/TLS đều nhanh mà time_starttransfer cao → đọc log app, không debug mạng.
Pitfall 5 — Backend tạo redirect http:// sau TLS termination.
Sau termination, backend chạy HTTP nên tự tạo URL http://. Phải đọc X-Forwarded-Proto: https để biết scheme gốc. Framework cần bật trust forwarded headers (Spring ForwardedHeaderFilter, Express trust proxy).
Pitfall 6 — tcpdump không filter trên server production.
Bắt gói không filter sinh hàng triệu gói/phút, lấp đĩa, làm chậm máy. Luôn filter chặt (host X and port Y) và capture trong thời gian ngắn.
✅ Self-assessment
Bạn đã đạt module này nếu trả lời được:
- Explain được TLS 1.3 handshake và chuỗi tin cậy certificate — ClientHello/ServerHello trao key share, derive session key qua ECDHE trong 1 RTT; cert được verify ngược chuỗi leaf → intermediate → root CA.
- Nếu chưa: đọc lại bài 01 (handshake, mục key exchange) và bài 02 (chain of trust, SAN).
- Diagnose được sự cố mạng bằng dig/curl/nc/ss/tcpdump/Wireshark — chọn đúng công cụ cho từng chặng, đọc
curl -wtiming, phân biệt lỗi mạng với lỗi app.- Nếu chưa: đọc lại bài 03 (workflow chẩn đoán theo chặng) và bài 04 (Wireshark đọc gói từng tầng).
- Implement được reverse proxy terminate TLS trước backend — Nginx
listen 443 ssl+proxy_pass+ forwardX-Forwarded-*, verify bằngcurl -v.- Nếu chưa: làm lại lab 06 (mini-challenge reverse proxy + TLS) và đọc module 2 bài 08.
🚀 What's next
Bạn vừa hoàn thành course 2 — TCP, HTTP & Web của track Networking. Bạn đã đi từ tầng Transport (TCP/UDP), qua tầng Application (HTTP/1-2-3, REST/gRPC/WS), tới bảo mật và vận hành (TLS, debug tools). Đây là nền tảng mọi backend dev đứng trên đó mỗi ngày.
Course tiếp theo — Linux & Container (tier 3) đào sâu vào nơi các giao thức này thực sự chạy: network namespace, veth, Linux bridge, iptables/netfilter, và mạng Docker/Kubernetes. Bạn sẽ tự dựng lại một bridge network kiểu Docker từ namespace + veth, hiểu cách container nói chuyện với nhau, và debug mạng trong môi trường container hoá. Tất cả kỹ năng debug (dig/curl/nc/ss/tcpdump) bạn vừa học sẽ được dùng lại — lần này trong network namespace.
Bài tiếp theo: Linux & Container — tổng quan course
📚 Tài liệu mở rộng
- Sách: High Performance Browser Networking — Ilya Grigorik (đọc miễn phí tại hpbn.co). Chapter 4 (TLS) là phần giải thích handshake và optimization rõ ràng nhất, có số liệu đo thực tế.
- Sách: Bulletproof TLS and PKI — Ivan Ristić. Cuốn sâu nhất về TLS, certificate, và cấu hình server an toàn.
- RFC 8446 — TLS 1.3 (2018): đặc tả chính thức. Đọc Section 2 (Protocol Overview) để nắm luồng handshake.
- Công cụ: SSL Labs Server Test — chấm điểm cấu hình TLS của một server thật, chỉ ra cipher yếu, cert chain lỗi.
- Blog: Cloudflare Learning Center — loạt bài "What is TLS?", "What is a CDN?" giải thích trực quan, nhiều sơ đồ.
Bài này đáng gửi cho bạn học cùng?
Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.
Bài này có giúp bạn hiểu bản chất không?
Hỏi đáp về bài này
Chưa có câu hỏi
Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).
Đặt câu hỏi đầu tiên