CÁCH HOẠT ĐỘNG CỦA MỘT WEBSITE TỪ CLIENT ĐẾN SERVER

Latest Comments

CÁCH HOẠT ĐỘNG CỦA MỘT WEBSITE TỪ CLIENT ĐẾN SERVER


Thông tin metadata

  • Người thực hiện: [NGUYỄN PHẠM TUYÊN]
  • Thời gian thực hiện: [01/12/2025] – [02/12/2025]
  • Người hướng dẫn hoặc cộng tác: [Tech Lead Trần Thanh Vượt]

1. Mục đích của nghiên cứu

  • Làm rõ các khái niệm cơ bản: OSI, packet, protocol: DNS, HTTP.
  • Viết nghiên cứu nhằm tìm hiểu chi tiết cách hoạt động của một Website từ (Client đến server) trên nền các kiến thức đó.
  • Kết quả mong đợi: xây dựng sơ đồ minh họa và mô tả chi tiết từng bước.

2. Tổng quan

2.1. Khái niệm Mô hình OSI (Open Systems Interconnection)

Mô hình OSI (Open Systems Interconnection) là một khung tham chiếu chuẩn hóa quốc tế do Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) phát triển, dùng để mô tả cách các hệ thống mạng máy tính giao tiếp với nhau, chia quá trình truyền thông mạng thành 7 tầng riêng biệt để chuẩn hóa và đơn giản hóa việc giao tiếp giữa các hệ thống mạng.

  • Ví dụ tình huống thực tế: Giả sử bạn đang dùng điện thoại để gọi video cho bạn bè qua Zalo. Quá trình này có thể được diễn giải theo mô hình OSI như sau:
  • Khi bạn nhấn nút gọi video, Zalo (tầng 7) gửi yêu cầu đến máy bạn bè.- Dữ liệu hình ảnh và âm thanh được mã hóa (tầng 6), sau đó truyền đi qua mạng.
  • Phiên gọi được duy trì (tầng 5), đảm bảo hai bên kết nối liên tục.
  • Dữ liệu được chia nhỏ thành gói tin UDP (tầng 4), gửi đi nhanh chóng.
  • Các gói tin được định tuyến qua Internet (tầng 3), đóng gói thành khung (tầng 2), và cuối cùng truyền đi dưới dạng tín hiệu (tầng 1).

2.2.1 Chức năng các tầng trong mô hình OSI

Tầng 7: Tầng ứng dụng (Application Layer): Tầng 7 là tầng gần nhất với người dùng, cung cấp giao diện để các ứng dụng người dùng truy cập vào các dịch vụ mạng (ví dụ: trình duyệt web, ứng dụng email, phần mềm chat). Tầng này không phải là bản thân ứng dụng, mà là các giao thức mà ứng dụng sử dụng để giao tiếp.

  • Ví dụ giao thức:
    • HTTP (HyperText Transfer Protocol): Truy cập web.
    • HTTPS (HTTP Secure): Truy cập web an toàn (có mã hóa).
    • FTP (File Transfer Protocol): Truyền tải file.
    • SMTP (Simple Mail Transfer Protocol): Gửi email.
    • POP3 (Post Office Protocol version 3) / IMAP (Internet Message Access Protocol): Nhận email.
    • DNS (Domain Name System): Phân giải tên miền (chuyển đổi tên miền dễ nhớ thành địa chỉ IP).

Tầng 6: Tầng trình bày (Presentation Layer): Tầng 6 này hoạt động như một “phiên dịch viên” của mạng, đảm bảo dữ liệu từ Tầng Ứng dụng của một hệ thống có thể được đọc và hiểu bởi tầng ứng dụng của hệ thống khác. Các chức năng chính bao gồm:

  • Định dạng dữ liệu (Data Formatting/Translation): Chuyển đổi dữ liệu sang một định dạng chung mà mạng có thể hiểu.
  • Mã hóa và giải mã (Encryption & Decryption): Bảo vệ tính bí mật của dữ liệu truyền đi, ví dụ mã hóa dữ liệu nhạy cảm (WPA).
  • Nén và giải nén (Compression & Decompression): Giảm kích thước dữ liệu để truyền tải nhanh hơn và tiết kiệm băng thông.

Tầng 5: Tầng phiên (Session Layer): Đây là lớp chịu trách nhiệm mở và đóng giao tiếp giữa hai thiết bị. Khoảng thời gian từ khi giao tiếp được mở đến khi đóng được gọi là phiên. Lớp phiên đảm bảo rằng phiên mở đủ lâu để truyền tất cả dữ liệu được trao đổi, sau đó nhanh chóng đóng phiên để tránh lãng phí tài nguyên. Các chức năng quan trọng của tầng Phiên bao gồm:

  • Thiết lập phiên: Tạo ra một kết nối logic.
  • Duy trì phiên: Giữ cho kết nối hoạt động.
  • Đồng bộ hóa: Đặt các điểm kiểm tra (checkpoint) trong luồng dữ liệu. Nếu truyền file lớn bị lỗi, có thể khôi phục từ checkpoint gần nhất.
  • Kết thúc phiên: Đóng kết nối một cách có trật tự.

Tầng 4: Tầng vận chuyển (Transport Layer): Tầng vận chuyển, tầng thứ 4 chịu trách nhiệm đảm bảo dữ liệu truyền đi là đáng tin cậy, tạo điều kiện cho giao tiếp hiệu quả giữa các ứng dụng, bất kể mạng hoặc thiết bị sử dụng. Điều này bao gồm việc lấy dữ liệu từ lớp phiên và chia nó thành các khối được gọi là phân đoạn trước khi gửi nó đến lớp 3. Tại thiết bị đích, Tầng vận chuyển phụ trách việc tái hợp các phân đoạn thành dữ liệu mà lớp phiên có thể sử dụng. Các chức năng chính:

  • Phân đoạn và tái lắp ráp (Segmentation & Reassembly): Chia dữ liệu lớn thành các đoạn (segment) nhỏ hơn và tập hợp lại chúng theo đúng thứ tự ở phía nhận.
  • Đánh địa chỉ cổng (Port Addressing): Sử dụng port number để xác định ứng dụng cụ thể nào trên máy đích sẽ nhận dữ liệu. Ví dụ: Port 80 (HTTP), Port 443 (HTTPS).
  • Kiểm soát kết nối: Cung cấp dịch vụ TCP: hướng kết nối (connection-oriented) đảm bảo dữ liệu đến đúng, đủ, theo thứ tự hoặc UDP: phi kết nối (connectionless), nhanh nhưng không đảm bảo tin cậy.
  • Kiểm soát luồng (Flow Control): Điều chỉnh tốc độ truyền dữ liệu để tránh làm quá tải máy nhận. TCP dùng cơ chế window size để kiểm soát lượng dữ liệu gửi đi.
  • Kiểm soát lỗi (Error Control): Đảm bảo dữ liệu không bị lỗi, đầy đủ và đúng thứ tự (chủ yếu với TCP).
  • Multiplexing/Demultiplexing (Đa kết nối): Cho phép nhiều ứng dụng cùng lúc sử dụng mạng. Transport Layer phân biệt các luồng dữ liệu bằng port number, đảm bảo dữ liệu đến đúng ứng dụng.
  • Ví dụ:
    • TCP: Hướng kết nối, đảm bảo độ tin cậy, kiểm soát lỗi và luồng. Dùng cho duyệt web HTTP/HTTPS, email SMTP, truyền file FTP.
    • UDP: Phi kết nối, không đảm bảo độ tin cậy, nhanh và nhẹ. Dùng cho streaming video, game online, DNS.
TCP (Transmission Control Protocol)UDP (User Datagram Protocol)
Độ tin cậy cao (đảm bảo gửi, đúng thứ tự)Độ tin cậy thấp (không đảm bảo)
Chậm hơnNhanh hơn
Có thiết lập kết nối (bắt tay ba bước)Không thiết lập kết nối
Có kiểm soát luồng và lỗiKhông kiểm soát luồng, lỗi tối thiểu
Dùng cho Web (HTTP/S), Email, FTPDùng cho Streaming, Game, DNS, VoIP

Tầng 3: Tầng mạng (Network Layer): Tầng 3 chịu trách nhiệm chuyển các gói dữ liệu (packet) từ máy nguồn đến máy đích qua một hoặc nhiều mạng khác nhau (liên mạng – internetwork). Các chức năng chính:

  • Định địa chỉ logic: Sử dụng địa chỉ IP Subnet Mask (ví dụ: IPv4, IPv6) để xác định duy nhất máy gửi và máy nhận trên mạng.
  • Định tuyến (MPLS, SDN): Xác định đường đi tốt nhất cho các gói tin từ nguồn đến đích thông qua các thiết bị định tuyến (router). Router hoạt động ở tầng này.
  • Phân mảnh và tái lắp ráp gói tin: Nếu gói tin quá lớn so với MTU (Maximum Transmission Unit – đơn vị truyền tải tối đa) của một mạng, tầng mạng có thể chia nhỏ nó.
  • Ví dụ giao thức:
    – IP: Giao thức chính của tầng này.
    – ICMP: Dùng cho thông báo lỗi và chẩn đoán (ví dụ: lệnh ping).
    – Các giao thức định tuyến như OSPF, BGP (Border Gateway Protocol).

Tầng 2: Tầng liên kết dữ liệu (Data Link Layer): Tầng Liên kết dữ liệu, được đặt ở vị trí thứ hai trong mô hình OSI, có trách nhiệm xác định địa chỉ vật lý MAC Address và đảm bảo việc truyền dữ liệu an toàn qua các đường truyền vật lý.

  • Tầng này chia thành hai phân lớp con:
    • Lớp LLC (Logical Link Control): Quản lý các quy tắc truyền thông đồng bộ và không đồng bộ, kiểm tra tính toàn vẹn của dữ liệu và kiểm soát lỗi. Nhiệm vụ của nó là đảm bảo việc truyền thông tin một cách tin cậy giữa các điểm cuối trên cùng một mạng liên kết.
    • Lớp MAC (Media Access Control): Xác định cách truy cập vào phương tiện truyền thông chia sẻ, ví dụ như mạng LAN Ethernet. Nó phụ trách việc gán địa chỉ vật lý (MAC address) cho các thiết bị mạng và xử lý việc truyền dữ liệu giữa các thiết bị đầu cuối trên cùng một mạng.
  • Các nhiệm vụ quan trọng của Tầng Liên kết dữ liệu bao gồm:
    • Đóng gói dữ liệu: Tách dữ liệu từ tầng mạng thành các Frame nhỏ để chuyển qua đường truyền vật lý.
    • Định địa chỉ vật lý: Sử dụng địa chỉ MAC để xác định nguồn và đích của Frame dữ liệu.
    • Kiểm tra lỗi: Phát hiện và xử lý các vấn đề liên quan đến mất mát hoặc hỏng hóc dữ liệu ở tầng Vật lý.
    • Quản lý truy cập vào phương tiện truyền thông: Đảm bảo các quy tắc truy cập vào môi trường chia sẻ được quản lý một cách hiệu quả, tránh xung đột và đảm bảo hiệu suất truyền dữ liệu.
    • Tầng liên kết dữ liệu hoạt động tương tự như tầng mạng, với sự khác biệt là tầng này tạo điều kiện thuận lợi cho việc truyền dữ liệu giữa hai thiết bị trên cùng một mạng. Tầng liên kết dữ liệu nhận các gói từ tầng mạng và chia nhỏ chúng thành các Frame. Tương tự như tầng mạng, tầng liên kết dữ liệu cũng có trách nhiệm điều khiển luồng và xử lý lỗi trong giao tiếp nội mạng (Tầng vận chuyển chỉ đảm nhận vai trò điều khiển luồng và xử lý lỗi cho truyền thông giữa các mạng).

Tầng 1: Tầng vật lý (Physical Layer): Tầng 1 chịu trách nhiệm truyền tải luồng bit (0 và 1) thô qua một phương tiện truyền vật lý. Tầng vật lý đặt ở tầng thấp nhất trong mô hình OSI, có trách nhiệm đảm bảo việc truyền dữ liệu qua môi trường vật lý mà không quan tâm đến nội dung hay ý nghĩa của dữ liệu. Chức năng chính của nó là tạo ra một đường truyền vật lý ổn định và đáng tin cậy để các tầng cao hơn có thể gửi và nhận các gói tin dữ liệu. Chức năng của tầng Vật lý bao gồm:

  • Truyền dữ liệu: Chuyển đổi các bit thành tín hiệu vật lý để truyền qua các phương tiện truyền thông như cáp đồng trục, cáp xoắn đôi, cáp quang hoặc sóng vô tuyến. Tầng này xác định các quy tắc về tốc độ truyền, đồng bộ hóa, kích thước Frame dữ liệu, phạm vi tín hiệu và các thông số vật lý khác.
  • Điều khiển tín hiệu: Quản lý các tín hiệu điều khiển như tín hiệu báo động, tín hiệu đồng bộ, tín hiệu kiểm tra lỗi và tín hiệu điều chỉnh tốc độ truyền dữ liệu.
  • Định dạng dữ liệu: Tầng Vật lý quyết định cấu trúc và định dạng của dữ liệu trong từng bit, bao gồm các định dạng như NRZ (Non-Return-to-Zero), Manchester, AMI (Alternate Mark Inversion) và các phương pháp khác.
  • Mã hóa và giải mã: Thực hiện quá trình mã hóa và giải mã các tín hiệu để đảm bảo việc truyền dữ liệu được thực hiện một cách chính xác.
  • Ví dụ:
    – Cáp Ethernet (RJ45), cáp quang.
    – Tín hiệu điện áp trên dây dẫn.
    – Sóng Wi-Fi, Bluetooth.

2.2.2 Chức năng các tầng trong mô hình TCP/IP

Tầng 1: Tầng truy cập (Network Access Layer) tầng này có thể coi là một tầng riêng biệt hoặc cũng có thể tách nó thành 2 tầng vật lý và tầng liên két dữ liệu như trong mô hình OSI.

Nó được sử dụng để truyền gói tin từ tầng mạng đến các Host trong mạng.Các thiết bị vật lý như : Switch, cáp mạng, card mạng HBA-Host Bus Adapter là các thành phần truy cập.

Tầng 2: Tầng mạng (Internet Layer) trên mô hình TCP/IP có vai trò chính là giải quyết vấn đề dẫn đến các gói tin đi qua các mạng để đến đúng đích.

Tầng 3: Tầng vận chuyển (Transport Layer) đảm nhiệm việc phân nhỏ các gói tin có kích thước lớn khi gửi và tập hợp lại khi nhận, tính toàn vẹn cho dữ liệu (không lỗi, không mất, đúng thứ tự) là yếu tố được đảm bảo.

Nếu để ý thì bạn sẽ thất chức năng của tầng vận chuyển ở giao thức TCP/IP cũng giống với tầng vận chuyển của mô hình OSI.

Tầng 4: Tầng ứng dụng (Application Layer) là nơi các chương trình mạng như Web Browser,Mail User Agent làm việc để liên lạc giữa các node mạng.

Do mô hình TCP/IP không có tầng nào nằm giữa các tầng ứng dụng và tầng vận chuyển, nên tầng Application của TCP/IP bao gồm các giao thức hoạt động như tầng trình diễn và giao dịch trong OSI.

2.2.3 Sự khác biệt giữa Mô hình OSI và Mô hình TCP/IP

Hai mô hình OSI và TCP/IP là nền tảng quan trọng trong mạng máy tính, nhưng chúng có những điểm khác biệt đáng kể về cấu trúc, cách tiếp cận và ứng dụng thực tế.

  1. Cấu trúc tầng
    • Mô hình OSI: Gồm 7 tầng, từ tầng vật lý đến tầng ứng dụng, giúp phân chia rõ ràng các chức năng mạng.
    • Mô hình TCP/IP: Chỉ có 4 tầng, gộp các chức năng của OSI lại thành từng tầng lớn hơn, đơn giản hóa trong việc triển khai thực tế.
  2. Mục đích phát triển
    • OSI: Được phát triển như một mô hình lý thuyết để chuẩn hóa giao tiếp mạng, phù hợp cho việc giảng dạy và tìm hiểu về mạng.
    • TCP/IP: Được thiết kế để phục vụ cho mạng Internet, nhấn mạnh vào việc triển khai thực tế và hiệu quả trong truyền dữ liệu.
  3. Độ tin cậy và xử lý lỗi
    • OSI: Ít tập trung vào việc xử lý lỗi ở từng tầng, khiến các ứng dụng cần phải tự quản lý lỗi.
    • TCP/IP: Có cơ chế xử lý lỗi tích hợp, đặc biệt là giao thức TCP đảm bảo việc truyền dữ liệu tin cậy.
  4. Khả năng thay thế giao thức
    • OSI: Linh hoạt hơn trong việc thay thế hoặc cập nhật giao thức mà không ảnh hưởng đến toàn bộ mô hình.
    • TCP/IP: Khó thay thế giao thức vì các tầng được tích hợp chặt chẽ với nhau.
  5. Ứng dụng thực tế
    • OSI: Chủ yếu được dùng trong giáo dục và phân tích hệ thống mạng.
    • TCP/IP: Là tiêu chuẩn chính của mạng Internet và được áp dụng rộng rãi trong các mạng hiện đại.

2.2 Khái niệm về gói tin (Packet)

Đơn vị dữ liệu cơ bản trong mạng. Khi một thông điệp lớn (ví dụ: file, email, trang web) được gửi qua mạng, nó sẽ được chia nhỏ thành nhiều gói tin để dễ dàng truyền tải.

2.3 Khái niệm về giao thức (Protocol)

Protocol, hay còn gọi là Giao thức, là tập hợp các quy tắc và quy định giúp các thiết bị mạng như máy tính, máy chủ, và các thiết bị khác có thể giao tiếp với nhau. Nó xác định cách dữ liệu được định dạng, truyền và nhận để đảm bảo mọi thiết bị trong hệ thống có thể hiểu và trao đổi thông tin một cách thống nhất.

  • Ví dụ, giao thức TCP/IP là nền tảng cho Internet, giúp các máy tính trên mạng có thể kết nối và giao tiếp qua mạng toàn cầu. Ngoài ra, HTTP được sử dụng để truyền tải dữ liệu trên web, giúp bạn truy cập các trang web hàng ngày. Trong khi FTP hỗ trợ việc truyền tải tập tin giữa các máy chủ.
Nói đơn giản, nếu không có giao thức, các thiết bị sẽ không biết cách "nói chuyện" với nhau, và mạng internet như chúng ta biết sẽ không thể tồn tại.

2.4 Khái niệm về cổng (Port)

Port là giao thức bit 16 đứng đầu các tập tin thuộc hai giao thức UDP và TCP , ngoài ra, port còn được biết đến là cổng quy định đối với các gói dữ liệu được phân định. Để thiết bị của bạn có thể nhận và xuất tập tin thì phải cần đăng ký port – thuật toán đã được lập trình trước. Bên cạnh đó, port sẽ được quy đổi tương tự như bit của một mã dữ liệu bất kỳ. Hiểu đơn giản thì nó sẽ phân tích và quyết định việc dữ liệu nào được phép ra hoặc vào thiết bị tương tự như một người gác cổng cho toàn hệ thống máy tính.

2.4.1 Các loại port thông dụng hiện nay

Hiện nay, mỗi máy tính đều có thể sử dụng tối đa 65.535 port để phục vụ cho việc giao tiếp trong mạng. Khi tìm hiểu số port là gì, cần biết rằng các port này được chia thành 3 nhóm chính:

  • Well-Known Port (WKP): từ 0 đến 1023, thường được dùng cho các dịch vụ hệ thống quen thuộc như HTTP (port 80), HTTPS (port 443) hay SSH (port 22).
  • Registered Port (RP): từ 1024 đến 49.151, được đăng ký cho các ứng dụng hoặc dịch vụ nhất định.
  • Dynamic/Private Port (D/PP): từ 49.152 đến 65.535, thường được sử dụng tạm thời cho các kết nối động.

2.4.2 Công dụng của port là gì?

  1. Khả năng chọn lọc tin: Khi đăng ký port, nó sẽ như một công cụ giúp bạn kiểm soát dữ liệu đi vào máy. Port sẽ được lập trình để lựa chọn loại tập tin nào được phép nhập vào thiết bị và được phép xuất hiện trên hệ thống máy tính của bạn.
  2. Bảo vệ máy tính trước nguy cơ xâm hại
    • Phát hiện và cảnh báo sớm
    • Ngăn chặn và loại bỏ dữ liệu độc hại
    • Cơ chế kiểm định dữ liệu
  3. Địa chỉ nhận diện tập tin, dữ liệu
  4. Một số công dụng khác của port
    • Kết nối vật lý
    • Truyền dữ liệu
    • Sạc và nguồn điện
    • Kết nối mạng
    • Giao tiếp âm thanh và hình ảnh

2.5 Tìm hiểu về DNS (Domain Name System)

2.5.1 Khái niệm DNS

Giải thích đơn giản dễ hiểu DNS giống như cuốn danh bạ của Internet. Là hệ thống phân giải tên miền cho phép thiết lập tương ứng giữa địa chỉ IP và tên miền trên internet. Khi người dùng nhập địa chỉ trang web trên trình duyệt, DNS sẽ tìm địa chỉ IP của máy chủ chứa trang web và trả về kết quả hiển thị tương ứng của trang web cần tìm. Do đó, thay vì phải ghi nhớ địa chỉ IP phức tạp, người dùng có thể dễ dàng truy cập các trang web thông qua tên miền. Ngoài ra, DNS cũng giúp tăng tính linh hoạt và quản lý hiệu quả hơn cho hệ thống mạng, cung cấp tính bảo mật và tăng tốc độ truy cập internet.

  • Các loại bản ghi của DNS: Hiện nay, có bảy loại bản ghi của DNS, cụ thể được trình bày dưới đây
  • A Record: Đây là bản ghi DNS đơn giản nhất, được sử dụng phổ biến, rộng rãi nhất trên thị trường, dùng để trỏ tên website tới một địa chỉ IP cụ thể. Hơn nữa, với bản ghi A Record, bạn hoàn toàn có thể một tên mới dễ dàng, thêm Time to Live hay còn gọi là thời gian tự động tái lại bản ghi và Points to, tức là chỉ tới IP mong muốn.
  • CNAME Record: CNAME Record là loại bản ghi giữ vai trò đặt tên cho một tên hoặc nhiều tên khác nhau cho miền chính. Bạn có thể tạo một tên mới bằng cách điều chỉnh trỏ chuột tới tên gốc và đặt TTL.
  • MX Record: MX Record là loại bản ghi dùng để chỉ định Server quản lý các dịch vụ Email của các tên miền theo đó. Cụ thể, bạn có thể trỏ tên miền đến Mail server hay đặt mức độ ưu tiên, thậm chí là TTL.
  • TXT Record: TXT Record là bản ghi  với chức năng chứa các thông tin định dạng văn bản của tên miền. Tại bản ghi này, bạn có thể thêm host mới, các giá trị TXT, TTL, Points to.
  • AAAA Record: Giống với A Record. Điểm khác biệt của , AAAA Record chính là được sử dụng để trỏ domain đến 1 địa chỉ IPV6 Address. Tại đây, có thể thêm host mới, IPv6, TTL
  • DNS Record: Đây là DNS Server Records của tên miền, tại đây bạn được phép chỉ định Name Server cho từng tên miền phụ. Ngoài ra, còn có thể tạo host mới, tên name server hay TTL.
  • SRV Record: SRV Record được biết đến là bản ghi đặc biệt trong Domain Name System,  được dùng để xác định chính xác dịch vụ nào, chạy port nào. Ngoài ra, bạn hoàn toàn có thể bổ sung thêm Priority, Name, Port, Points to,Weight, TTL.

2.5.2 DNS 8.8.8.8 trên máy tính cá nhân khai báo có ý nghĩa gì ?

  • 8.8.8.8 là địa chỉ IP của một máy chủ DNS công cộng do Google cung cấp miễn phí, tốc độ cao và đáng tin cậy.
  • Khi bạn khai báo địa chỉ này trong phần cấu hình mạng (Network Settings), nghĩa là thiết bị của bạn sẽ gửi yêu cầu phân giải tên miền (ví dụ: facebook.com → địa chỉ IP) đến máy chủ DNS của Google thay vì dùng DNS mặc định của nhà cung cấp Internet (ISP).
  • Trường hợp nhiều DNS được khai báo
    • Thông thường, trong cấu hình mạng bạn có thể khai báo Primary DNS và Secondary DNS (ví dụ: 1.1.1.1 và 8.8.8.8).
    • Cách hoạt động:
      • Máy sẽ ưu tiên dùng Primary DNS.
      • Nếu Primary DNS không phản hồi hoặc bị lỗi, hệ thống mới thử sang Secondary DNS. Nếu DNS của ISP không resolve được một tên miền nhưng vẫn online, thì máy sẽ thử sang DNS thứ hai (ví dụ 8.8.8.8).
      • Đây là cơ chế dự phòng (fallback) chứ không phải “song song” hay “tự động chuyển tiếp khi không resolve được một tên miền cụ thể”.
  • Tác dụng khi khai báo
    • Tốc độ và độ tin cậy: DNS của Google thường có hạ tầng mạnh, phản hồi nhanh và ổn định.
    • Khả năng truy cập: Giúp tránh tình trạng DNS của ISP bị lỗi hoặc chậm.
    • Bảo mật và minh bạch hơn: Google DNS có cơ chế chống cache poisoning và thường cập nhật nhanh các bản ghi.
    • Phổ biến toàn cầu: Vì là dịch vụ công cộng, bạn có thể dùng ở bất kỳ đâu, không phụ thuộc vào ISP.

2.5.3 Quy trình phân giải tên miền:

Bước 1: Client Request – Bạn nhập tên miền vào trình duyệt

  • Khi bạn nhập một tên miền (ví dụ vinahost.vn) vào trình duyệt hoặc ứng dụng, thiết bị của bạn sẽ kiểm tra bộ nhớ đệm DNS cục bộ trên hệ điều hành hoặc trình duyệt. Nếu bạn đã từng truy cập tên miền đó gần đây và bản ghi DNS còn hiệu lực (chưa hết thời gian TTL), thiết bị sẽ trả lại ngay địa chỉ IP tương ứng, không cần gửi truy vấn ra ngoài.
  • Nếu bản ghi không có hoặc đã hết hạn, thiết bị sẽ gửi yêu cầu phân giải DNS đến máy chủ DNS Resolver mà bạn đã cấu hình (thường là DNS của nhà cung cấp mạng hoặc các máy chủ DNS công cộng như 8.8.8.8 của Google hoặc 1.1.1.1 của Cloudflare).

Bước 2: DNS Cache Check – Resolver kiểm tra cache nội bộ của mình

  • DNS Resolver (thường là máy chủ DNS của ISP hoặc dịch vụ DNS bạn đang dùng) tiếp nhận yêu cầu phân giải từ thiết bị và bắt đầu kiểm tra cache DNS của chính nó: – Nếu resolver đã lưu bản ghi IP tương ứng với tên miền này và TTL còn hiệu lực, nó sẽ trả ngay địa chỉ IP về cho thiết bị.
  • Nếu chưa có thông tin trong cache, Resolver sẽ bắt đầu truy vấn ra ngoài theo cơ chế phân giải phân cấp để đi tìm bản ghi IP.

Bước 3: DNS Resolver – Bắt đầu tìm kiếm nếu chưa có trong cache

  • DNS Resolver thực hiện chuỗi truy vấn đệ quy đến các máy chủ DNS phân cấp để truy ra địa chỉ IP chính xác:
  • Trước hết, nó có thể kiểm tra cache về máy chủ cấp cao (.vn, .com…) nếu đã từng hỏi trước. Nếu không, nó sẽ truy vấn máy chủ gốc (Root Server) để lấy danh sách máy chủ TLD tương ứng.
  • Sau đó, Resolver sẽ lần lượt truy cập qua từng tầng máy chủ để tiếp tục truy vấn theo thứ tự: Root Server → TLD Server → Authoritative Nameserver.

Bước 4: Root Server – Trỏ đến máy chủ cấp cao TLD phù hợp

  • Máy chủ DNS gốc (Root Server) là cấp cao nhất trong hệ thống DNS. Khi được hỏi, Root Server không trả địa chỉ IP của website mà sẽ trả lại địa chỉ của máy chủ TLD phù hợp với phần đuôi tên miền (ví dụ .vn trong vinahost.vn).
  • Ví dụ: Đối với vinahost.vn, Root Server sẽ cung cấp thông tin về máy chủ TLD cho .vn, để Resolver tiếp tục truy vấn bước tiếp theo.

Bước 5: TLD Server – Truy ra phần mở rộng tên miền đúng (.vn, .com…)

  • Resolver sau đó gửi truy vấn đến máy chủ TLD vừa nhận được từ Root Server. Máy chủ TLD này phụ trách các tên miền có đuôi giống nhau (ví dụ .vn, .com, .net).
  • Máy chủ TLD sẽ không có địa chỉ IP của website cụ thể, nhưng sẽ chỉ định máy chủ tên miền có thẩm quyền (Authoritative Nameserver) phụ trách cho tên miền đầy đủ – trong trường hợp này là vinahost.vn.

Bước 6: Authoritative Nameserver – Máy chủ biết chính xác địa chỉ IP
DNS Resolver cuối cùng sẽ truy vấn máy chủ tên miền có thẩm quyền. Đây là nơi lưu trữ các bản ghi DNS chính thức, như bản ghi A (chứa địa chỉ IP).
Resolver sẽ hỏi máy chủ này để lấy địa chỉ IP chính xác của vinahost.vn. Nếu đã từng hỏi subdomain/blog của tên miền này trước đó, Resolver cũng sẽ kiểm tra cache trước khi truy vấn.

Bước 7: Back to Client – Resolver trả IP về và trang web được tải
Sau khi có được địa chỉ IP từ máy chủ có thẩm quyền, DNS Resolver sẽ thực hiện hai việc cùng lúc:
– Trả lại địa chỉ IP về cho thiết bị của người dùng.
Lưu lại địa chỉ IP và TTL trong bộ nhớ đệm của resolver để dùng cho các truy vấn sau.
Thiết bị của bạn cũng lưu địa chỉ IP đó trong cache cục bộ (tùy vào TTL) và sử dụng để thiết lập kết nối trực tiếp tới máy chủ web của vinahost.vn để tải nội dung.

Tóm lại: User → Local DNS → Root → TLD → Authoritative → IP trả về → User truy cập web.

2.5.4 Giá trị TTL và cơ chế cache:

TTL (Time To Live) là thời gian mà bản ghi DNS được lưu trong bộ nhớ đệm.

  • TTL ngắn cho phép cập nhật địa chỉ IP nhanh hơn nếu tên miền chuyển sang server mới, tránh sai sót khi IP thay đổi.
  • TTL dài giúp tăng tốc độ phân giải và giảm số truy vấn, nhưng có thể gây ra việc cache sai IP nếu IP bị đổi mà chưa cập nhật.
    • Cache DNS là bộ nhớ tạm thời mà hệ điều hành hoặc ứng dụng (trình duyệt, phần mềm) lưu lại kết quả phân giải tên miền thành địa chỉ IP.
    • Mục đích: giúp tăng tốc độ truy cập web. Khi bạn gõ lại một tên miền đã từng truy cập, thiết bị không cần hỏi máy chủ DNS bên ngoài nữa mà lấy ngay kết quả từ cache.
    • Ví dụ: Nếu bạn vừa vào google.com, địa chỉ IP của Google sẽ được lưu trong cache. Lần sau gõ lại, trình duyệt sẽ dùng ngay IP này thay vì gửi yêu cầu ra ngoài.

Cache DNS nằm ở đâu ?

  • Trong hệ điều hành: Windows, macOS, Linux đều có một DNS Client Service hoặc cơ chế tương tự để lưu cache ở mức hệ thống. Bạn có thể kiểm tra hoặc xóa cache này bằng lệnh (ví dụ trên Windows: ipconfig /displaydns để xem, ipconfig /flushdns để xóa).
  • Trong trình duyệt: Chrome, Firefox, Edge… cũng tự duy trì cache DNS riêng để tăng tốc độ duyệt web. Nghĩa là có thể tồn tại song song cả cache ở hệ điều hành và cache ở trình duyệt.
  • Trong router hoặc thiết bị mạng: Một số router cũng lưu cache DNS để giảm tải cho máy chủ DNS bên ngoài.

2.5.6 Máy chủ DNS là gì?

Máy chủ DNS: Máy chủ DNS là các máy chủ chuyên dụng có nhiệm vụ lưu trữ các bản ghi DNS và phản hồi các yêu cầu phân giải tên miền từ người dùng hoặc các máy chủ DNS khác. Có nhiều loại máy chủ DNS tham gia vào quá trình phân giải, mỗi loại đóng một vai trò cụ thể:

  • DNS Resolver: Là máy chủ DNS mà thiết bị của bạn trực tiếp gửi yêu cầu phân giải đến đầu tiên, có nhiệm vụ truy lùng và tìm ra địa chỉ IP cho yêu cầu đó. DNS Resolver thường được cung cấp bởi Nhà cung cấp Dịch vụ Internet ISP hoặc là các máy chủ DNS công cộng (như Google DNS, Cloudflare DNS). Chúng sẽ kiểm tra bộ nhớ đệm của mình trước, nếu không có sẽ thực hiện truy vấn đệ quy đến các máy chủ DNS khác.
  • Root Name Servers: Là thành phần cao nhất trong hệ thống phân cấp của DNS. Có một số lượng giới hạn các cụm máy chủ DNS gốc trên toàn thế giới. Khi một DNS Resolver không tìm thấy thông tin trong cache thì sẽ hỏi Root Name Server để biết máy chủ TLD nào quản lý phần đuôi tên miền được yêu cầu (ví dụ: .com, .vn).
  • TLD Name Servers: Các máy chủ này quản lý thông tin cho các tên miền cấp cao nhất cụ thể (Ví dụ: máy chủ cho .com, máy chủ cho .org, máy chủ cho .vn). Sau khi nhận được thông tin từ Root Name Server, DNS Resolver sẽ hỏi TLD Name Server để biết Authoritative Name Server nào quản lý tên miền cụ thể đang được truy vấn.
  • Authoritative Name Server: Là điểm cuối cùng trong chuỗi truy vấn DNS, nơi lưu trữ thông tin chính xác và đầy đủ về các bản ghi DNS của một tên miền cụ thể. Khi DNS Resolver hỏi Authoritative Name Server, sẽ nhận được câu trả lời cuối cùng để trả về cho thiết bị của người dùng.

2.5.7 DNS sử dụng UDP port 53, tình huống kỹ thuật nào sử dụng TCP không?

DNS mặc định dùng UDP port 53 vì UDP nhanh, không cần bắt tay kết nối và đủ cho các truy vấn thông thường. Nhưng trong nhiều tình huống kỹ thuật, DNS bắt buộc phải chuyển sang TCP.
Sử dụng TCP port 53 gồm các trường hợp:
1. Phản hồi bị cắt ngắn (bit TC – Truncated bit)

  • DNS qua UDP chỉ gửi được gói có kích thước giới hạn:
    • Truyền thống: 512 byte
      – Hiện đại (EDNS0): lớn hơn, thường 1232–4096 byte tùy hệ thống
    • Khi phản hồi DNS quá lớn (ví dụ chứa nhiều bản ghi, bản ghi DNSSEC…), máy chủ đặt bit TC = 1 trong phản hồi UDP.
    • Khi thấy TC=1, trình resolver sẽ chuyển truy vấn sang TCP để nhận bản trả lời đầy đủ.
    ** Đây là lý do phổ biến nhất DNS dùng TCP.** 2. Truyền vùng DNS (Zone Transfer – AXFR / IXFR)
    Khi máy chủ DNS Secondary cần sao chép zone từ DNS Primary:
  • AXFR: truyền toàn bộ zone file
  • IXFR: truyền phần thay đổi
    Các bản ghi trong zone rất lớn → cần truyền theo thứ tự → cần độ tin cậy cao.

Vì vậy AXFR/IXFR luôn dùng TCP, không bao giờ dùng UDP.

3. DNSSEC tạo phản hồi lớn → phải dùng TCP
DNSSEC thêm các bản ghi:

  • RRSIG
  • DNSKEY
  • DS
  • NSEC/NSEC3
    Những bản ghi này rất nặng -> phản hồi rất dài -> thường vượt quá kích thước UDP.
    Khi phản hồi DNSSEC -> kích thước cho phép -> DNS phải chuyển sang TCP.

4. Khi UDP bị chặn, bị rate-limit hoặc bị phá bởi thiết bị trung gian
Một số mạng:

  • Chặn UDP/53 để giảm DDoS amplification
  • Giới hạn kích thước gói UDP
  • Làm hỏng phân mảnh IP -> gói UDP lớn bị drop
    Trong trường hợp đó: Trình resolver phải chuyển sang TCP để đảm bảo truy vấn thành công.

5. Khi có vấn đề phân mảnh IP (IP fragmentation)
Gói DNS lớn gửi qua UDP có thể bị phân mảnh.
Nhiều firewall hoặc router drop các gói phân mảnh → phản hồi không về đến client.
Resolver tự chuyển sang TCP để tránh phân mảnh hoàn toàn.\

6. DNS-over-TLS (DoT), DNS-over-HTTPS (DoH), DNS-over-QUIC
Các giao thức DNS bảo mật hiện đại dùng các tầng truyền tải khác nhau:
DoT -> TLS-over-TCP
DoH -> HTTPS (TCP hoặc QUIC)
DoQ -> QUIC (UDP)
Vì yêu cầu mã hóa / phiên bảo mật → DoT và DoH mặc định sử dụng TCP.

2.6 Yếu tố ảnh hưởng tốc độ website & cách kiểm tra

Các yếu tố chính:

  • DNS lookup time: Thời gian phân giải tên miền. Hệ thống phân giải DNS tên miền ảnh hưởng khá tới tổng thời gian load web, tốc độ phân giải DNS dưới 100ms là tốt.
  • Network latency: Khoảng cách địa lý, chất lượng đường truyền. Việc chúng ta thuê một hosting đặt ở nước ngoài, thì tốc độ tải dữ liệu lên mất không ít thời gian. Điều đó không có nghĩa là hosting nước ngoài kém chất lượng, mà dịch vụ rất tốt. Nhưng đặt hosting ở xa, việc chuyền dữ liều còn phụ thuộc vào đường truyền internet. Yếu tố này củng ảnh hưởng rất nhiều việc load website và chất lượng seo của công ty. Một vấn đề liền quan tới hosting về version của php (wordpress).
  • Server response time: Tốc độ xử lý của web server (Nginx/Apache).
    • Cấu hình tối ưu (worker processes, keep-alive, caching).
    • Chưa có load balancer, scale in/out đều ảnh hưởng.
    • Reverse proxy có thêm bước chuyển tiếp, xử lý các tham số chưa tối ưu, nếu không tối ưu sẽ tăng độ trễ.
  • Application performance:
    • Application layer (PHP, Node.js, v.v.): Code logic phức tạp, nhiều vòng lặp hoặc xử lý nặng dẫn đến load chậm hoặc Framework chưa tối ưu.
    • Database layer (MySQL, PostgreSQL): Truy vấn SQL chưa tối ưu (thiếu index, join phức tạp). Kích thước dữ liệu lớn, nhiều request đồng thời.
    • Content size: Hình ảnh, JS, CSS nặng, Widgets hay Plugins, Quảng cáo động,… chưa được tối ưu hoặc lạm dụng quá mức cho phép. Ngoài ra không tương thích đa thiết bị có thể mất rất nhiều thời gian trong thực hiện các yêu cầu của người dùng trên trang.
    • Third-party scripts: Các script bên ngoài (Google Ads, Facebook Pixel, Analytics, Google Map, Chatbox AI, Captcha, các extensions khác …) cũng có thể kéo dài thời gian load.
    • Caching/CDN: Có CDN hay không, có cache hay không. Bộ nhớ đệm được biết là công cụ rất tốt để cải thiện hiệu suất của các trang web, bộ nhớ đệm cho phép bạn lưu trữ các điểm dữ liệu được sử dụng thường xuyên trong bộ nhớ được lưu trong bộ nhớ cache. Để bất kỳ yêu cầu tiếp theo nào có cùng một nội dung sẽ được phục vụ từ bộ nhớ được lưu trong bộ nhớ cache. Điều này giúp tăng tốc toàn bộ quá trình truy xuất dữ liệu. Bằng cách triển khai bộ nhớ đệm và bộ nhớ đệm phía máy chủ của Trình duyệt/HTTP, bạn có thể trải nghiệm một sự cải thiện lớn trong hiệu suất của trang web của bạn.
    • Tài nguyên hệ thống: CPU, RAM, I/O disk, network bandwidth đều ảnh hưởng hoặc thiếu tài nguyên mà chưa có phương án dự phòng (có thể tăng RAM, hoặc dùng thêm ổ swap,…) . Nếu server quá tải hoặc thiếu tài nguyên dẫn đến response time tăng.
    • Dịch vụ hosting, VPS hay máy chủ: Trong trường hợp nếu bạn đã thử sửa tất cả các nguyên nhân ở trên mà tốc độ tải trang vẫn chậm thì đó là lỗi của nhà cung cấp và đây là dấu hiệu cho thấy bạn phải làm việc lại với nhà cung cấp của bạn hoặc nên chuyển đổi nhà cung cấp lưu trữ mới có thể giải quyết vấn đề này cho bạn.
  • Cách kiểm tra:
    • Dùng công cụ như Ping, Traceroute để đo độ trễ mạng.
    • WebPageTest, GTmetrix, Google PageSpeed Insights hoặc Pingdom Website Speed ​​Test để phân tích chi tiết.
    • Browser DevTools (tab Network) để xem từng bước: DNS, TCP handshake, TTFB (Time To First Byte), tải tài nguyên.
    • Monitoring (New Relic, Datadog, Prometheus): Theo dõi server response time, database query, CPU/RAM.

2.7 Nếu phía server sử dụng mô hình Nginx Reverse proxy Apache

VD: Nginx -> Apache -> PHP -> MySQL. Thì header trả về client của Nginx hay Apache?

Luồng xử lý chi tiết

  1. Client -> Nginx
    • Trình duyệt gửi request đến Nginx (reverse proxy).
    • Nginx nhận request, kiểm tra rule (rewrite, cache, SSL termination, load balancing…).
  2. Nginx -> Apache
    • Nếu request cần xử lý động (PHP/MySQL), Nginx sẽ chuyển tiếp (proxy_pass) sang Apache.
    • Apache xử lý logic ứng dụng, chạy PHP, truy vấn MySQL, rồi tạo response (header + body).
  3. Apache -> Nginx
    • Apache gửi response về cho Nginx.
    • Response này có thể chứa header gốc của Apache (ví dụ Server: Apache, X-Powered-By: PHP/7.4`).
  4. Nginx -> Client
    • Nginx quyết định giữ nguyên, thêm, sửa hoặc xoá header trước khi gửi cho client.
    • Cuối cùng, client chỉ thấy header mà Nginx gửi ra.
  • Header trả về client là của Nginx hay Apache?
    • Về nguyên tắc: Client chỉ giao tiếp trực tiếp với Nginx, nên header cuối cùng là do Nginx gửi ra. Ngoài ra header do Nginx gửi ra sẽ có một số trường hợp sau:
    • Nếu Nginx không chỉnh sửa gì, client sẽ thấy header gốc từ Apache (ví dụ Server: Apache).
    • Nếu Nginx có cấu hình proxy_hide_header hoặc add_header, thì client sẽ thấy header đã được Nginx thay đổi (ví dụ Server: nginx).
    • Một số header bảo mật (như Strict-Transport-Security, X-Frame-Options) thường được thêm ở Nginx để đảm bảo toàn bộ traffic đều có
      Kết luận: Header trả về client là của Nginx, vì Nginx là “cửa ngõ” cuối cùng. Để bảo mật hơn, thì trong thực tế người ta thường để Nginx chỉnh sửa header để ẩn đi các luồng xử lý và tránh rò rỉ thông tin không cần thiết.

2.8 Khái niệm HTTP và HTTPS

  • Giao thức HTTP (HyperText Transfer Protocol) là một giao thức lớp ứng dụng trong mô hình OSI (Open Systems Interconnection) và là nền tảng cơ bản cho việc trao đổi thông tin giữa máy khách (client) và máy chủ (server) qua internet. HTTP định nghĩa các loại yêu cầu và phản hồi giữa máy khách và máy chủ, giúp World Wide Web hoạt động một cách nhất quán và hiệu quả.
  • Giao thức HTTP sử dụng mô Hình Client-Server:
    • Máy Khách: Là thiết bị hoặc phần mềm, chẳng hạn như trình duyệt web, gửi yêu cầu tới máy chủ.
    • Máy Chủ: Là hệ thống lưu trữ các tài nguyên web và phản hồi yêu cầu từ máy khách.
    • Tuy nhiên, HTTP truyền dữ liệu ở dạng văn bản thuần, không mã hóa. Điều này tạo ra lỗ hổng bảo mật nghiêm trọng. Thông tin nhạy cảm như mật khẩu, chi tiết thẻ tín dụng có thể bị kẻ xấu chặn và đọc trộm dễ dàng, ví dụ qua tấn công Man-in-the-Middle kẻ đứng giữa nghe lén hoặc thay đổi dữ liệu.
  • Giao thức HTTPS (HyperText Transfer Protocol Secure) là phiên bản bảo mật của giao thức HTTP, thiết kế để bảo vệ dữ liệu khi truyền qua internet bằng cách mã hóa thông tin. Trong khi HTTP truyền dữ liệu không được mã hóa, điều này có nghĩa là các bên thứ ba có thể dễ dàng chặn và đọc thông tin, HTTPS thêm một lớp bảo mật bằng cách kết hợp HTTP với công nghệ mã hóa SSL (Secure Sockets Layer) và TLS (Transport Layer Security).


3. Quy trình

Bước 1: Khởi tạo yêu cầu: Người dùng nhập URL vào trình duyệt và nhấn Enter, trình duyệt tạo một lệnh HTTP yêu cầu máy chủ tìm và gửi nội dung của trang web tương ứng với địa chỉ đã nhập.

Bước 2: .Phân giải tên miền (DNS Resolution)
Mạng Internet không làm việc với tên miền (Domain Name) mà làm việc với Địa chỉ IP (Internet Protocol address). Bước này dùng DNS (Domain Name System) để chuyển tên miền thành IP.
Trình duyệt gửi yêu cầu tới DNS để phân giải tên miền thành địa chỉ IP.

  • Quy trình:
    1. Trình duyệt hỏi DNS cục bộ (local resolver).
    2. Nếu chưa có trong cache, DNS cục bộ sẽ truy vấn lên Root server → TLD server (.com) → Authoritative server.
    3. Nhận về địa chỉ IP (ví dụ: 93.184.216.34).
    4. Kết quả: Trình duyệt biết được máy chủ nào chứa website.
    • Phân giải DNS theo mô hình OSI: DNS luôn hoạt động tại tầng ứng dụng, nhưng khi truyền đi thì phải đi qua đầy đủ các tầng bên dưới.
      Tầng 7 (Application Layer): Trình duyệt gửi truy vấn DNS (loại: A record, AAAA record, v.v.) để yêu cầu tìm IP. Giao thức dùng: DNS protocol.
      Tầng 4 (Transport Layer): DNS thường dùng UDP trên port 53 vì: mang lại tốc độ cao và không yêu cầu thiết lập kết nối. Tuy nhiên, DNS cũng có thể dùng TCP trong các trường hợp: Kích thước phản hồi > 512 bytes (DNSSEC, bản ghi lớn), Zone transfer giữa DNS servers (AXFR). Vì vậy: “DNS dùng UDP port 53” là đúng nhưng chưa đầy đủ.
      Tầng 3 (Network Layer): Gói DNS được đóng trong IP packet. Được định tuyến qua Internet thông qua địa chỉ IP của DNS resolver.
      Tầng 2 & 1 — Data Link + Physical: Chuyển thành frame Ethernet rồi thành tín hiệu điện/quang để truyền qua mạng.

Bước 3: Thiết lập kết nối mạng (OSI Model)
Sau khi có IP, trình duyệt cần thiết lập một kênh liên lạc ổn định với máy chủ.

  1. Thiết lập Kết nối TCP
    • TCP (Transmission Control Protocol): Là giao thức chính được sử dụng. TCP đảm bảo việc truyền dữ liệu đáng tin cậy.
    • Three-Way Handshake: Client và Server trao đổi 3 gói tin (SYN (Synchronize), SYN-ACK, ACK) để thiết lập kết nối logic, thuộc Tầng Vận chuyển (Transport Layer) của OSI.
  2. Thiết lập Bảo mật (Đối với HTTPS) Nếu URL là HTTPS (HTTP Secure), bước tiếp theo là thiết lập mã hóa:
    • TLS/SSL Handshake: Client và Server tiến hành một loạt các bước để đồng ý về các thuật toán mã hóa và trao đổi các khóa mã hóa.
    • Server Certificate: Máy chủ gửi Chứng chỉ SSL/TLS của mình để Client xác thực.
    • Kết quả: Một kết nối an toàn, đã được mã hóa được thiết lập. Giao thức này hoạt động ở Tầng Phiên/Tầng Trình bày/Tầng Ứng dụng (Session/Presentation/Application Layers).

Bước 4: Gửi Yêu cầu HTTP (Application Layer)
Sau khi kết nối đã sẵn sàng, trình duyệt sẽ đóng gói yêu cầu của mình.

  • HTTP (Hypertext Transfer Protocol): Trình duyệt tạo một HTTP Request (thường là phương thức GET hoặc POST). Yêu cầu này chứa:
  • Request Line: Phương thức, URL, Phiên bản HTTP.
  • Request Headers: Các thông tin bổ sung (ví dụ: loại trình duyệt, ngôn ngữ chấp nhận, cookie…).
  • Gói tin (Packages): Yêu cầu HTTP được chia thành các segment (TCP), sau đó thành các datagram (IP), và cuối cùng là các frame (Tầng Liên kết Dữ liệu) để truyền qua mạng. Mỗi cấp độ thêm vào một header (tiêu đề) riêng chứa thông tin định tuyến và kiểm soát.
  • Yêu cầu này được gửi qua Internet đến IP của Server.

Bước 5: Xử lý Yêu cầu (Server Side)
Yêu cầu đi đến máy chủ, được xử lý ngược từ dưới lên:

  • Giải mã gói tin: Server nhận các frame, tái tạo thành datagrams, segments, và cuối cùng là yêu cầu HTTP ban đầu.
  • Web Server: Web Server (ví dụ: Apache, Nginx) nhận yêu cầu.
  • Xử lý Logic: Nếu cần, Server sẽ chạy các ứng dụng back-end (PHP, Python, Java…) để truy vấn Cơ sở dữ liệu (Database), thực hiện logic kinh doanh, và tạo ra nội dung phản hồi.

Bước 6: Phản hồi HTTP (Server Side)
Máy chủ đóng gói kết quả và gửi lại Client.

  • HTTP Response: Máy chủ tạo một HTTP Response chứa:
    • Status Line: Mã trạng thái (ví dụ: 200 OK nghĩa là thành công).
    • Response Headers: Thông tin về server, loại nội dung, cookie…
    • Response Body: Đây là nội dung chính, thường là mã HTML, CSS, và JavaScript.
  • Mã hóa & Đóng gói: Phản hồi này được mã hóa (nếu là HTTPS) và chia thành các gói tin để truyền ngược lại cho Client.

Bước 7: Render Website (Client Side)
Khi Client nhận được các gói tin, nó tiến hành các bước cuối cùng.

  • Tái tạo: Trình duyệt nhận các gói tin, giải mã (nếu cần), và tái tạo thành HTTP Response hoàn chỉnh.
  • Rendering: Trình duyệt bắt đầu xử lý nội dung:
    • Nó đọc mã HTML để xây dựng cấu trúc (DOM – Document Object Model).
    • Nó đọc CSS để áp dụng phong cách và bố cục.
    • Nó thực thi JavaScript để tạo ra các hành vi động.
  • Hiển thị: Cuối cùng, Website được hiển thị hoàn chỉnh trên màn hình của bạn.

Sơ đồ minh họa:


4. Phân tích

Lỗi Khi Giao tiếp Website và Cách Khắc phục:

Lưu ý:

  • DNS cache có thể gây sai lệch khi thử nghiệm.
  • HTTP vs HTTPS: bảo mật khác nhau.
  1. Lỗi Giai đoạn Phân giải Tên miền (DNS). Liên quan đến Tầng 7 (Ứng dụng)
    Đây là các lỗi xảy ra khi trình duyệt không thể tìm ra Địa chỉ IP của Server.
    • Lỗi Phổ biến: DNS_PROBE_FINISHED_BAD_CONFIG, ERR_NAME_NOT_RESOLVED.
    • Nguyên nhân: Máy chủ DNS được cấu hình trên máy tính hoặc mạng của bạn không phản hồi, hoặc tên miền không tồn tại. Khắc phục:
      • Kiểm tra lại chính tả URL.
      • Xóa DNS Cache cục bộ trên máy tính (ipconfig /flushdns trên Windows).
      • Thay đổi Máy chủ DNS của máy tính hoặc Router (thử dùng DNS công cộng như $8.8.8.8$ hoặc $1.1.1.1$).
  2. Lỗi Giai đoạn Kết nối Mạng & Vận chuyển (TCP/IP). Liên quan đến Tầng 4 (Vận chuyển)Tầng 3 (Mạng)
    Các lỗi này xảy ra khi Client không thể thiết lập kết nối TCP/IP với IP của Server.
    • Lỗi Phổ biến: Connection Refused, Connection Timed Out, No route to host.
    • Nguyên nhân:
      • Tầng 4 (TCP): Dịch vụ Web Server trên máy chủ đang dừng hoạt động, hoặc Firewall của Server chặn cổng $80/443$.
      • Tầng 3 (IP): Gói tin bị mất trên đường đi do Router bị lỗi hoặc do Firewall mạng trung gian.
    • Khắc phục:
      • Client: Chạy lệnh ping hoặc traceroute (hoặc tracert) đến IP đích để kiểm tra đường truyền và độ trễ.
      • Server: Đảm bảo dịch vụ Web Server (Apache/Nginx) đang chạyFirewall (iptables/Windows Firewall) đã mở cổng TCP 80/443
  3. Lỗi Giai đoạn Bảo mật (HTTPS/TLS). Liên quan đến Tầng 6 (Trình bày)Tầng 5 (Phiên)
    Lỗi xảy ra trong quá trình TLS Handshake, thường liên quan đến chứng chỉ mã hóa.
    • Lỗi Phổ biến: NET::ERR_CERT_DATE_INVALID, SSL Handshake Failed, Privacy Error.
    • Nguyên nhân:
      • Chứng chỉ hết hạn hoặc bị thu hồi.
      • Thời gian hệ thống của Client bị sai lệch quá nhiều so với Server.
      • Server sử dụng các giao thức TLS hoặc bộ mã hóa đã lỗi thời, không được trình duyệt chấp nhận.
    • Khắc phục:
      • Client: Cập nhật lại thời gian hệ thống chính xác.
      • Server: Kiểm tra trạng thái Chứng chỉ SSL/TLS, đảm bảo nó còn hiệu lực và được cấp bởi Cơ quan cấp chứng chỉ (CA) tin cậy. Cấu hình Server chỉ sử dụng các phiên bản TLS hiện đại (ví dụ: TLS 1.2 trở lên).
  4. Lỗi Giai đoạn Ứng dụng và Phản hồi (HTTP Status Codes). Liên quan đến Tầng 7 (Ứng dụng)
    Server nhận được yêu cầu nhưng không thể hoàn thành do lỗi logic hoặc tài nguyên.
    • Mã Lỗi 4xx (Lỗi từ phía Client):
      • 404 Not Found: Tài nguyên (tệp, hình ảnh) không tồn tại.
      • Khắc phục: Kiểm tra đường dẫn URL và cấu hình tệp trên Server.
      • 403 Forbidden: Server từ chối truy cập.
    • Khắc phục: Kiểm tra quyền truy cập (permissions) của tệp/thư mục.
    • Mã Lỗi 5xx (Lỗi từ phía Server):
      • 500 Internal Server Error: Lỗi không xác định xảy ra khi Server đang xử lý.
        • Khắc phục: Kiểm tra file log của Web Server và mã lệnh Back-end (PHP, Python, Java) để tìm lỗi lập trình.
      • 503 Service Unavailable: Server quá tải hoặc đang bảo trì.
        • Khắc phục: Kiểm tra tài nguyên Server (CPU, RAM). Tăng cường khả năng chịu tải.
  5. Lỗi Giai đoạn Trình bày (Rendering). Liên quan đến Tầng 7 (Ứng dụng)
    Dữ liệu đã tải về nhưng không được hiển thị đúng cách.
    • Lỗi Phổ biến: Lỗi hiển thị CSS/layout, lỗi JavaScript trong Console.
      • Nguyên nhân:
      • Lỗi cú pháp trong mã HTML/CSS/JS.
      • Trình duyệt hiển thị phiên bản cũ do Cache cục bộ.
      • Lỗi trong việc tải các tài nguyên phụ trợ (tệp CSS/JS).
    • Khắc phục:
      • Sử dụng Developer Tools (F12) của trình duyệt để kiểm tra các lỗi Console và các lỗi tải tài nguyên (lỗi 404). Tiến hành lập trình vá lỗi code
      • Xóa Cache trình duyệt hoặc thực hiện tải lại trang bằng phím tắt Ctrl+Shift+R (Hard Refresh).

5. Kết quả đạt được

  • Hiểu rõ quy trình từ client đến server.
  • Có sơ đồ minh họa mô hình hoạt động.
  • Thực nghiệm thành công với công cụ kiểm tra mạng.

6. Tài liệu tham khảo

[1] https://blog.vinahost.vn/gioi-thieu-mo-hinh-osi/
[2] https://vinahost.vn/http-va-https/

TAGS

CATEGORIES

Uncategorized

No responses yet

Leave a Reply

Your email address will not be published. Required fields are marked *