What is a web server?
A web server is an entity that delivers the content of a site to the end user. A web server is typically a long-running process, listening for requests on a port, and upon receiving a request, the web server responds with a document. This way of communication is standardized by the Transmission Control Protocol/Internet Protocol (TCP/IP) model, which provides a set of communication protocols used by any communication network. There are other layers of standardization, such as the HyperText Transfer Protocol (HTTP) and File Transfer Protocol (FTP), which dictate standards of communication at the application layer based on different applications such as web applications in the case of HTTP, and file transfer applications in the case of FTP, while still using TCP/IP at the network layer. In this book, we will be primarily focusing on a web server using HTTP at the application layer.
Example HTTP server
If you have Python 3 installed on your machine (you likely do), you can quickly spin up a web server that serves a static HTML document by creating an index.html
file in a new directory and running a simple HTTP Python server. Here are the commands:
$ mkdir test-server && cd test-server &&
touch index.html
$ echo "<h1>Hello World</h1>" >
index.html
$ python -m
http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) . . .
If you are on Python 2, replace http.server
with SimpleHTTPServer
.
Now, once you navigate to http://localhost:8080/
on your web browser, you should see "Hello World"
as the response. You should also be able to see the server logs when you navigate back to the terminal.
To stop the HTTP server, press Ctrl + C.
The primary goal of web servers is to respond to a client’s request with documents in the form of HTML or JSON. These days, however, web servers do much more than that. Some have analytical features, such as an Admin UI, and some have the ability to generate dynamic documents. For example, Phoenix’s web server has both of those features. Now that we know what a web server is, let’s learn about how it is used with the client-server architecture.