Mạng 03/09/2026 9 phút

Vì sao máy chủ root DNS gần như không bao giờ bị hỏi tới, dù cả thế giới tra tên mỗi giây

Một tra cứu nguội đi ba vòng — root, TLD, thẩm quyền, mỗi vòng một khứ hồi (~75ms). Nhưng lần thứ hai 0 vòng, và một tên khác cùng đuôi chỉ 2 vòng vì chuỗi ủy quyền đã đệm. Đó là lý do root/TLD toàn cầu hầu như rảnh rỗi. Đo thật bằng cây DNS ba tầng tự dựng — kèm một bug gắn nhãn suýt qua mặt tôi.

Mạng 03/09/2026 9 phút

Một cái GET tưởng là một lần đi mạng — bắt gói ra mới thấy nó tốn 2 vòng và header nặng gấp đôi dữ liệu

Một GET trên kết nối mới tốn 2 vòng khứ hồi (bắt tay + trao đổi), HTTPS lần đầu tới 3; tái dùng kết nối còn 1. Và với thân 40 byte, riêng header response chiếm ~78%. Client tự viết của tôi báo request 72 byte — client kiểu trình duyệt là 524, gấp 7 lần. Đo thật bằng tcpdump.

Mạng 03/09/2026 9 phút

Keep-alive cắt 20 request từ 2360ms còn 1195ms — nhưng benchmark trên localhost sẽ bảo bạn nó vô dụng

Tái dùng một kết nối cho 20 request né được 19 lần bắt tay, nhanh gấp đôi trên đường RTT ~55ms (2360ms xuống 1195ms). Nhưng đúng phép đo đó trên localhost chỉ chênh 1ms — vì loopback giấu sạch mọi chi phí tính bằng RTT. Đo thật, và vì sao đừng bao giờ đánh giá keep-alive trên máy mình.

Mạng 03/09/2026 9 phút

Content-Length bắt client chờ 530ms mới thấy byte đầu; chunked cho thấy sau 105ms — trừ khi bạn dựng chunked sai

Với nội dung sinh dần, Content-Length buộc server sinh hết rồi mới gửi được (byte đầu ~530ms), còn chunked stream từng khối (~105ms) — nhanh gấp 5 lần tới byte đầu. Nhưng dán đúng header mà vẫn buffer hết thì streaming bốc hơi hoàn toàn. Đo thật, kèm hợp đồng ba bên của streaming.

Mạng 03/09/2026 9 phút

gzip ép JSON 20 KB còn 2,3 KB, Brotli còn 1 KB — nhưng nén nhầm thứ lại làm phình thêm và đốt CPU

Văn bản co lại 88-95% nhờ nén, gần như miễn phí. Nhưng nén dữ liệu ngẫu nhiên (ảnh, video đã nén) chỉ phình thêm byte, và nén payload tí xíu còn to hơn bản gốc. Cộng thêm một phép so gzip-vs-Brotli thiếu công bằng suýt lừa tôi. Đo thật cả hai bộ nén ở nhiều mức.

Mạng 03/09/2026 8 phút

56 KB co xuống 152 byte nhờ một dòng 304 — trừ khi ETag của bạn tính sai, và nó hỏng không một tiếng kêu

Một lần revalidate với ETag khớp biến response 56 KB thành 152 byte — tiết kiệm hơn 99% băng thông. Nhưng một ETag đổi mỗi lần (bug rất phổ biến) biến mọi 304 thành 200, đốt lại toàn bộ băng thông mà trang vẫn chạy đúng, test vẫn xanh, không lỗi nào báo. Đo thật bằng byte trên dây.