Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Khi bạn gõ địa chỉ một trang web và bấm Enter, chỉ vài trăm mili giây sau trang đã hiện ra, dù máy chủ có thể ở bên kia đại dương. Phía sau là cả một hệ thống phối hợp tinh vi. Hãy theo dõi hành trình đó từng bước.
Internet không phải một thứ duy nhất mà là mạng của các mạng: hàng triệu mạng nhỏ (nhà bạn, công ty, trường học, nhà mạng) kết nối với nhau bằng cáp quang, cáp biển và sóng vô tuyến, tuân theo cùng bộ quy tắc giao tiếp. Cần phân biệt: Internet là hạ tầng, còn World Wide Web (web) chỉ là một dịch vụ chạy trên Internet, cùng với email, game online, gọi video.
Giả sử bạn truy cập một địa chỉ như codebem.com:
Dữ liệu không đi một mạch mà được cắt thành nhiều gói tin (packet) nhỏ, mỗi gói mang địa chỉ nguồn và đích. Các gói có thể đi theo những đường khác nhau qua nhiều router, thiết bị chỉ đường ở mỗi ngã rẽ. Đến nơi, chúng được ghép lại đúng thứ tự. Nhờ vậy nếu một tuyến bị đứt, dữ liệu vẫn có thể đi đường vòng, và nhiều người dùng chung hạ tầng hiệu quả.
Bạn có thể xem đường đi các gói tin bằng lệnh sau trên dòng lệnh:
# Windows
tracert codebem.com
# macOS / Linux
traceroute codebem.comKết quả liệt kê các chặng (hop) mà dữ liệu đi qua kèm thời gian phản hồi.
Việc truyền thông được chia thành nhiều lớp, mỗi lớp lo một nhiệm vụ:
| Lớp | Nhiệm vụ | Ví dụ |
|---|---|---|
| Ứng dụng | Quy định nội dung trao đổi | HTTP, HTTPS, SMTP |
| Vận chuyển | Đảm bảo gửi đủ, đúng thứ tự (hoặc nhanh nhưng không đảm bảo) | TCP, UDP |
| Mạng | Định địa chỉ và tìm đường | IP |
| Liên kết | Truyền trên đường vật lý | Wi-Fi, Ethernet |
TCP đảm bảo độ tin cậy nên hợp với duyệt web, còn UDP gửi nhanh không đảm bảo nên hợp với cuộc gọi video và game thời gian thực.
import urllib.request
with urllib.request.urlopen("https://example.com") as res:
print(res.status) # 200
print(res.headers["Content-Type"])
print(res.read()[:60])Ba dòng code trên làm đúng việc của trình duyệt, chỉ là không dựng giao diện. Mã trạng thái 200 nghĩa là thành công.
Bạn không cần công cụ đặc biệt để thấy hành trình trên. Mở DevTools bằng F12, chọn tab Network, rồi tải lại một trang bất kỳ. Bạn sẽ thấy:
Một trang web thông thường tạo ra hàng chục yêu cầu, không phải một. Đó là lý do việc giảm số yêu cầu, nén ảnh và dùng cache giúp trang nhanh hơn rõ rệt.
Bạn cũng có thể kiểm tra kết nối cơ bản bằng lệnh ping:
ping example.comKết quả cho biết có thể kết nối được không và thời gian phản hồi trung bình tính bằng mili giây (độ trễ). Nếu ping báo không tìm thấy tên miền, vấn đề nằm ở DNS; nếu tìm thấy nhưng không có phản hồi, vấn đề có thể ở đường truyền hoặc máy chủ chặn ping.
Từ tra DNS, bắt tay kết nối, gửi gói tin qua router đến máy chủ rồi nhận phản hồi, mỗi lần mở một trang web là một chuỗi phối hợp nhịp nhàng. Hiểu sơ đồ này giúp bạn gỡ lỗi mạng, tối ưu tốc độ và học web backend dễ dàng hơn. Bài kế tiếp nên tìm hiểu kỹ hơn về DNS và địa chỉ IP.
Muốn học bài bản và có người hướng dẫn? Hãy xem các khóa học trên codebem.com để đi từ nền tảng đến dự án thực tế.
Nguyễn Đình Cường
0 comment