Hypertext Transfer Protocol Standards are generally defined within the HTML Living Standard Specification
Hypertext Transfer Protocol, though often based on a TCP/IP Protocol Stack, it can be used on any Reliable protocol transport layer.
Hypertext Transfer Protocol follows a classical Client-server model, with a client initiating a connection to make a request, then waiting until it receives a response.
Hypertext Transfer Protocol is a stateless protocol, meaning that the server does not keep any data (state) between two requests.
A Hypertext Transfer Protocol "client" (user-agent or Browser) is a application that establishes a connection to a server for the purpose of sending one or more HTTP/HTTPS requests.
An Hypertext Transfer Protocol "server" is a application that accepts connections in order to service HTTP Request by sending HTTP Response.
The terms "client" and "server" refer only to the roles that these programs perform for a particular connection. The same program might act as a client on some connections and a server on others.
The term "user-agent" refers to any of the various client application that initiate a request, including (but not limited to) browsers, spiders (web-based robots), command-line tools, custom applications, and mobile Device apps.
The term "origin server" refers to the program that can originate authoritative responses for a given target resource.
The terms "sender" and "recipient" refer to any implementation that sends or receives a given message, respectively.
Hypertext Transfer Protocol relies upon the Uniform Resource Identifier (URI) standard RFC 3986 to indicate the target resource and relationships between resources.
Messages are passed in a format similar to that used by Internet Mail RFC 5322 and the Multipurpose Internet Mail Extensions (MIME) RFC 2045 (see Appendix A of RFC 7231 for the differences between HTTP and MIME messages).