<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[URL to Page Load: The Complete Story]]></title><description><![CDATA[URL to Page Load: The Complete Story]]></description><link>https://url-story.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 09:59:00 GMT</lastBuildDate><atom:link href="https://url-story.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[URL to Page Load: The Complete Story]]></title><description><![CDATA[1. DNS Resolution: Finding the IP Address

The browser first checks its own DNS cache for the IP address of the requested URL.

If not found, it checks the operating system’s DNS cache.

If the OS also doesn't have the entry, the browser initiates a ...]]></description><link>https://url-story.hashnode.dev/url-to-page-load-the-complete-story</link><guid isPermaLink="true">https://url-story.hashnode.dev/url-to-page-load-the-complete-story</guid><category><![CDATA[url]]></category><category><![CDATA[Computer Science]]></category><dc:creator><![CDATA[ROHIT SINGH]]></dc:creator><pubDate>Wed, 16 Jul 2025 04:04:41 GMT</pubDate><content:encoded><![CDATA[<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752638338384/0a97c8dc-d56b-4765-ba42-5cc0aeab217c.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-1-dns-resolution-finding-the-ip-address">1. DNS Resolution: Finding the IP Address</h3>
<ul>
<li><p>The browser first checks its own <strong>DNS cache</strong> for the IP address of the requested URL.</p>
</li>
<li><p>If not found, it checks the <strong>operating system’s DNS cache</strong>.</p>
</li>
<li><p>If the OS also doesn't have the entry, the browser initiates a <strong>recursive DNS lookup</strong> using a <strong>DNS resolver</strong> (usually provided by the ISP or a public DNS like Google or Cloudflare).</p>
</li>
</ul>
<h3 id="heading-2-establishing-a-tcp-connection">2. Establishing a TCP Connection</h3>
<ul>
<li><p>After resolving the IP address, the browser <strong>establishes a TCP connection</strong> to the server using that IP.</p>
</li>
<li><p>Modern browsers use a <strong>persistent connection</strong> (via <code>keep-alive</code>) to reduce the overhead of repeatedly opening new connections.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752638601530/c814946c-40a5-4474-a104-11b03fbc9f0e.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-3-ssltls-handshake-for-https">3. SSL/TLS Handshake (for HTTPS)</h3>
<ul>
<li><p>If the protocol is <strong>HTTPS</strong>, a <strong>TLS/SSL handshake</strong> is performed:</p>
<ul>
<li><p>Validates server identity via certificates.</p>
</li>
<li><p>Negotiates encryption methods.</p>
</li>
<li><p>Establishes an encrypted connection between the browser and the server.</p>
</li>
</ul>
</li>
</ul>
<h3 id="heading-4-sending-the-http-request">4. Sending the HTTP Request</h3>
<ul>
<li><p>The browser compiles the request according to <strong>HTTP specifications</strong>.</p>
</li>
<li><p>Since the user just enters a URL, the browser fires an <strong>HTTP GET request</strong> to the server.</p>
</li>
<li><p>The request includes:</p>
<ul>
<li><p><strong>Headers</strong>: Metadata and instructions for the server (e.g., <code>Accept</code>, <code>User-Agent</code>, <code>Host</code>, etc.).</p>
</li>
<li><p><strong>Cookies</strong>: (if any) are also sent.</p>
</li>
<li><p><strong>Query parameters</strong> like <code>?q=home</code> to pass additional information.</p>
</li>
</ul>
</li>
</ul>
<p>    <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752638409798/0ce684d3-674c-4777-a39e-68ae599c4a3d.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-5-anatomy-of-the-url">5. Anatomy of the URL</h3>
<p>Example:<br /><a target="_blank" href="https://example.com/products/item?q=home"><code>https://example.com/products/item?q=home</code></a></p>
<ul>
<li><p><strong>Scheme</strong>: Defines the protocol (e.g., <code>https</code>)</p>
</li>
<li><p><strong>Domain</strong>: Human-readable address (e.g., <a target="_blank" href="http://example.com"><code>example.com</code></a>)</p>
</li>
<li><p><strong>Path</strong>: Specific resource being requested (e.g., <code>/products/item</code>)</p>
</li>
<li><p><strong>Query Parameters</strong>: Key-value pairs providing extra data (<code>?q=home</code>)</p>
</li>
</ul>
<hr />
<h3 id="heading-6receiving-the-response">6.Receiving the Response</h3>
<ul>
<li><p>The server receives the HTTP request and <strong>parses it</strong> to understand the action required.</p>
</li>
<li><p>The server may:</p>
<ul>
<li><p>Load a <strong>static file</strong> from disk.</p>
</li>
<li><p>Perform a <strong>database query</strong> and return dynamic content.</p>
</li>
<li><p>Return an <strong>error response</strong> (e.g., <code>400 Bad Request</code>) if the request is malformed.</p>
</li>
</ul>
</li>
</ul>
<p>    <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752638469684/cd542701-97b9-427d-96f1-d989c143c597.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-7-rendering-the-page">7. Rendering the Page</h3>
<ul>
<li><p>The browser receives the <strong>HTTP response</strong>, usually containing HTML.</p>
</li>
<li><p>The browser starts <strong>rendering the page</strong>, constructing the DOM tree.</p>
</li>
</ul>
<h3 id="heading-8-loading-additional-resources">8. Loading Additional Resources</h3>
<ul>
<li><p>As the HTML is parsed, the browser detects other resources:</p>
<ul>
<li><p>JavaScript files</p>
</li>
<li><p>CSS stylesheets</p>
</li>
<li><p>Images and fonts</p>
</li>
</ul>
</li>
<li><p>For each, a similar request cycle (DNS lookup → TCP → HTTP GET) is repeated if those resources are not cached.</p>
</li>
</ul>
]]></content:encoded></item></channel></rss>