Untitled Slide
Here's a quick little diagram showing HTTP in action.
So, you have web servers which actually host static pages and code that make up a web application, and then you have web browsers, which are clients which talk to the web server using HTTP and retrieve content to show browser users.
A typical HTTP request consists of a verb, in this case "GET", followed by an argument, in this case "/", which just means the top-level page or application.
To respond to a browser's request, the server sends some data over the wire, which includes a status code, in this case "200 OK", which in HTTP means success, and the HTML, CSS, and Javascript that the browser should render and display to the user.
This protocol and process worked really well for a long time. The web was originally created by Tim Berners Lee for sharing academic documents, which were mostly static. But as time went on, people wanted to create actual software programs where most of the work was done on the web server, and the browser acts as a thin client, retrieving new data and rendering it to the user.
(There are number of reasons to want this, such as not having to distribute new updates to the application to user's computers.)
With this simple HTTP model, you *can* create interactive applications... the main wrench is that every time some interaction happens---say, a user clicks on a link or a button, or the app wants to refresh the page to update the information being displayed, it has to initiate an entirely new HTTP connection to the server, send its request, and receive a response. And it turns out that because of the way HTTP works, every one of those requests, even if the browser just needs the answer to a tiny question, has to send quite a lot of data over the wire---HTTP requests are, on average, about 800 bytes.