Browsers Work With URLs ![rw-book-cover](https://readwise-assets.s3.amazonaws.com/static/images/article1.be68295a7e40.png) #### 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.