Internet hoạt động thế nào? Hành trình của một trang web

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

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 là gì?

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.

Hành trình của một yêu cầu

Giả sử bạn truy cập một địa chỉ như codebem.com:

  1. Tra địa chỉ (DNS): máy tính hỏi hệ thống DNS để đổi tên miền thành địa chỉ IP số, giống tra danh bạ.
  2. Thiết lập kết nối: trình duyệt mở kết nối đến máy chủ tại địa chỉ IP đó, thường qua TCP và mã hóa bằng TLS nếu là HTTPS.
  3. Gửi yêu cầu HTTP: trình duyệt hỏi "cho tôi trang chủ".
  4. Máy chủ xử lý: đọc file hoặc chạy code, truy vấn cơ sở dữ liệu, tạo ra nội dung.
  5. Trả phản hồi: HTML, CSS, JavaScript, ảnh được gửi về.
  6. Trình duyệt hiển thị: dựng trang và có thể gửi thêm yêu cầu cho ảnh, font, dữ liệu.

Gói tin và định tuyến

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.com

Kế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.

Các lớp giao thức

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ớpNhiệm vụVí dụ
Ứng dụngQuy định nội dung trao đổiHTTP, 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 đườngIP
Liên kếtTruyề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.

Ai tham gia vào chuỗi này?

  • Nhà cung cấp dịch vụ Internet (ISP) kết nối nhà bạn với mạng lớn.
  • Trung tâm dữ liệu chứa các máy chủ chạy website, ứng dụng.
  • CDN đặt bản sao nội dung ở nhiều nơi để người dùng tải từ máy chủ gần nhất, giúp nhanh hơn.

Thử tự gửi một yêu cầu

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.

Quan sát bằng công cụ của trình duyệt

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:

  • Danh sách mọi yêu cầu: trang HTML, file CSS, JavaScript, ảnh, font.
  • Mã trạng thái từng yêu cầu (200, 304, 404...).
  • Thời gian chờ, thời gian tải của từng tài nguyên.
  • Header của yêu cầu và phản hồi.

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.com

Kế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.

Kết luận

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ế.

author_photo
Nguyễn Đình Cường

0 comment