Browsers Work With URLs

#### Why?
The guide is for engineers and curious people who use the web every day, but never built a mental model of how browsers work.
I find most guides too technical, too detailed, or too shallow, so I have decided to take a different approach.
I built the guide with many tiny interactive examples you can play with to help you go get through the technical details and **build an intuition of how browsers work**.
To keep it short and straight to the point, many critical details are omitted like different versions of the HTTP protocol, SSL, TLS, nuances of the DNS, and many more.
I made the guide [open source](https://github.com/krasun/howbrowserswork). Feel free to suggest improvements by creating an issue or a pull request.
You can type literally anything in the address bar. But under the hood, browsers work with URLs:
* A random text like pizza will be transformed into a "search" URL like https://google.com/search?q=pizza (or https://duckduckgo.com/?q=pizza depending on your preferences).
* A domain name like example.com will be normalized as a full URL: https://example.com
To see how this works in practice, type something in the address bar and press Enter (or click the "Go" button):
#### Turning a URL into an HTTP request
Once we know the exact URL we want to visit, we can send a request to the server to fetch the resource and display it in the browser. Browsers communicate with servers using the HTTP protocol.
To see how a URL is translated into an HTTP request format, enter a full URL like https://example.com and press Enter (or click the "Go" button):
HTTP requests have headers in the format like:
```
Host: example.com
Accept: text/html
```
One of the headers is the host header. It is used to identify the server to which the request is sent: example.com., Browsers Work With URLs, howbrowserswork.com, 01kfrcvz1ckdwwh1aeexvpny7t.