It is the medium by which our client talk to the server to send request and receive response. there is two ideas around the HTTP protocols

HTTP follows client server model architecture where client initiates the request from the browser or maybe app (postman) and server receives that request process it and send back to the client.

every request is independent that it has no memory of the past interaction. all the request is new. so that mean you have to send these (auth token/cookies) or session information into every request.
each request contains all the necessary stuff that the server need to process and send back to the client.

HTTP/0.9
only fetch html pages with only get req.
HTTP/1.0
added headers and status code. and the problem with that was opened a new req in each connection
HTTP/1.1
reused the connection with faster than the prev
HTTP/2
multiple req can travel at the same time on one connection
HTTP/3
switched TCP to QUIC and work faster and work on better on unstable network.


header is simple extra information (metadata) and being sent along with an request or response.
think like of this way you’re sending a package (body) the actual item that you’re sending but it also write the label (header) it’s about more info about the package and where it’s sending. like who sent? who will receives?
