HTTP là gì?
HTTP (Hypertext Transfer Protocol) là tập hợp các quy tắc để truyền tệp – chẳng hạn như văn bản, hình ảnh, âm thanh, video và các tệp đa phương tiện khác – website. HTTP là nền tảng truyền tải dữ liệu cho world wide web.
Ngay sau khi người dùng mở web browser của họ, họ đang gián tiếp sử dụng HTTP. HTTP là một giao thức ứng dụng chạy trên bộ giao thức TCP / IP, tạo nên nền tảng của internet. Phiên bản mới nhất của HTTP là HTTP / 2, được xuất bản vào tháng 5 năm 2015. Nó là một giải pháp thay thế cho người tiền nhiệm của nó, HTTP 1.1, nhưng không làm cho nó trở nên lỗi thời.
Các bài viết liên quan:
Cách thức hoạt động của HTTP
Thông qua giao thức HTTP, tài nguyên được trao đổi giữa các thiết bị khách và máy chủ qua internet(Client – server). Các thiết bị khách gửi Request đến máy chủ về các tài nguyên cần thiết để tải một trang web; các máy chủ gửi Response trở lại máy khách để thực hiện các Request. Các Request và Response chia sẻ các tài liệu phụ – chẳng hạn như dữ liệu về hình ảnh, văn bản, bố cục văn bản, v.v. – được trình duyệt web của khách hàng ghép lại với nhau để hiển thị toàn bộ file web page.
Ngoài các tệp trang web mà nó có thể phân phát, một máy chủ web còn chứa một daemon HTTP, một chương trình chờ các Request HTTP và xử lý chúng khi chúng đến. Trình duyệt web là một máy khách HTTP gửi Request đến web server. Khi người dùng trình duyệt nhập các Request tệp bằng cách “mở” tệp web bằng cách nhập URL hoặc nhấp vào liên kết siêu văn bản, trình duyệt sẽ tạo một Request HTTP và gửi Request đó đến địa chỉ Giao thức Internet (địa chỉ IP) được chỉ định bởi URL. Daemon HTTP trong máy chủ đích nhận Request và gửi lại tệp được Request hoặc các tệp được liên kết với Request.
Sơ đồ của máy khách, internet và máy chủ http
Các thiết bị khách sử dụng HTTP để giao tiếp với máy chủ trực tuyến và truy cập các trang web.
Để mở rộng ví dụ này, một người dùng muốn truy cập websitehcm.com.
Người dùng nhập địa chỉ web và máy tính sẽ gửi Request “GET” tới máy chủ lưu trữ địa chỉ đó.
Request GET đó được gửi bằng HTTP và cho máy chủ websitehcm biết rằng người dùng đang tìm kiếm mã HTML (Ngôn ngữ đánh dấu siêu văn bản) được sử dụng để cấu trúc và cung cấp cho trang đăng nhập giao diện.
Văn bản của trang đăng nhập đó được bao gồm trong Response HTML, nhưng các phần khác của trang – đặc biệt là hình ảnh và video của trang – được Request bởi các Request và Response HTTP riêng biệt.
Càng nhiều Request được thực hiện – ví dụ: gọi một trang có nhiều hình ảnh – máy chủ sẽ mất nhiều thời gian hơn để Response các Request đó và để hệ thống của người dùng tải trang.
Khi các cặp Request / Response này đang được gửi đi, chúng sử dụng TCP / IP để giảm và vận chuyển thông tin trong các gói nhỏ gồm các chuỗi nhị phân của văn bản. Các gói này được gửi vật lý thông qua dây điện, cáp quang và mạng không dây.
Các Request và Response mà máy chủ và máy khách sử dụng để chia sẻ dữ liệu với nhau bao gồm mã ASCII. Các Request nêu rõ thông tin mà khách hàng đang tìm kiếm từ máy chủ; câu trả lời chứa mã mà trình duyệt khách hàng sẽ dịch thành một trang web.
HTTP so với HTTPS
HTTPS là việc sử dụng Lớp cổng bảo mật (SSL) hoặc Bảo mật lớp truyền tải (TLS) làm lớp con trong lớp ứng dụng HTTP thông thường. HTTPS mã hóa và giải mã các Request trang HTTP của người dùng cũng như các trang được máy chủ web trả về. Nó cũng bảo vệ khỏi bị nghe trộm và các cuộc tấn công man-in-the-middle (MitM). HTTPS được phát triển bởi Netscape. Việc chuyển từ HTTP sang HTTPS được coi là có lợi vì nó cung cấp thêm một lớp bảo mật và tin cậy.
Request và Response HTTP
Mỗi tương tác giữa máy khách và máy chủ được gọi là một thông điệp. Thông báo HTTP là các Request hoặc Response. Các thiết bị khách gửi các Request HTTP đến các máy chủ, các máy chủ này sẽ trả lời bằng cách gửi lại các Response HTTP cho các máy khách.
Request HTTP. Đây là khi thiết bị khách, chẳng hạn như trình duyệt internet, Request máy chủ cung cấp thông tin cần thiết để tải trang web. Request cung cấp cho máy chủ thông tin mong muốn mà nó cần để điều chỉnh phản ứng của nó cho phù hợp với thiết bị khách. Mỗi Request HTTP chứa dữ liệu được mã hóa, với thông tin như:
- Version HTTP. HTTP và HTTP / 2 là hai phiên bản.
- URL. Điều này trỏ đến tài nguyên trên web.
- Method HTTP. Điều này cho biết hành động cụ thể mà Request mong đợi nhận được từ máy chủ trong Response của nó.
- Header Request HTTP. Điều này bao gồm dữ liệu như loại trình duyệt đang được sử dụng và dữ liệu mà Request đang tìm kiếm từ máy chủ. Nó cũng có thể bao gồm cookie, hiển thị thông tin được gửi trước đó từ máy chủ xử lý Request.
- HTTP body. Đây là thông tin tùy chọn mà máy chủ cần từ Request, chẳng hạn như biểu mẫu người dùng – đăng nhập tên người dùng / mật khẩu, Response ngắn và tải lên tệp – đang được gửi đến trang web.
Response HTTP. Thông báo Response HTTP là dữ liệu được thiết bị khách nhận được từ máy chủ web. Như tên gọi của nó, Response là Response của máy chủ đối với một Request HTTP. Thông tin có trong Response HTTP được điều chỉnh cho phù hợp với ngữ cảnh mà máy chủ nhận được từ Request. Các Response HTTP thường bao gồm các dữ liệu sau:
- HTTP status code, cho biết trạng thái của Request đối với thiết bị khách. Các Response có thể cho biết thành công, Response thông tin, chuyển hướng hoặc lỗi ở phía máy chủ hoặc máy khách. Xem thêm Http response code
- HTTP response headers, gửi thông tin về máy chủ và các tài nguyên được Request.
- An HTTP body (optional). Nếu Request thành công, dữ liệu này chứa dữ liệu được Request ở dạng mã HTML, được trình duyệt khách dịch sang trang web.
Proxy trong HTTP
Proxy, hoặc máy chủ proxy, là máy chủ lớp ứng dụng, máy tính hoặc các máy khác đi giữa thiết bị khách và máy chủ. Proxy chuyển tiếp các Request và Response HTTP giữa máy khách và máy chủ. Thông thường, có một hoặc nhiều proxy cho mỗi tương tác giữa máy khách-máy chủ.
Proxy có thể trong suốt hoặc không trong suốt. Các proxy minh bạch không sửa đổi Request của khách hàng mà gửi nó đến máy chủ ở dạng ban đầu. Các proxy không minh bạch sẽ sửa đổi Request của khách hàng trong một số khả năng. Các proxy không minh bạch có thể được sử dụng cho các dịch vụ bổ sung, thường là để tăng tốc độ truy xuất của máy chủ.
Các nhà phát triển web có thể sử dụng proxy cho các mục đích sau:
- Bộ nhớ đệm. Máy chủ bộ nhớ đệm có thể lưu các trang web hoặc nội dung internet khác cục bộ, để truy xuất nội dung nhanh hơn và giảm nhu cầu về băng thông của trang web.
- Xác thực. Kiểm soát đặc quyền truy cập vào các ứng dụng và thông tin trực tuyến.
- Ghi nhật ký. Lưu trữ dữ liệu lịch sử, chẳng hạn như địa chỉ IP của máy khách đã gửi Request đến máy chủ.
- Lọc web. Kiểm soát quyền truy cập vào các trang web có thể ảnh hưởng đến bảo mật hoặc bao gồm nội dung không phù hợp.
- Cân bằng tải. Các Request của khách hàng đến máy chủ có thể được xử lý bởi nhiều máy chủ, thay vì chỉ một máy chủ.