Site icon Cồng Chiêng

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:
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:

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

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

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.

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

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

🔍 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.
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.
Exit mobile version