Giao thức truyền tải siêu văn bản (Hypertext Transfer Protocol, HTTP)

Khi ta truy cập một trang web, máy tính sẽ sử dụng Giao thức truyền tải siêu văn bản (Hypertext Transfer Protocol, HTTP) để tải xuống trang đó từ một máy tính khác trên Internet.
Trong bài đọc này, chúng ta sẽ cùng tìm hiểu về quá trình đó.
Để duyệt web, ta có thể sử dụng nhiều loại thiết bị điện toán khác nhau (như máy tính xách tay, máy tính để bàn, điện thoại), miễn là thiết bị đó có ứng dụng trình duyệt.
Người dùng sẽ nhập URL (Uniform Resource Locator, Hệ thống định vị tài nguyên thống nhất) trong trình duyệt hoặc bấm vào liên kết trên một trang web khác:
Hình minh họa cửa sổ trình duyệt, URL trên thanh địa chỉ là "http://www.example.com/index.html"
Ta có thể thấy URL này bắt đầu bằng “http”, đây là tín hiệu giúp trình duyệt biết đã đến lúc sử dụng HTTP để truy xuất các tài liệu của URL đó.
🔍 Bạn đang sử dụng trình duyệt nào? URL của trang web này là gì và bắt đầu như thế nào?

Bước 2: Trình duyệt tra cứu địa chỉ IP

URL mà chúng ta nhập vào trình duyệt có định dạng khá thân thiện với người dùng, ví dụ như “khanacademy.org” và “wikipedia.org”. Mỗi tên miền như vậy ánh xạ tới một địa chỉ IP là vị trí thực của máy chủ trang web đó. Quá trình này được thực hiện bởi Hệ thống phân giải tên miền (Domain Name System, DNS).
Trình duyệt sử dụng DNS để tìm địa chỉ IP tương ứng với tên miền:
Hình minh họa bao gồm máy tính xách tay ở bên trái và máy chủ ở bên phải. Máy tính xách tay đang mở cửa sổ trình duyệt, mũi tên đi đến máy chủ mang theo tin nhắn "www.example.com = ?". Máy chủ được ghi chú "Máy chủ DNS", mũi tên quay lại máy tính xách tay mang theo tin nhắn "93.184.216.34".

Bước 3: Trình duyệt gửi yêu cầu HTTP

Sau khi xác định được địa chỉ IP của máy chủ lưu trữ URL cần truy cập, trình duyệt sẽ gửi đi một yêu cầu HTTP.
Hình minh họa với máy tính xách tay ở bên trái và máy chủ ở bên phải. Máy tính xách tay đang mở cửa sổ trình duyệt, mũi tên đi đến máy chủ mang theo gói tin chứa yêu cầu HTTP. Máy chủ được ghi chú "www.example.com" với địa chỉ IP là "93.184.216.34".
Một yêu cầu HTTP có thể chỉ dài khoảng hai dòng văn bản:
GET /index.html HTTP/1.1
Host: www.example.com
Từ đầu tiên là tên gọi của một phương thức HTTP: “GET”. Mỗi phương thức với web sẽ có một từ khóa tương ứng, ví dụ như phương thức gửi dữ liệu thông qua biểu mẫu là “POST”.
Phần tiếp theo nêu rõ đường dẫn: “/index.html”. Do máy chủ lưu trữ nội dung của toàn bộ trang web nên trình duyệt phải thông báo cụ thể trang con cần tải.
Phần cuối cùng của dòng đầu tiên chỉ định giao thức và phiên bản của giao thức: “HTTP/1.1”.
Dòng thứ hai nêu rõ tên miền của URL được yêu cầu để đề phòng trường hợp máy chủ đó lưu trữ nội dung của nhiều trang.

Bước 4: Máy chủ gửi lại phản hồi HTTP

Sau khi nhận được yêu cầu HTTP, máy chủ sẽ gửi lại phản hồi bao gồm phần nội dung và phần siêu dữ liệu.
Hình minh họa với máy tính xách tay ở bên trái và máy chủ ở bên phải. Máy chủ được ghi chú "www.example.com" với địa chỉ IP là "93.184.216.34". Mũi tên đi từ máy chủ đến máy tính xách tay mang theo gói tin chứa phản hồi HTTP.
Phản hồi HTTP có phần mở đầu giống với yêu cầu HTTP:
HTTP/1.1 200 OK
Phản hồi HTTP bắt đầu với thông tin về giao thức và phiên bản, ví dụ như “HTTP/1.1”.
Con số tiếp theo là mã trạng thái HTTP và bằng 200. Mã này cho biết việc truy xuất tài liệu đã thành công (“OK”).
Nếu máy chủ không truy xuất được tài liệu, mã trạng thái trong phản hồi HTTP sẽ cung cấp thêm thông tin, chẳng hạn như lỗi đó đến từ phía người dùng hay máy chủ. Mã trạng thái được biết đến nhiều nhất là 404 (“File not found”, nghĩa là “Không tìm thấy tệp”). Mã trạng thái 404 xuất hiện khi ta truy cập một đường dẫn không tương ứng với bất kỳ tài liệu nào trên máy chủ. Việc người dùng gõ URL không chính xác xảy ra khá thường xuyên nên nhiều trang web cũng tạo ra những trang thông báo lỗi 404 sáng tạo để báo lỗi cho người dùng. Bạn có thể thử gõ một URL Khan Academy không chính xác như khanacademy.org/abcxyz để xem trang báo lỗi của chúng tôi.
Phần tiếp theo của phản hồi HTTP là tiêu đề. Tiêu đề cung cấp cho trình duyệt các thông tin bổ sung và giúp trình duyệt kết xuất nội dung.
Có hai tiêu đề được sử dụng cho hầu hết các yêu cầu:
Content-Type: text/html; charset=UTF-8
Content-Length: 208
Tiêu đề “content-type” cho trình duyệt biết loại tài liệu nào đang được gửi về. Loại tài liệu phổ biến trên web là “text/html” vì tất cả các trang web đều là tệp văn bản HTML. Các loại tài liệu khác có thể bao gồm hình ảnh (“image/png”), video (“video/mpeg”), ngôn ngữ kịch bản (“application/javascript”), v.v.
Tiêu đề “content-length” cho biết độ dài của tài liệu tính bằng byte, giúp trình duyệt ước tính thời gian tải xuống.
Phần cuối của phản hồi HTTP chính là tài liệu được yêu cầu. Đó có thể là một tệp HTML đơn giản như sau:
<!DOCTYPE html>
<html>
  <head>
    <title>Example Domain</title>
  </head>
  <body>
    <h1>Example Domain</h1>
    <p>This domain is to be used for illustrative examples in documents.</p>
  </body>
</html>
Nếu muốn tìm hiểu sâu hơn về HTML, bạn có thể tham khảo khóa học về HTML/CSS.

Bước 5: Trình duyệt kết xuất phản hồi

Sau khi hoàn thành các bước trên, trình duyệt hiện đã có tất cả thông tin cần thiết để kết xuất tài liệu đã yêu cầu.
Hình ảnh minh họa trình duyệt với thanh địa chỉ hiển thị "http://www.example.com/index.html". Nội dung trang web bao gồm tiêu đề "Example Domain" (Tên miền Example) và đoạn "This domain is to be used for illustrative examples in documents." (Tên miền này được sử dụng để làm ví dụ minh họa trong tài liệu).

Tự mình trải nghiệm

Có nhiều trình duyệt tích hợp sẵn các công cụ gỡ lỗi cho phép bạn xem các yêu cầu và phản hồi HTTP trong quá trình duyệt web.
Hãy cùng thử trong trình duyệt Chrome.
Đầu tiên, bạn cần mở công cụ dành cho nhà phát triển trên Chrome bằng cách tìm mục “Công cụ dành cho Nhà phát triển” hoặc “Developer tools”. Khi cửa sổ công cụ mở, ta chọn thẻ “Network”.

Ảnh chụp màn hình thẻ "Network" trong Công cụ dành cho nhà phát triển của Chrome.

Tiếp theo, hãy thử nhập một URL nào đó vào thanh địa chỉ, ví dụ: “http://www.example.com/index.html”. Yêu cầu HTTP sẽ hiển thị trong cửa sổ console còn trình duyệt sẽ kết xuất nội dung trang web.

Ảnh chụp màn hình thẻ "Network" trong Công cụ dành cho nhà phát triển của Chrome. Có một hàng duy nhất cho "index.html".

Bạn có thể tìm hiểu sâu hơn về yêu cầu HTTP đó nếu muốn bằng cách nhấp vào “index.html” dưới cột “Name”. Khi đó, một giao diện được sắp xếp theo thẻ sẽ hiện lên và thẻ mặc định là thẻ “Headers”.

Ảnh chụp màn hình thẻ "Network" trong Công cụ dành cho nhà phát triển của Chrome. Phía bên trái là tệp "index.html" được chọn. Phía bên phải là giao diện theo thẻ với thẻ "Headers" được mở. Thẻ Headers được chia thành các phần như "General" và "Response headers".

Phần “Response headers” (Tiêu đề phản hồi HTTP) bao gồm các tiêu đề đã đề cập ở trên (“Content-Type” và “Content-Length”) cũng như rất nhiều tiêu đề khác.
Nội dung HTML thực tế của phản hồi nằm trong thẻ “Response”.

Ảnh chụp màn hình thẻ "Network" trong Công cụ dành cho nhà phát triển của Chrome. Phía bên trái là tệp "index.html" được chọn. Phía bên phải là giao diện theo thẻ với thẻ "Response" được mở. Thẻ chứa các dòng lệnh HTML.

🔍 Bạn hãy thử mở thẻ “Network” và truy cập nhiều trang web khác nhau. Theo bạn, mỗi trang web cần bao nhiêu yêu cầu HTTP? Có những loại nội dung nào trong phản hồi HTTP? Đâu là nội dung khiến bạn thấy bất ngờ nhất?

HTTP và TCP/IP

HTTP là một giao thức được xây dựng để hoạt động ở tầng trên của chồng giao thức TCP/IP.
Một yêu cầu HTTP nằm trong một gói tin IP, còn một phản hồi HTTP có thể nằm trong một hoặc nhiều gói tin IP vì dữ liệu phản hồi thường khá nặng.
Hình minh họa bao gồm máy tính xách tay ở bên trái và máy chủ ở bên phải. Máy tính xách tay đang mở cửa sổ trình duyệt với "http://www.example.com/index.html" trên thanh địa chỉ. Máy chủ được ghi chú "www.example.com" với địa chỉ IP là "93.184.216.34". 4 mũi tên bao gồm: * Mũi tên đầu tiên đi từ máy tính xách tay đến máy chủ và mang theo gói tin chứa yêu cầu HTTP. * Mũi tên thứ hai đi từ máy chủ đến máy tính xách tay và mang theo gói tin chứa bit "ACK". * Mũi tên thứ ba đi từ máy chủ đến máy tính xách tay và mang theo gói tin chứa phản hồi HTTP. * Mũi tên thứ tư đi từ máy tính xách tay đến máy chủ và mang theo gói tin chứa bit "ACK".
Bên cạnh HTTP, còn nhiều giao thức khác cũng được xây dựng để hoạt động ở tầng trên của chồng TCP/IP như những giao thức gửi email (SMTP, POP, IMAP) và tải tệp lên (FTP).
Tất cả các giao thức này cho phép chúng ta sử dụng Internet để kết nối với các máy tính khác, qua đó xóa nhòa khoảng cách địa lý và khiến thế giới xích lại gần nhau hơn.

Bài viết liên quan

No Image

Th6

2025

14

SEO và các vấn đề của SEO

14/06/2025

SEO-friendly URLs – Short, descriptive URLs not only help search engines and visitors understand your page topic at a glance, they also improve click-through rates by setting clear expectations. Ditch long strings of numbers or random characters and stick to meaningful keywords. A tidy URL structure makes sharing effortless and gives your site a polished feel. FAU…

Đọc thêm
No Image

Th6

2025

14

Hướng gửi Sitemap với Google Search Console

14/06/2025

Muốn cải thiện thứ hạng tìm kiếm của website? Tối ưu hóa quá trình thu thập dữ liệu của Google là điều cần thiết. Hãy cùng tìm hiểu cách gửi Sitemap để giúp Google hiểu rõ cấu trúc website của bạn và hiển thị kết quả tìm kiếm chính xác hơn. Bước 1: Search từ…

Đọc thêm
No Image

Th6

2025

14

Nguồn thông tin đáng tin cậy dành cho sinh viên Digital Marketing

14/06/2025

Mục lục1 Vietnam Ecommerce Association (VECOM)2 Cafebiz3 Brands Vietnam4 Vietnamnet.vn5 VnEconomy Vietnam Ecommerce Association (VECOM) Hiệp hội Thương mại điện tử Việt Nam (VECOM) là một trong những tổ chức hàng đầu tại Việt Nam chuyên cung cấp thông tin, nghiên cứu và báo cáo về thị trường thương mại điện tử. Được thành lập…

Đọc thêm
No Image

Th6

2025

14

Hướng dẫn sửa lỗi SSL trên Cpanel

14/06/2025

Bước 1: Trên thanh Tìm Kiếm nhập dòng “Let’s Encrypt SSL” Bước 2: Click chọn như hình Bước 3: Ngay phần “Issue a new certificate” xem Actions và chọn “Issue” để cài đặt lại Bước 4: Ngay cột “include?” bỏ chọn EMAIL như trong ảnh Bước 5: Kéo xuống dưới và click vào chữ “Issue”…

Đọc thêm