Hypertext Transfer Protocol
Tổng quan về mặt kỹ thuật

HTTP hoạt động dựa trên giao thức yêu cầu-phản hồi nằm trong mô hình khách - chủ. Khách có thể là một trình duyệt được một người truy cập thực hiện yêu cầu, còn chủ có thể là một máy chủ web trên đám mây hoặc lưu trữ cục bộ chạy trên một chiếc máy tính quản lý một hay nhiều trang web. Khách sẽ gửi một yêu cầu HTTP lên cho máy chủ. Còn máy chủ (nơi cung cấp các tài nguyên chẳng hạn như tập tin HTML và những nội dung, hoặc thực hiện những chức năng khác thay mặt cho khách) sẽ phản hồi lại thông điệp cho khách. Thông điệp được phản hồi sẽ chứa thông tin hoàn thành yêu cầu như thế nào, và đôi khi cũng sẽ chứa thông tin được yêu cầu trong phần nội dung của nó.
Trình duyệt web là ví dụ điển hình của user agent (UA). Các loại user agent khác có thể kể đến gồm có các công cụ tự động lập chỉ mục được sử dụng bởi các bộ máy tìm kiếm (web crawler), duyệt tìm bằng giọng nói, ứng dụng di động hoặc những phần mềm khác có thể truy cập, tải xuống và hiển thị nội dung web.
HTTP được thiết kế nhằm cải thiện các thành phần mạng trung gian cùng với cho phép liên lạc giữa máy khách và máy chủ. Các trang web có lưu lượng truy cập cao thường tận dụng những ưu điểm từ các máy chủ bộ đệm web (web caching) nhằm cung cấp nội dung thay mặt cho các máy chủ ngược dòng để cải thiện thời gian phản hồi. Trình duyệt web thường sẽ lưu giữ các tài nguyên web đã từng được truy cập trước đó vào bộ nhớ và tái sử dụng chúng bất cứ khi nào có thể để giảm lưu lượng mạng. Máy chủ proxy HTTP ở không gian mạng riêng tư có thể tạo điều kiện liên lạc cho khách mà không cần địa chỉ có thể định tuyến toàn cầu bằng cách chuyển tiếp thông điệp với máy chủ bên ngoài.
Để cho phép các nút HTTP trung gian chẳng hạn như proxy, web cache,... có thể thực hiện được chức năng thì một số tiêu đề HTTP (có trong phần yêu cầu/phản hồi HTTP) sẽ được quản lý theo từng bước (hop-by-hop), trong khi những tiêu đề khác thì được quản lý đầu cuối (tức là chỉ duy nhất một khách đầu nguồn và một máy chủ được chỉ định).
HTTP là một giao thức lớp ứng dụng được thiết kế hoạt động trong khuôn khổ bộ giao thức Internet. Ngoài ra, nó cũng còn được giả định cho là giao thức lớp vận chuyển cơ bản và đáng tin cậy. Trong phiên bản HTTP/3 mới nhất, Transmission Control Protocol (TCP) không còn được sử dụng nữa nhưng các phiên bản cũ thì vẫn còn sử dụng rất nhiều. HTTP cũng được thiết kế và điều chỉnh để sử dụng các giao thức không đáng tin cậy như User Datagram Protocol (UDP), và công nghệ mà HTTP/3 gián tiếp xây dựng dựa trên nó, ví dụ như HTTPU và Simple Service Discovery Protocol (SSDP).
Tài nguyên HTTP cùng vị trí của nó được xác định dựa trên đường dẫn URL (Uniform Resource Locator), sử dụng bộ URI http và https. Theo như định nghĩa RFC 3986, các URL sẽ được mã hoá ở dạng siêu liên kết trong các tập tin tư liệu HTML để hình thành tập tin tư liệu siêu văn bản liên kết với nhau.
Ở phiên bản HTTP/1.0, một kết nối TCP đến cùng máy chủ sẽ được thực hiện cho mỗi yêu cầu tài nguyên.
Ở phiên bản HTTP/1.1, một kết nối TCP có thể được sử dụng nhiều lần để tạo ra nhiều yêu cầu tài nguyên khác (trang HTML, khung, hình ảnh, mã nguồn,...). Nhờ vậy, liên lạc qua HTTP/1.1 sẽ ít gặp độ trễ hơn, vốn dĩ việc thiết lập các kết nối TCP gây ra chi phí đáng kể, đặc biệt trong điều kiện lưu lượng truy cập cao.
HTTP/2 là phần cải tiến của HTTP/1.1 trước đó nhằm giữ lại mô hình khách-chủ và phương pháp giao thức giống nhau nhưng khác nhau ở chỗ:
để sử dụng siêu dữ liệu nhị phân nén (tiêu đề HTTP) thay vì dạng văn bản, để tiêu đề yêu cầu ít không gian hơn;
để sử dụng một kết nối TCP/IP duy nhất (thường đã được mã hoá) cho mỗi tên miền máy chủ được truy cập thay vì từ 2 cho tới 8 kết nối TCP/IP;
để sử dụng một hoặc nhiều luồng stream hai chiều cho mỗi kết nối TCP/IP trong đó các yêu cầu/phản hồi HTTP được chia nhỏ và truyền thành từng gói (packet) nhỏ để gần như giải quyết được vấn đề HOLB (head-of-line blocking).
để thêm khả năng "đẩy", cho phép ứng dụng máy chủ gửi dữ liệu đến máy khách bất cứ khi nào có dữ liệu mới (không bắt buộc máy khách phải yêu cầu dữ liệu mới định kỳ đến máy chủ bằng cách sử dụng phương pháp polling).
Nhờ đó, liên lạc qua HTTP/2 sẽ giảm độ trễ đi nhiều, và nhiều lúc còn chạy nhanh hơn cả liên lạc qua HTTP/1.1.
HTTP/3 là bản tinh chỉnh của HTTP/2 nhằm sử dụng giao thức truyền tải QUIC + UDP thay cho TCP. Trước đó, phiên bản kết nối TCP/IP được sử dụng, thì giờ đây chỉ có lớp IP (được xây dựng trên UDP, như TCP) cũng cải thiện một chút tốc độ liên lạc trung bình và để tránh sự cố tắc nghẽn kết nối TCP không thường xuyên (rất hiếm) có thể tạm thời chặn đứng hoặc làm chậm luồng dữ liệu của tất cả các stream của nó (dạng khác của "head of line blocking").