HTTP(S)
HTTP (Hypertext Transfer Protocol) is a protocol used for transmitting hypertext (such as HTML) over the internet. It is the foundation of any data exchange on the Web and it is a protocol used for transmitting documents in a hypertext format. HTTP follows a client-server model where the client makes a request and the server provides a response.
HTTPS (Hypertext Transfer Protocol Secure) is an extension of HTTP. It is used for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protocol is encrypted using Transport Layer Security (TLS) or, formerly, Secure Sockets Layer (SSL).
History of HTTP and HTTPS
HTTP/0.9 (1991): The first version of HTTP, a simple protocol for raw data transfer across the internet.
HTTP/1.0 (1996): Introduced in RFC 1945, it added metadata (headers) to requests and responses.
HTTP/1.1 (1997): Introduced in RFC 2068 and later updated in RFC 2616, it brought persistent connections, chunked transfer encoding, and more.
HTTPS (1994): Netscape Communications created HTTPS for its Netscape Navigator web browser. It used SSL for encryption.
HTTP/2 (2015): Introduced in RFC 7540, it improved performance by allowing multiple concurrent exchanges on the same connection.
HTTP/3 (2020): Introduced in RFC 9000, it uses QUIC (Quick UDP Internet Connections) instead of TCP for improved performance and security.
Examples
HTTP Example:
HTTPS Example:
In HTTPS, the above request would be encrypted using TLS, ensuring that the data cannot be read by third parties.
Intermediate Examples
HTTP POST Request:
HTTPS POST Request:
Again, in HTTPS, the above request would be encrypted, providing confidentiality and integrity.
HTTP/2 Example:
HTTP/2 allows multiplexing, where multiple requests and responses can be in flight at the same time over a single connection.
HTTP/3 Example:
HTTP/3 uses QUIC, which is built on UDP, for faster and more reliable connections.
In summary, HTTP and HTTPS are essential protocols for web communication, with HTTPS providing a secure layer over HTTP. The evolution from HTTP/0.9 to HTTP/3 has brought significant improvements in performance, security, and reliability.
References
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 7235 - Hypertext Transfer Protocol (HTTP/1.1): Authentication
RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
RFC 7236 - Hypertext Transfer Protocol (HTTP/1.1): Authentication Scheme Registrations
RFC 7237 - Hypertext Transfer Protocol (HTTP/1.1): Method Definitions
RFC 7238 - Hypertext Transfer Protocol (HTTP/1.1): Permanent Redirect
RFC 7615 - HTTP Authentication-Info and Proxy-Authentication-Info Response Header Fields
RFC 7694 - Hypertext Transfer Protocol (HTTP) Client-Initiated Content-Encoding
RFC 8478 - Zstandard Compression and Decompression in Content-Encoding
RFC 8670 - Deprecating the "X-" Prefix and Similar Constructs in Application Protocols