What is HTTP/1.1?
HTTP/1.1 is the persistent-connection version of the Hypertext Transfer Protocol, defined in RFC 2616 and updated by RFCs 7230-7235, enabling multiple requests and responses over a single TCP connection.
HTTP/1.1 is a revision of the Hypertext Transfer Protocol that introduced persistent connections, chunked transfer encoding, and mandatory Host headers. It was first standardized in RFC 2616 in June 1999, replacing HTTP/1.0. The protocol is a request-response application-layer protocol that runs over TCP, typically on port 80 for unencrypted traffic and port 443 for HTTPS.
HTTP/1.1 improved performance by allowing clients to reuse a single TCP connection for multiple requests and responses, eliminating the overhead of establishing a new connection for each resource. It also introduced pipelining, where a client could send multiple requests without waiting for each response, though this feature was rarely implemented correctly due to head-of-line blocking. Other key features include chunked transfer encoding for streaming dynamic content, byte-range requests for partial content retrieval, and cache-control directives for fine-grained caching behavior.
In the internet stack, HTTP/1.1 sits at the application layer, using TCP for reliable transport. It is the foundation of the modern web, supporting billions of websites. The original RFC 2616 was obsoleted by RFC 7230 through RFC 7235 in June 2014, which clarified ambiguities and improved security. Despite the emergence of HTTP/2 and HTTP/3, HTTP/1.1 remains widely deployed due to its simplicity and broad compatibility.
Key facts
- Standardized in RFC 2616 (1999), updated by RFCs 7230-7235 (2014).
- Introduced persistent connections, reducing TCP handshake overhead.
- Mandatory Host header enables virtual hosting on a single IP address.
- Chunked transfer encoding allows streaming of dynamically generated content.
- Pipelining allowed multiple requests without waiting, but suffered from head-of-line blocking.
How it works in practice
Related terms
References
- RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1
- RFC 7230: Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
- RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
- RFC 7232: Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests
- RFC 7233: Hypertext Transfer Protocol (HTTP/1.1): Range Requests
- RFC 7234: Hypertext Transfer Protocol (HTTP/1.1): Caching
More in Web Protocols
CORS
CORS (Cross-Origin Resource Sharing) is a browser security mechanism that lets servers explicitly allow web pages from one origin to request resources from a different origin via HTTP response headers.
GraphQL
GraphQL is a query language and runtime for APIs that lets clients request exactly the data they need in a single round trip, reducing over-fetching and under-fetching.
gRPC
gRPC is a high-performance, open-source remote procedure call framework initially developed by Google. It uses HTTP/2 for transport, Protocol Buffers as its interface definition language and message serialization format, and supports bidirectional streaming.
HTTP
HTTP is a text-based request-response protocol that defines how web clients and servers exchange resources, forming the foundation of data communication on the World Wide Web.
HTTP Pipelining
HTTP Pipelining is a technique in HTTP/1.1 that sends multiple requests on a single connection without waiting for each response, now largely replaced by HTTP/2 multiplexing.
HTTP Status Code
A three-digit integer in an HTTP response that indicates the result of the server's attempt to process the request, grouped into five classes (1xx through 5xx).
HTTP/2
HTTP/2 is a binary, multiplexed version of HTTP that reduces latency through header compression, stream prioritization, and server push, as defined in RFC 7540.
HTTP/3
HTTP/3 is the third major version of the Hypertext Transfer Protocol, which runs over QUIC instead of TCP to reduce latency, eliminate head-of-line blocking, and improve connection setup time.
HTTPS
HTTPS (HTTP Secure) is HTTP traffic encrypted inside a TLS session, protecting data confidentiality, integrity, and server authenticity between a client and a web server.
Keep-Alive
Keep-Alive, also called persistent connection, allows multiple HTTP requests and responses over a single TCP connection, reducing latency and overhead compared to opening a new connection per request.