Ai là client, ai là server
Client là bên gửi yêu cầu: trình duyệt, app điện thoại, một đoạn script. Server là bên lắng nghe và trả lời: máy chứa web, chứa database. Một máy có thể vừa là server của người này vừa là client của người kia.
// File: server.js
// Node.js http: một server 10 dòng
const http = require('http');
http.createServer((req, res) => {
if (req.url === '/hello') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end('{"msg":"Xin chào!"}');
} else {
res.writeHead(404);
res.end('Không tìm thấy');
}
}).listen(3000);
Vòng đời của một yêu cầu
| Bước | Ai làm | Chuyện gì xảy ra |
|---|---|---|
| 1 | Client | Dựng request: URL, phương thức, dữ liệu gửi |
| 2 | Mạng | Request đi qua DNS, router, tới server |
| 3 | Server | Nhận, xử lý (có thể gọi thêm database) |
| 4 | Server | Dựng response và gửi về |
| 5 | Client | Nhận, render ra màn hình |
Frontend = phần client mà người dùng chạm vào. Backend = phần server xử lý nghiệp vụ. Giao diện là cách client “hỏi”, API là ngôn ngữ hỏi–đáp giữa hai bên.
Stateful vs Stateless
HTTP mỗi request là một lần gặp “người lạ” — server không nhớ bạn là ai sau khi trả lời xong (stateless). Để server nhận diện được bạn ở request sau, client phải gửi kèm “thẻ nhận diện” (token/session). Đây chính là nền của bài Đăng nhập ở khoá sau.
❓ Trong mô hình Client–Server, ai giữ "trạng thái" nhận diện người dùng để các request sau được biết là cùng một người?
- Phân biệt được client và server
- Vẽ được vòng đời 1 request
- Hiểu vì sao HTTP stateless lại cần token
- Tự viết được server hello 10 dòng với Node