HTTP như chúng ta đã biết, là giao thức truyền thông siêu văn bản được sử dụng rộng rãi trên mạng Internet ngày nay. Stringee đã có bài viết phân tích về giao thức này, tuy nhiên bạn liệu có biết đằng sau nó là gì hay không? Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về HTTP Message, phương thức để giao thức HTTP có thể giao tiếp giữa các máy tính nhé.

1. HTTP Message là gì?

Các yêu cầu được tạo bởi client gửi tới web server và khi các web server gửi lại dữ liệu được gọi lần lượt là HTTP request và HTTP response. Chúng đều được gọi là HTTP message, là các message có cấu trúc đơn giản.

HTTP Message rất đơn giản, ta hoàn toàn có thể đọc được mà không nhất thiết phải có công cụ phân tích riêng biệt, nó làm giảm đi sự phức tạp khi phát triển hay khi debug ứng dụng.

2. Mô hình truyền tải của HTTP: client/server

Khi client kết nối đến server, một phiên làm việc HTTP sẽ trải qua một số bước như sau:

Bước 1: Mở kết nối TCP dựa trên địa chỉ được xác định bởi URL. Ta sẽ có một hostname và một cổng để tạo kết nối. Kết nối này sẽ được dùng để gửi các yêu cầu và nhận các phản hồi. Client có thể mở kết nối mới mỗi khi kết nối, sử dụng lại kết nối hoặc mở nhiều kết nối mà không gặp vấn đề gì.

Bước 2: Gửi HTTP Message (request) tới server. Client sẽ tạo một nội dung text và gửi đến server. Với phiên bản HTTP/2 thì nội dung HTTP Message được bao bọc trong các frame, nó làm cho người không đọc được một cách trực tiếp - tuy nhiên ý nghĩa nội dung thì không đổi so với HTTP/1.1.

* using HTTP/1.x
> GET / HTTP/1.1
> Host: stringee.com
> User-Agent: curl/8.4.0
> Accept: */*
> 
< HTTP/1.1 302 Found
< server: nginx
< date: Wed, 28 Feb 2024 16:09:42 GMT
< content-type: text/html; charset=UTF-8
< transfer-encoding: chunked
< x-powered-by: Stringee Framework
< set-cookie: PHPSESSID=3g3hp7ndg74rp6qhta80lt82p8; path=/
< expires: Thu, 19 Nov 1981 08:52:00 GMT
< cache-control: no-store, no-cache, must-revalidate
< pragma: no-cache
< set-cookie: stringee_referer_url=stringee.com; expires=Tue, 28 May 2024 16:09:42 GMT; Max-Age=7776000; path=/; domain=.stringee.com
< set-cookie: stringee_utm_source=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; domain=.stringee.com
< set-cookie: stringee_utm_medium=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; domain=.stringee.com
< set-cookie: stringee_utm_campaign=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; domain=.stringee.com
< set-cookie: stringee_utm_term=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; domain=.stringee.com
< set-cookie: stringee_utm_content=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; domain=.stringee.com
< set-cookie: stringee_gclid=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; domain=.stringee.com
< set-cookie: stringee_fbclid=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; domain=.stringee.com
< set-cookie: user_language=vi; expires=Wed, 08 May 2024 16:09:42 GMT; Max-Age=6048000; path=/; domain=.stringee.com
< location: https://stringee.com/vi
< vary: Accept-Encoding,Origin
< access-control-allow-headers: X-STRINGEE-AUTH, Content-Type, *
< access-control-max-age: 3628800
< access-control-expose-headers: Authorization, authenticated
< access-control-allow-methods: GET,POST,PUT,DELETE,OPTIONS
< set-cookie: SRVNAME=SF; path=/; HttpOnly; Secure; SameSite=Strict

>>> Xem thêm bài viết:

HTTP là gì? Tìm hiểu về giao thức HTTP và HTTPS

HTTP request là gì? Các phương thức HTTP request

Hướng dẫn cài đặt unix linux 

Bước 3: Đọc HTTP Message nhận được từ server (response). Phản hồi trả về từ server có cấu trúc tương tự HTTP request. Đây là một response ví dụ:

HTTP/1.0 200 OK
Date: Sat, 13 Feb 2021 09:59:11 GMT
Server: nginx
Accept-Ranges: bytes
Content-Length: 54545
Content-Type: text/html; charset=UTF-8

<!DOCTYPE html><html lang="vi">...

3. Sơ lược về quá trình phát triển của HTTP Message

HTTP Message là các thông tin được trao đổi qua lại giữa client và server. Có hai kiểu HTTP Message: HTTP Request Message được gửi đi bởi client tới server - khi server nhận được nó biết phải thực hiện nhiệm vụ nào đó, HTTP Response Message là trả lời từ server về cho client.

HTTP Message trong phiên bản HTTP/1.1 có các thành phần dữ liệu trình bày trong định dạng text (plain text) mà người có thể đọc hiểu. Trong bản HTTP/2 thì các thành phần đưa vào định dạng nhị phân (binary) là các frame làm cho người không đọc được trực tiếp nữa. Tuy vậy ý nghĩa của các thành phần trong HTTP Message giữa hai phiên bản không đổi. Do vậy, ở đây trình bày về HTTP/1.1 nhưng vẫn có thể áp dụng cho HTTP/2.

HTTP/1.1 (chuẩn hóa năm 1997) là phiên bản giao thức HTTP mặc định trong các trình duyệt, server http ngày nay. HTTP/2 (chuẩn hóa năm 2015) là phiên bản tiếp theo đang dần phổ biến (đặc biệt là tốc độ, an toàn, nén và ghép kênh), nếu server http của bạn hỗ trợ HTTP/2 thì hầu hết các browser sẽ tự động sử dụng giao thức HTTP/2.

Request và Response có những dữ liệu khác nhau nhưng chúng chia sẻ chung một cấu trúc, ví dụ dưới đây là một request và response (bạn có thể dùng Developer Tool trong trình duyệt Chrome hoặc ứng dụng Postman hoặc ứng dụng Fiddler để có thể đọc request/response).

4. Cấu trúc HTTP Message

Cấu trúc chung của Request/Response có 4 thành phần:

  • Dòng đầu tiên (một dòng): Cho biết thông tin yêu cầu hoặc trạng thái (thành công hay lỗi) của response.
  • Phần header (các dòng sau dòng đầu tiên trước một dòng trắng): Nó là một tập hợp các dòng chứa thông tin về HTTP Message, thông tin về phần body

Một dòng trắng cho biết phần thông tin (dòng đầu và header) đã gửi hết

  • Phần body chứa dữ liệu đính kèm với request (như HTML Form) hoặc nội dung văn bản đính kèm cùng response. Kích cỡ dữ liệu này (size) có được xác định bởi thông tin trong header.

Mặc dù có cấu trúc chung nhưng về chi chi tiết Request và Response có những đặc điểm riêng.

Kết bài

HTTP message thực chất là thông tin của các bản tin HTTP Request được gửi đi từ phía client đến web server, chúng sẽ nắm giữ các thông tin mà máy chủ cần hiểu và xử lý trước khi gửi lại cho client. Mong rằng qua bài viết này Stringee đã giúp các bạn hiểu thêm một phần về cách mà giao thức HTTP hoạt động.


Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy,  Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: