HTTP là gì?

HTTP là một giao thức lớp ứng dụng được thiết kế hoạt động trong khuôn khổ bộ giao thức Internet. Ngoài ra, nó cũng còn được giả định cho là giao thức lớp vận chuyển cơ bản và đáng tin cậy. Trong phiên bản HTTP/3 mới nhất, Transmission Control Protocol (TCP) không còn được sử dụng nữa nhưng các phiên bản cũ thì vẫn còn sử dụng rất nhiều. HTTP cũng được thiết kế và điều chỉnh để sử dụng các giao thức không đáng tin cậy như User Datagram Protocol (UDP), và công nghệ mà HTTP/3 gián tiếp xây dựng dựa trên nó, ví dụ như HTTPU và Simple Service Discovery Protocol (SSDP).

Lịch sử:

Tim Berners-Lee là người khởi xướng cho sự hình thành và phát triển của HTTP vào năm 1989 tại CERN. Berners-Lee thiết kế HTTP nhằm mục đích bổ trợ cho ý tưởng sáng tạo khác của ông: dự án “WorldWideWeb”.

Phiên bản HTTP ban đầu được phát hành vào năm 1996–97 và được gọi là HTTP/1.1. HTTP/2 và HTTP/3 là các phiên bản nâng cấp của chính giao thức này. Hệ thống truyền dữ liệu đã được sửa đổi để mang lại hiệu quả cao hơn.

Ví dụ: HTTP/2 trao đổi dữ liệu ở dạng nhị phân thay vì định dạng văn bản. Phiên bản này cũng cho phép máy chủ có thể chủ động truyền các phản hồi đến bộ nhớ đệm của máy khách thay vì chờ một yêu cầu HTTP mới. HTTP/3 còn tương đối mới nhưng có tiềm năng đưa HTTP/2 tiến xa hơn. Mục đích của HTTP/3 là hỗ trợ phát trực tuyến theo thời gian thực và các yêu cầu truyền dữ liệu hiện đại khác đạt hiệu quả cao hơn.

HTTPS ưu tiên giải quyết các vấn đề bảo mật dữ liệu trong HTTP. Các hệ thống hiện đại sử dụng HTTP/2 có SSL/TLS cho HTTPS. Khi HTTP/3 trưởng thành hơn, trình duyệt và công nghệ máy chủ sau đó cũng sẽ tích hợp HTTP/3 trong HTTPS.

Các khái niệm liên quan:

   HTTP Request Method chỉ phương thức để được thực hiện trên nguồn được nhận diện bởi Request-URI (Uniform Resource Identifier) đã cung cấp

  • GET Là phương thức phổ biến, được sử dụng rộng rãi nhất trong HTTP methods và websites. Nói một cách đơn giản, GET là phương thức được sử dụng để truy xuất dữ liệu từ server ở một tài nguyên rõ ràng đã được chỉ định.
  • HEAD Tương tự như GET, nhưng nó truyền tải dòng trạng thái và khu vực header. HEAD method sẽ trả về nội dung headers nếu tài nguyên được chỉ định gọi tới có thể lấy được bằng method GET.
  • POST Gửi data lên server để xử lí ở một tài nguyên cố định, như thông tin khách hàng, file tải lên,…
  • PUT Được sử dụng để tạo tài nguyên, hoặc ghi đè nó.
  • DELETE Sẽ xóa một tài nguyên nhất định ở server bằng Request-URI.
  • CONNECT Thiết lập một tunnel tới máy chủ được xác định bởi URI đã cung cấp.
  • OPTIONS Sử dụng để mô tả tùy các options giao tiếp cho tài nguyên đích (client có thể tùy chỉnh URL cho OPTIONS methods, hoặc sử dụng dấu *, với ý nghĩa cho cả server).
  • TRACE Trình bày một vòng lặp kiểm tra thông báo song song với path tới nguồn mục tiêu.

   HTTP Response

Khi nhận và phiên dịch một HTTP Request, máy chủ sẽ gửi tín hiệu phản hồi là một HTTP Response bao gồm các thành phần sau:

  • Một dòng trạng thái (Status-Line)
  • Không hoặc nhiều hơn các trường Header (General | Response | Entity) được theo sau CRLF
  • Một dòng trống chỉ dòng kết thúc của các trường header
  • Một phần thân thông báo tùy ý.

   HTTP Status Code

Mã trạng thái HTTP được máy chủ phản hồi lại mỗi khi nhận được HTTP Resquest.

Yếu tố Status-Code là một số nguyên 3 ký tự, trong đó ký tự đầu tiên của mã hóa trạng thái định nghĩa hạng (loại) phản hồi và hai ký tự cuối không có bất cứ vai trò phân loại nào. Có 5 giá trị của ký tự đầu tiên như sau:

  • 1xx: Thông tin. Nghĩa là yêu cầu đã được nhận và tiến trình đang tiếp tục.
  • 2xx: Thành công. Nghĩa là hoạt động đã được nhận, được hiểu, và được chấp nhận một cách thành công.
  • 3xx: Sự điều hướng lại. Nghĩa là hoạt động phải được thực hiện để hoàn thành yêu cầu.
  • 4xx: Lỗi Client. Nghĩa là yêu cầu chứa cú pháp không chính xác hoặc không được thực hiện
  • 5xx: Lỗi Server. Nghĩa là máy chủ thất bại với việc thực hiện một yêu cầu nhìn như có vẻ khả thi.

HTTP so với HTTPS

HTTP HTTPS
Là viết tắt của Giao thức truyền siêu văn bản Giao thức truyền siêu văn bản bảo mật
Giao thức cơ bản HTTP/1 và HTTP/2 sử dụng TCP/IP. HTTP/3 sử dụng giao thức QUIC. Sử dụng HTTP/2 với SSL/TLS để mã hóa thêm cho các yêu cầu và phản hồi HTTP
Cổng Cổng mặc định là 80 Cổng mặc định là 443
Trường hợp sử dụng Các trang web dựa trên văn bản cũ hơn Tất cả các trang web hiện đại
Bảo mật Không có tính năng bảo mật bổ sung Sử dụng chứng chỉ SSL để mã hóa khóa công khai
Lợi ích Hỗ trợ giao tiếp qua internet Cải thiện độ uy tín, độ tin cậy và xếp hạng công cụ tìm kiếm của trang web

(tổng hợp)

About the Author

Ha Trung Vi

View all author's posts

Bài viết khác

Web Security

Khái niệm Web Security Web Security là tập hợp các nguyên tắc, biện pháp và công nghệ nhằm bảo vệ website, ứng dụng web và dữ liệu khỏi các hành vi truy cập trái phép, tấn công độc hại hoặc khai thác lỗ hổng. Nó không chỉ bao gồm việc ngăn chặn hacker, mà còn […]

Markdown

Markdown là một ngôn ngữ đánh dấu nhẹ (lightweight markup language) dùng để định dạng văn bản thuần túy (plain text), thường được sử dụng trong các tài liệu như README, bài viết blog, tài liệu hướng dẫn, và cả trong GitHub, Stack Overflow, hoặc các trình soạn thảo như VS Code, Obsidian… Markdown được […]

CSS

CSS (Cascading Style Sheets – tạm dịch: Tập tin định kiểu tầng) là ngôn ngữ dùng để mô tả cách trình bày (giao diện) của một tài liệu HTML. Nói đơn giản, CSS giúp làm đẹp trang web: chỉnh màu sắc, font chữ, bố cục, khoảng cách, hiệu ứng chuyển động, v.v. CSS được phát […]

HTML

HTML (HyperText Markup Language) là ngôn ngữ đánh dấu siêu văn bản, được dùng để xây dựng cấu trúc của một trang web. Nói cách khác, HTML cho trình duyệt biết nội dung nào sẽ hiển thị và hiển thị như thế nào (như tiêu đề, đoạn văn, hình ảnh, liên kết…). Một tài liệu […]

Browser

Browser (Web Browser, Trình duyệt web) là phần mềm trên máy tính, điện thoại hoặc thiết bị thông minh, cho phép người dùng truy cập, hiển thị và tương tác với các trang web, tài nguyên Internet. Về bản chất, trình duyệt gửi các yêu cầu (HTTP/HTTPS request) đến máy chủ web, nhận về mã […]

Tìm hiểu DNS

DNS là gì? DNS (Domain Name System) là một dịch vụ phân giải tên miền, giúp chuyển đổi các tên miền (ví dụ: www.ducphat.com) thành địa chỉ IP (ví dụ: 93.184.216.34) và ngược lại. Thay vì phải nhớ dãy số IP, chúng ta chỉ cần nhập tên miền, DNS sẽ tìm kiếm địa chỉ IP […]