Module 1 — TCP & UDP Deep Dive: tổng quan
Tầng Transport là nơi backend dev debug nhiều nhất — ECONNRESET, TIME_WAIT, hết port, throughput chậm đều sinh ở đây. Module này đào sâu từng cơ chế.
TL;DR: Module 1 đào sâu tầng Transport — nơi hầu hết lỗi production backend thực sự sinh ra. Bạn đã biết TCP "bắt tay 3 bước" từ khoá Foundations; module này mổ từng cơ chế bên dưới: handshake đồng bộ sequence number thế nào, TCP đảm bảo tin cậy ra sao, throughput ramp up dần vì sao, TIME_WAIT là gì và khi nào nó làm cạn port, khi nào chọn UDP thay TCP, và connection pool giúp gì. Học xong bạn trace được nguyên nhân từ log lỗi xuống tới cơ chế giao thức.
Vì sao module này tồn tại
Mỗi tuần có không ít backend developer phải debug một trong những triệu chứng này: service trả ECONNRESET lúc tải cao, deploy xong thấy hàng nghìn socket ở TIME_WAIT, throughput tới database chậm không rõ lý do, hoặc cạn ephemeral port dưới tải lớn. Tất cả những triệu chứng này đều có gốc ở tầng Transport — cụ thể là ở các cơ chế TCP mà hầu hết tài liệu "nhập môn" dừng lại trước khi giải thích.
Khoá Foundations đã cho bạn bản đồ 5 chặng và biết TCP "bắt tay". Module này zoom vào đúng tầng Transport và không dừng ở API — nó giải thích cơ chế bên dưới: sequence number để làm gì, sliding window hoạt động thế nào, congestion control nghẽn ở đâu, và TIME_WAIT tồn tại bao lâu và tại sao.
Đây là bản đồ 9 bài của module:
flowchart LR
A["00<br/>Tong quan"] --> B["01<br/>Handshake"]
B --> C["02<br/>Reliability<br/>Seq+ACK"]
C --> D["03<br/>Flow &<br/>Congestion"]
D --> E["04<br/>TIME_WAIT<br/>het port"]
E --> F["05<br/>TCP vs UDP"]
F --> G["06<br/>Conn Pool<br/>Keep-alive"]
G --> H["07<br/>Loi mang"]
H --> I["08<br/>MTU &<br/>Fragment"]
I --> J["09<br/>Tong ket"]Sau module này bạn sẽ
- Explain cơ chế 3-way handshake — tại sao cần đúng 3 bước, sequence number được đồng bộ thế nào, và SYN backlog liên quan đến SYN flood ra sao.
- Explain cách TCP đảm bảo dữ liệu tới đủ đúng thứ tự — sequence number, cumulative ACK, retransmission timeout, fast retransmit, và head-of-line blocking là gì.
- Diagnose TIME_WAIT, CLOSE_WAIT và tình trạng cạn ephemeral port — đọc được
ss/netstatvà hiểu khi nào chúng là vấn đề. - Choose giữa TCP và UDP dựa trên bài toán cụ thể, giải thích tradeoff.
- Explain flow control (sliding window) và congestion control (slow start, CUBIC, BBR) — phân biệt hai cơ chế và biết chúng ảnh hưởng throughput thế nào.
Lộ trình module
Thứ tự bài được thiết kế theo nguyên tắc "xây từ nền":
Bài 01 — 3-way handshake là điểm khởi đầu vì mọi thứ sau đó đều phụ thuộc vào sequence number được đồng bộ trong handshake. Bạn không thể hiểu ACK mà không biết seq được chốt thế nào.
Bài 02 — TCP reliability tiếp ngay sau: giải thích sequence number dùng để làm gì sau khi đã được đồng bộ — đánh số byte, ACK tích lũy, retransmit khi mất gói. Bài này cũng giới thiệu head-of-line blocking (HOL), pitfall lớn nhất của TCP, nền tảng để hiểu HTTP/2 ở module sau.
Bài 03 — Flow & congestion control mở rộng: giờ gói đã đến đúng rồi, vấn đề kế tiếp là đến nhanh mà không làm nghẽn đầu nhận hoặc mạng. Đây là lý do download tăng tốc dần, và lý do đường truyền xuyên lục địa không bao giờ đạt bandwidth lý thuyết ngay lập tức.
Bài 04 — TIME_WAIT giải thích phần đóng kết nối: đối xứng với handshake mở, FIN/ACK 4 bước và trạng thái TIME_WAIT tồn tại bao lâu — nơi sinh ra cạn port và ECONNRESET dưới tải cao.
Bài 05 — TCP vs UDP đặt TCP vào bối cảnh: sau khi hiểu rõ TCP nặng thế nào, bạn có căn cứ để chọn UDP cho game/video/DNS/QUIC và hiểu tradeoff thực sự.
Bài 06 — Connection pooling & keep-alive là ứng dụng thực tế: vì handshake tốn 1 RTT, tái dùng kết nối là tối ưu lớn nhất ở tầng này. Bài giải thích pool hoạt động thế nào và các thông số cần tune.
Bài 07 — Lỗi mạng thường gặp là bài debug: map từ error code (ECONNRESET, ECONNREFUSED, ETIMEDOUT) sang cơ chế TCP tương ứng. Học xong đọc log ra ngay nguyên nhân.
Bài 08 — MTU & fragmentation khép lại phần kỹ thuật: giới hạn kích thước gói ảnh hưởng thế nào đến performance và vì sao Path MTU Discovery quan trọng.
Bài 09 — Tổng kết gom cheat sheet và self-assessment toàn module.
Yêu cầu trước khi bắt đầu
- Đã hoàn thành khoá Networking Foundations — đặc biệt module 1 (5 chặng request) và hiểu khái niệm RTT, IP, port.
- Biết chạy lệnh terminal cơ bản. Một số bài dùng
tcpdump,ss,curl— có sẵn trên macOS/Linux; Windows dùng WSL. - Không cần biết lập trình mạng (socket API) — module này tập trung vào cơ chế giao thức, không phải API.
Time budget
| Bài | Chủ đề | Thời lượng |
|---|---|---|
| 00 | Tổng quan (bài này) | ~10 phút |
| 01 | 3-way handshake | ~22 phút |
| 02 | TCP reliability — seq, ACK, retransmit | ~22 phút |
| 03 | Flow & congestion control | ~22 phút |
| 04 | TIME_WAIT & hết port | ~20 phút |
| 05 | TCP vs UDP | ~18 phút |
| 06 | Connection pooling & keep-alive | ~20 phút |
| 07 | Lỗi mạng thường gặp | ~18 phút |
| 08 | MTU & fragmentation | ~18 phút |
| 09 | Tổng kết & cheat sheet | ~15 phút |
| Tổng | ~2.5 giờ |
Cách học module này hiệu quả
- Chạy
tcpdump/sstheo bài. Đọc về flags TCP không bằng bắt gói thật một lần. Mở terminal song song khi học bài 01-02. - Bám bản đồ trạng thái. Khi debug production sau này, tự hỏi "kết nối đang ở state nào?" —
SYN_SENT,ESTABLISHED,TIME_WAIT,CLOSE_WAIT. Biết state là biết đang ở giai đoạn nào. - Ghi nhớ WHY, không chỉ WHAT. Mỗi cơ chế TCP tồn tại vì một lý do cụ thể. Khi học slow start, hỏi "vì sao không gửi tối đa ngay?" — câu trả lời giúp bạn nhớ lâu hơn bất kỳ thuật ngữ nào.
- Liên hệ với bài toán công việc. Module 2 (HTTP) và module 3 (TLS) xây trực tiếp trên những cơ chế bài này. Mỗi khi gặp khái niệm HTTP/2 multiplexing hoặc TLS session resumption, nhớ lại "cái đó giải quyết vấn đề TCP nào mình vừa học."
Bài tiếp theo: TCP 3-way handshake — bắt gói thật bằng Wireshark
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