HTTP protocols

Internet1.svg.png

Thật ra HTTP là gì? Tại sao khi tôi truy cập một trang web thì lúc nào cũng thấy có HTTP hoặc HTTPS xuất hiện ở thanh địa chỉ trình duyệt? 

HTTP là chữ viết tắt của HyperText Transfer Protocol, dịch là giao thức truyền tải siêu văn bản. Thứ nhất, nó được gọi là giao thức vì nó là một bộ chuẩn quy tắc giao tiếp giữa các máy tính trong mạng lưới máy tính toàn cầu. Thứ hai, nó giúp cho việc truyền tải văn bản bởi vì giao thức này được ra đời với mục đích truyền tải các văn bản dưới dạng text có liên kết với nhau gọi là siêu văn bản. Nằm trong bộ giao thức TCP/IP, HTTP là nền tảng cho hệ thống web hiện tại, nó hoạt động dựa trên mô hình Client – Server như hình mô tả dưới đây:

http1-request-response

Trong mô hình này, các máy tính của người dùng sẽ đóng vai trò làm máy khách (Client). Sau một thao tác nào đó của người dùng, các máy khách sẽ gửi yêu cầu đến máy chủ (Server) và chờ đợi phản hồi từ những máy chủ này.

Để có thể nói chuyện được với nhau, các máy chủ và máy khách phải thực hiện việc trao đổi thông qua các giao thức. Một trong những giao thức được sử dụng thường xuyên nhất chính là HTTP.

Khi bạn gõ một địa chỉ Web URL vào trình duyệt Web, một lệnh HTTP sẽ được gửi tới Web server để ra lệnh và hướng dẫn nó tìm đúng trang Web được yêu cầu. Trang Web này sau đó sẽ được kéo về và mở trên trình duyệt Web. Nói đơn giản hơn, HTTP là giao thức giúp cho việc truyền tải file từ một Web server vào một trình duyệt Web để người dùng có thể xem một trang Web đang hiện diện trên trình duyệt.

Đã hiểu, vậy ra HTTP là một giao thức giao đổi dữ liệu nền tảng của web. Có thể giải thích rõ hơn về giao thức này được không?

HTTP cho phép giao tiếp diễn ra giữa các máy chủ và máy khách khác nhau, với những cấu hình mạng phức tạp. Trao đổi dữ liệu như vậy thường xảy ra trong tầng TCP/IP, cổng 80, tuy nhiên các kênh truyền và cổng khác cũng có thể được sử dụng. Việc trao đổi thông tin sẽ được thông qua một cặp request/response như hình vẽ dưới đây

image-1415117606-http-1

Client khởi tạo một thông điệp HTTP request, và được trả lời qua một thông điệp HTTP response.

Các thông điệp được  gửi qua URL, mặc định là cổng 80

http1-url-structure

URL sẽ giúp chỉ định host mà ta muốn liên lạc đến, nhưng các hành động mà ta muốn thực hiện trên đấy sẽ được chỉ định qua các HTTP verb.

Các HTTP verb?

Đúng vậy, HTTP verb tương ứng với các action mà client muốn thực thi lên server. Các request verbs này là:

  • GET: lấy dữ liệu từ một resource có sẵn, dựa vào thông tin có trong URL
  • POST: tạo ra một resource mới. POST request thường kèm theo một lượng data để chỉ định data của resource mới sẽ được tạo ra.
  • PUT: update một resource có sẵn. Data kèm theo có thể bao gồm dữ liệu sẽ được update vào resource.
  • DELETE: xoá một resource có sẵn.

4 verb nói trên là phổ biến nhất và hầu hết các công cụ và framework đều chỉ sử dụng chủ yếu những request verb này. PUT và DELETE thi thoảng được coi là những phiên bản đặc biệt của POST , và chúng có thể được đóng gói như là POST request với data đi kèm chứa các action chính xác: create, update hay delete.

Ngoài ra còn có các verb ít dùng mà HTTP hỗ trợ:

  • HEAD: tương tự như GET, nhưng không có message body. Nó được dùng để lấy server header của một resource nào đó, thường là để kiểm tra xem resource có thay đổi gì không (dùng timestamp).
  • TRACE: dùng để lấy các bước nhảy mà request đi qua từ server. Mỗi proxy hay gateway trung gian sẽ đưa địa chỉ IP hay DNS name vào trường header. Việc này có thể dành cho mục đích chuẩn đoán lỗi.
  • OPTIONS: dùng để lấy thông tin về khả năng đáp ứng của server (những action và param tương ứng mà nó hỗ trợ). Về phía client, nó có thể dùng để sửa đổi request dựa trên những gì mà server có thể đáp ứng.

Leave a comment