HTTP is made up of several components, including the client, server, and intermediaries such as proxies. Clients initiate requests that are answered by a server, and the intermediaries are devices such as proxy servers. The client identifies itself with the user-agent, which is any tool that makes requests for the benefit of the user.