The “core” semantics of the HTTP protocol are defined by:
Those semantics are expressed “on the wire” in three ways:
Later versions of HTTP offer field compression:
These RFCs collectively obsolete all preceding RFCs defining HTTP, including RFC1945, RFC2068, RFC2616, RFC2617, RFC7230-RFC7235, and RFC7540.
Also relevant is the Structured Field Values specification, which is used in a growing number of headers and trailers:
Protocols built “on top” of HTTP should follow Best Current Practice, as documented here:
There are a large number of HTTP extensions, including methods, status codes and headers. It’s important to note that they are all “part of” HTTP, as long as they’re listed in the appropriate registries:
Individual headers have their own registries that regulate permissible values, including:
This is a partial list of HTTP-relevant specifications, here for convenience. For the complete list of HTTP extensions, see the relevant registry.