Giao Thức HTTP/HTTPS là gì ? khái niệm và cách hoạt động
Ý kiến
0
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Dù bạn đang định hướng theo đuổi Frontend, Backend, hay Quản trị hệ thống mạng, có một kiến thức nền tảng mang tính bắt buộc: Giao thức HTTP và HTTPS.
Đừng chỉ nhình chúng như những chữ cái vô thưởng vô phạt đứng đầu mỗi đường link URL. HTTP/HTTPS chính là ‘luật chơi’ quyết định toàn bộ cách mà trình duyệt (Client) và máy chủ (Server) giao tiếp dữ liệu. Từ cách phân loại phương thức (GET,POST), cách gắn thẻ (Headers) cho đến những mã lỗi ám ảnh (như 404 Not Found hay 500 Server Error,..) tất cả sẽ được mình giải mã một cách tường tận và dễ hiểu nhất trong bài viết dưới đây."
Để hiểu sâu về HTTP hay HTTPS, trước tiên chúng ta phải nắm rõ hai “nhân vật chính” trong mọi cuộc giao tiếp trên Internet: Client (Máy khách) và Server( Máy chủ ). Bạn cứ hình dung đây là một cuộc hội thoại có người hỏi và người trả lời.
Client (Người yêu cầu): Đây chính là thiết bị hoặc phần mềm bạn đang sử dụng. Nó có thể là trình duyệt Chrome, Cốc Cốc trên laptop, một ứng dụng trên điện thoại, hay thậm chí là một đoạn code Python bạn viết để tự động cào dữ liệu (crawl data). Vai trò của Client luôn là khởi phát yêu cầu.
Server( Người phục vụ): Đây là những hệ thống máy tính có cấu hình mạnh mẽ, hoạt động liên tục 24/7. Server lưu trữ dữ liệu (mã nguồn trang web, hình ảnh, video, cơ sở dữ liệu…) và luôn trong trạng thái “lắng nghe”. Nhiệm vụ của nó là tiếp nhận yêu cầu từ Client và trả về kết quả tương ứng.
Bất kể bạn lướt Facebook, xem phim hay cấu hình một hệ thống mạng, mọi thao tác đều tuân theo một vòng lặp cơ bản gồm 3 bước:
Gửi Request: Khi bạn gõ một địa chỉ trang web và nhấn Enter, hoặc click vào một nút bấm, Client sẽ ngay lập tức tạo ra một gói tin yêu cầu (HTTP Request) và gửi nó đi qua môi trường Internet để tìm đến đúng địa chỉ của Server.
Xử lý Logic: Khi Server nhận được Request, nó sẽ bóc táhc gói tin này ra để xem Client đang muốn gì (muốn tải trang chủ, hay muốn đăng nhập tài khoản ?). Sau đó, Server tiến hành xử lý các logic tính toán hoặc truy xuất cơ sở dữ liệu để lấy thông tin.
Trả về Response: Cuối cùng, Server đóng gói kết quả vừa tìm được thành một gói tin phản hồi (HTTP Response) và gửi ngược trở lại cho Client. Trình duyệt của bạn sẽ nhận lấy gói tin này, dịch mã và “vẽ” ra giao diện trang web hiển thị trên màn hình.
Toàn bộ quá trình đi - về này thường chỉ diễn ra trong vài chục đến và trăm mili-giây. Tuy nhiên, để hàng tỷ chiếc máy tính (Client) và máy chủ (Server) trên toàn thế giới có thể bóc tách và hiểu được gói tin của nhau mà không bbị “ ông nói gà, bà nói vịt” , chúng ta bắt buộc phải tuân theo một bộ quy chuẩn chung.
Và bộ quy chuẩn ngôn ngữ chung đó, không gì khác chính là giao thức HTTP và HTTPS.
Trước khi bóc tách xem một gói tin có gì bên trong, chúng ta cần làm rõ khái niệm nền tảng của hai giao thức này vì lý do vì sao chữ “S” lại mang tính sống còn đối với website.
HTTP (Giao thức truyền tải siêu văn bản) là bộ quy tắc nền tảng cốt lỗi của World Wide Web. Nhiệm vụ của nó là định dạng và truyền tải dữ liệu (văn bản, hình ảnh, video…) giữa Client (Trình duyệt) và Server (Máy chủ).
Đặc điểm: HTTP giao tiếp qua Port 80.
Lổ hổng chết người: Dữ liệu được truyền đi dưới dạng văn bản thuần túy (Plain text).
Hiểu đơn giản: Dùng giống như bạn viết mật khẩu lên một tấm bưu thiếp và gửi qua bưu điện. Bất kỳ ai trên đường truyền – từ nhà mạng cho đến các Hacker sử dụng kỹ thuật tấn công Man-in-the-Middle (Người đứng giữa) – đều có thể dễ dàng "nhìn trộm" toàn bộ thông tin nhạy cảm của bạn bằng các công cụ bắt gói tin (như Wireshark).
HTTPS chính là phiên bản nâng cấp hoàn hảo của HTTP, với chữ “S” đại diện cho Secure (Bảo mật). Nó không thay đổi các Client và Server nói chuyện, mà nó bổ sung thêm một “lớp áo giáp “ cho dữ liệu trước khi truyền đi trên Internet.
Đặc điểm: HTTPS giao tiếp qua Port 443 và bắt buộc Server phải cài đặt chứng chỉ bảo mật (SSL/TLS Certificate).
Thay vì một bấm bưu thiếp trống không, HTTP biến gói tin của bạn thành một chiếc két sắt được khóa mã hóa. Giao thưc này bảo vệ người dùng thông qua 3 cơ chế cốt lỗi:
Mã hóa (Encryption): trước khi gói tin rời khỏi thiết bị của bạn, toàn bộ dữ liệu (như password: 123456) sẽ được trộn thành một chuỗi ký tự lộn xộn, vô nghĩa (ví dụ: x9$K#pL2@!). Hacker dù có thể lấy được gói tin cũng không thể giải mã nếu không có khóa bí mật (Private Key) nằm trên Server.
Tính toàn vẹn dữ liệu (Data Integrity): Đảm bảo gói tin không bị sửa đổi, cắt xén hay nhét thêm mã độc vào giữa chừng. Bất kì can thiệp nào cũng sẽ khiến gói tin bị hủy ngay lập tức.
Xác thực (Authentication): Chứng chỉ SSL/TLS giống như một “Căn cước công dân” điện tử của website. Nó giúp trình duyệt của bạn xác nhận rằng “ Tôi đang kết nối với máy chủ thật của Ngân hàng, chứ không phỉa một trang web giả mạo do hacker dựng lên”.
Tóm lại: Trong bối cảnh công nghệ hiện tại, HTTPS là tiêu chuẩn bắt buộc. Các trình duyệt như Google Chrome sẽ lập tức cảnh báo đỏ “Không an toàn” (Not Secure) nếu website cố tình sử dụng HTTP nguyên thủy.
Chúng ta vừa giải quyết xong lớp vỏ bảo mật. Ở phần tiếp theo, chúng ta sẽ mở tung gói tin Request và Response ra để xem bên trong "bộ lòng" của chúng chứa những gì, đặc biệt là sự xuất hiện của bộ 4 quyền lực: GET, POST, PUT, DELETE.
Khi Client gửi yêu cầu đến Server, nó không chỉ gọi cửa đơn thuần mà phải chỉ định rõ hành động nó muốn thực hiện. Các hành động này được gọi là HTTP Methods (Phương thức HTTP).
Trong hàng tá phương thức khác nhau, bạn chỉ cần nắm vững 4 phương thức nền tảng nhất (tương ứng với các thao các Create, Read, Update, Delete -CRUD trong cơ sở dữ liệu):
GET (Đọc dữ liệu): Dùng để gửi yêu cầu Server trả về một tài nguyên. Ví dụ: khi bạn truy cập trang chủ của blog này, trình duyệt gửi một lệnh GET để lấy mã HTML về để hiển thị. Dữ liệu gửi đi thường lộ rõ trên thanh URL.
POST (Tạo mới): Dùng để gửi dữ liệu từ Client lên Server để tạo một tài nguyên mới. Ví dụ: Khi bạn điền form đăng ký tài khoản , thông tin (Username, password) sẽ được giấu kín trong phần Body của Request.
PUT (Cập nhật): Yêu cầu Server cập nhật hoặc thay thế toàn bộ một dữ liệu đã có sẵn. Ví dụ: Bạn vào trang cá nhân và đổi avatar cùng tên hiển thị mới.
DELETE(Xóa): Yêu cầu Server xóa bỏ một dữ liệu cụ thể. Ví dụ: Bạn nhấn nút xóa một bài viết trên blog.
💡 Note: Giao tiếp HTTP/HTTPS không chỉ có phương thức. Nó là một gói tin hoàn chỉnh bao gồm: Start Line (chứa Method và URL), Headers (thông tin bổ sung), và Body (dữ liệu thực tế được gửi đi - thường dùng cho POST/PUT).
Nếu URL và Methods cho biết mục tiêu và hành động, thì Headers chính là phần chứa các “siêu dữ liệu” (metadata) mô tả bối cảnh của cuộc giao tiếp. Dưới đây là 4 loại Header cực kỳ quan trọng mà lập trình viên nào cũng phải biết:
User-Agent: Chứa thông tin về thiết bị và trình duyệt của Client. Nhờ dòng này, Server biết bạn đang dùng iPhone (Safari) hay Laptop Windows (Chrome) để trả về giao diện (Responsive) phù hợp nhất.
Cookie: Chìa khóa để web "nhớ" bạn là ai. Vì HTTP là giao thức Stateless (không lưu trạng thái), Cookie chứa các đoạn mã phiên (session) giúp bạn chuyển trang mà không phải đăng nhập lại liên tục.
Content-Type: Định nghĩa định dạng dữ liệu đang được gửi đi.
Ví dụ: application/json (dữ liệu dạng JSON), text/html (dữ liệu HTML), hoặc multipart/form-data (khi bạn upload file, hình ảnh).
Authorization: Chứa các thông tin xác thực, thường là các chuỗi Token (như JWT). Khi bạn gọi các API yêu cầu tính bảo mật cao, Server sẽ check Header này đầu tiên xem bạn có quyền truy cập hay không.
Sau khi xử lý xong Request, Server luôn báo cáo kết quả bằng một con số có 3 chữ số, gọi là Status Code. Thay vì học thuộc lòng hàng chục mã khác nhau, bạn chỉ cần nhớ ý nghĩa của các nhóm số đầu tiên:
Nhóm Mã | Ý nghĩa | Các mã phổ biến thường gặp |
2xx | Thành công: Mọi thứ trơn tru. | 200 OK: Lấy dữ liệu thành công. 201 Created: Tạo mới dữ liệu thành công. |
3xx | Chuyển hướng: Tài nguyên đã dời đi. | 301 Moved Permanently: Chuyển hướng vĩnh viễn (Rất quan trọng cho SEO). |
4xx | Lỗi từ Client: Bạn đã làm sai gì đó. | 400 Bad Request: Gửi sai định dạng. 401 Unauthorized: Chưa đăng nhập. 403 Forbidden: Đã đăng nhập nhưng không có quyền. 404 Not Found: Không tìm thấy URL. |
5xx | Lỗi từ Server: Server đang gặp sự cố. | 500 Internal Server Error: Lỗi code Backend hoặc lỗi Database. 503 Service Unavailable: Server quá tải/Bảo trì. |
Đến đây, hy vọng bạn đã có một cái nhìn tổng quan và rõ nét nhất về cách thế giới Internet vận hành bên dưới các lớp tình duyệt. Hiểu sâu về HTTP/HTTPS, cách bóc tách Request/Response, và đọc vị các Status Code không chỉ giúp bạn làm việc trơn tru hơn với cá API mà còn là nền tảng vững chắc để xây dựng các hệ thống an toàn bảo mật.