HTTP/HTTPS là gì? Cách internet và web hoạt động đơn giản
Mỗi lần bạn gõ địa chỉ website vào trình duyệt và nhấn Enter, có một "cuộc trò chuyện" bí mật diễn ra giữa máy tính của bạn và máy chủ web ở đâu đó trên thế giới. Giao thức điều phối cuộc trò chuyện đó chính là HTTP và HTTPS.
Bài viết này sẽ giải thích HTTP/HTTPS là gì, chúng hoạt động như thế nào và tại sao HTTPS lại quan trọng với bảo mật web hiện đại.
HTTP là gì?
HTTP (HyperText Transfer Protocol – Giao thức truyền tải siêu văn bản) là tập hợp các quy tắc xác định cách dữ liệu được truyền tải giữa trình duyệt web (client) và máy chủ web (server).
Hãy tưởng tượng HTTP như ngôn ngữ chung mà trình duyệt và server dùng để "nói chuyện" với nhau. Khi bạn muốn xem một trang web, trình duyệt gửi yêu cầu bằng "ngôn ngữ HTTP", và server trả lời cũng bằng "ngôn ngữ HTTP".
- HTTP được Tim Berners-Lee phát minh năm 1989
- Phiên bản phổ biến hiện tại: HTTP/1.1, HTTP/2, HTTP/3
- Mặc định dùng cổng (port) số 80
HTTP hoạt động như thế nào? Request và Response
Mỗi khi bạn truy cập một trang web, diễn ra quy trình Request – Response (Yêu cầu – Phản hồi):
- Bạn gõ
https://example.comvà nhấn Enter - Trình duyệt gửi HTTP Request đến server của example.com
- Server nhận request, xử lý và gửi lại HTTP Response
- Trình duyệt nhận response và hiển thị trang web
Cấu trúc HTTP Request
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
Trong đó:
GET: Phương thức HTTP (muốn lấy dữ liệu)/index.html: Đường dẫn tài nguyên muốn lấyHTTP/1.1: Phiên bản giao thứcHost,User-Agent: Các header thông tin bổ sung
Cấu trúc HTTP Response
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1256
<html>
<head><title>Example</title></head>
<body>Nội dung trang web...</body>
</html>
Các phương thức HTTP: GET, POST, PUT, DELETE
HTTP có nhiều "phương thức" (methods) khác nhau, mỗi phương thức có mục đích riêng:
| Phương thức | Mục đích | Ví dụ thực tế |
|---|---|---|
| GET | Lấy dữ liệu | Xem danh sách sản phẩm |
| POST | Gửi/tạo dữ liệu mới | Đăng ký tài khoản, submit form |
| PUT | Cập nhật toàn bộ | Cập nhật hồ sơ cá nhân |
| PATCH | Cập nhật một phần | Đổi ảnh đại diện |
| DELETE | Xóa dữ liệu | Xóa bình luận |
HTTP Status Code – Mã trạng thái HTTP
Khi server trả lời, nó luôn kèm theo một mã số 3 chữ số cho biết kết quả của request. Đây là các mã phổ biến nhất:
2xx – Thành công
- 200 OK: Request thành công, trả về dữ liệu
- 201 Created: Tạo mới dữ liệu thành công
- 204 No Content: Thành công nhưng không có dữ liệu trả về (thường dùng với DELETE)
3xx – Chuyển hướng
- 301 Moved Permanently: URL đã thay đổi vĩnh viễn
- 302 Found: Chuyển hướng tạm thời
4xx – Lỗi phía client
- 400 Bad Request: Request sai format
- 401 Unauthorized: Chưa đăng nhập
- 403 Forbidden: Không có quyền truy cập
- 404 Not Found: Không tìm thấy trang/tài nguyên
5xx – Lỗi phía server
- 500 Internal Server Error: Lỗi trong code server
- 502 Bad Gateway: Server trung gian gặp lỗi
- 503 Service Unavailable: Server đang quá tải hoặc bảo trì
HTTPS là gì? Tại sao cần thiết?
HTTPS (HTTP Secure) = HTTP + mã hóa SSL/TLS
Sự khác biệt quan trọng:
- HTTP: Dữ liệu truyền đi không được mã hóa → ai cũng có thể đọc được (như gửi bưu thiếp)
- HTTPS: Dữ liệu được mã hóa trước khi gửi → chỉ người nhận mới đọc được (như thư trong phong bì có khóa)
Dấu hiệu nhận biết HTTPS: 🔒 ở thanh địa chỉ trình duyệt và URL bắt đầu bằng https://.
SSL/TLS là gì? Nền tảng bảo mật của HTTPS
SSL (Secure Sockets Layer) và TLS (Transport Layer Security) là các giao thức mã hóa. TLS là phiên bản mới hơn và an toàn hơn SSL, nhưng mọi người thường vẫn gọi chung là SSL.
Quá trình bắt tay TLS (TLS Handshake) diễn ra như sau:
- Trình duyệt gửi "xin chào" kèm danh sách thuật toán mã hóa hỗ trợ
- Server gửi lại chứng chỉ SSL (SSL Certificate) do CA uy tín cấp
- Trình duyệt xác minh chứng chỉ hợp lệ
- Cả hai bên tạo ra "session key" bí mật để mã hóa mọi dữ liệu tiếp theo
So sánh HTTP và HTTPS
| Tiêu chí | HTTP | HTTPS |
|---|---|---|
| Bảo mật | ❌ Không mã hóa | ✅ Mã hóa SSL/TLS |
| Port mặc định | 80 | 443 |
| SEO (Google) | Không ưu tiên | ✅ Được ưu tiên |
| Tốc độ | Nhanh hơn chút | Chậm hơn chút (do mã hóa) |
| Khuyến nghị | ❌ Không nên dùng | ✅ Tiêu chuẩn bắt buộc |
Ví dụ thực tế với JavaScript
Khi bạn học lập trình web, bạn sẽ thường xuyên làm việc với HTTP thông qua Fetch API:
// Gửi GET request
fetch('https://api.example.com/users')
.then(response => {
console.log(response.status); // 200
return response.json();
})
.then(data => {
console.log(data); // Dữ liệu từ server
})
.catch(error => {
console.error('Lỗi:', error);
});
// Gửi POST request
fetch('https://api.example.com/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Nguyễn An', age: 22 })
})
.then(response => response.json())
.then(data => console.log('Tạo user thành công:', data));
Tóm tắt những điều cần nhớ
- HTTP là giao thức truyền tải dữ liệu giữa trình duyệt và server
- HTTPS = HTTP + mã hóa → an toàn hơn nhiều
- HTTP Request gồm: phương thức (GET/POST/...), URL, headers, body
- HTTP Response gồm: status code, headers, body (nội dung)
- Luôn dùng HTTPS cho mọi ứng dụng web thực tế
- Status code 2xx = thành công, 4xx = lỗi client, 5xx = lỗi server