DEV Community

Yashraj
Yashraj

Posted on • Edited on

What happens when you enter "google.com" ?

Have you ever wondered about the complex series of events that occur in the fraction of a second between typing "google.com" into your browser and seeing the familiar search page appear? In this detailed exploration, we'll uncover the fascinating world of web technologies, networking protocols, and the intricate dance of data that makes our online experiences possible.

1. The Journey Begins: Your Browser and Operating System

1.1 Browser's First Steps

When you type "google.com" and hit Enter, your browser springs into action:

  1. URL Parsing: The browser first analyzes the URL you've entered. It identifies the protocol (in this case, implied "http://" or "https://"), the domain name ("google.com"), and any additional path or query parameters (none in this simple example).

  2. HSTS Check: For security-conscious websites like Google, the browser checks its HTTP Strict Transport Security (HSTS) list. If google.com is on this list (which it is), the browser automatically upgrades the request to HTTPS.

  3. Cache Check: Before reaching out to the network, the browser checks its local cache. This cache stores information from previous visits, including:

    • DNS cache: The IP address associated with google.com
    • Resource cache: HTML, CSS, JavaScript files, and images from Google's homepage

If any of these are found and still valid (not expired), the browser can skip some of the following steps.

1.2 Operating System's Role

If the browser can't find the necessary information in its cache, it turns to the operating system (OS) for help:

  1. Hosts File Check: The OS first looks in the local "hosts" file. This file can map domain names to IP addresses, potentially bypassing DNS lookup. However, for most users, google.com won't be in this file.

  2. DNS Client Cache: The OS maintains its own DNS cache, separate from the browser's. It checks here next.

  3. Resolver Configuration: If the IP is not in the local cache, the OS prepares to ask a DNS server. It reads its network configuration to find out which DNS server to query (usually provided by your Internet Service Provider or manually set).

2. DNS Resolution: Finding Google's Address

If the IP address for google.com isn't cached, we need to ask the Domain Name System (DNS) to translate the human-readable "google.com" into a machine-usable IP address.

2.1 The DNS Hierarchy

DNS is organized in a hierarchical structure:

  1. Root Servers: At the top of the hierarchy. They know where to find the authoritative servers for top-level domains (TLDs) like .com, .org, .net, etc.

  2. TLD Servers: These servers know about all domains registered under their TLD. The .com TLD server knows about google.com.

  3. Authoritative Name Servers: These are responsible for knowing everything about a specific domain, including its IP address(es).

2.2 The DNS Query Process

  1. Recursive Resolver: Your ISP's DNS server (or another configured resolver) receives the query for google.com. If it doesn't have the answer cached, it starts a recursive process:
  • It asks a root server about .com
  • The root server refers it to a .com TLD server
  • It asks the .com TLD server about google.com
  • The .com server refers it to Google's authoritative name servers
  • It asks Google's name server for the IP of google.com
  • Google's name server responds with the IP address
  1. Caching: Each step in this process may involve caching, so the full journey isn't always necessary. The resolver caches the final result, typically for a time specified by Google (the Time To Live, or TTL).

  2. Load Balancing: Large services like Google often return multiple IP addresses. This allows for load balancing and improved reliability.

2.3 Example DNS Lookup

Let's say the DNS lookup returns the following (simplified) result:

google.com.     300    IN    A     172.217.167.78
Enter fullscreen mode Exit fullscreen mode

This means:

  • The domain is google.com
  • The record has a 300-second (5-minute) TTL
  • It's an Internet (IN) record
  • It's an Address (A) record type
  • The IP address is 172.217.167.78

3. Establishing a Connection: TCP/IP

Now that we have Google's IP address, it's time to establish a connection.

3.1 The TCP/IP Stack

  1. Application Layer: Your browser operates here, using HTTP(S) to communicate.

  2. Transport Layer: TCP is used here to ensure reliable, ordered delivery of data.

  3. Internet Layer: IP is used to route packets between networks.

  4. Link Layer: This handles the physical transmission of data, whether over Ethernet, Wi-Fi, cellular networks, etc.

3.2 The TCP Handshake

To establish a connection, a three-way handshake occurs:

  1. SYN: Your computer sends a SYN (synchronize) packet to Google's server.
  2. SYN-ACK: Google's server responds with a SYN-ACK packet.
  3. ACK: Your computer sends an ACK (acknowledge) packet back.

This process establishes sequence numbers for the conversation, ensuring packets can be properly ordered and any lost packets can be detected and retransmitted.

3.3 TLS Handshake

For HTTPS connections (which Google uses), an additional TLS (Transport Layer Security) handshake occurs:

  1. Client Hello: Your browser sends supported SSL/TLS versions, cipher suites, and a random number.
  2. Server Hello: The server chooses the SSL/TLS version and cipher suite, sends its certificate, and another random number.
  3. Authentication: Your browser verifies the server's certificate with a trusted Certificate Authority.
  4. Key Exchange: A secure symmetric key is established for encrypting the session.

4. HTTP Request: Asking for the Page

With a secure connection established, your browser sends an HTTP GET request for the Google homepage.

4.1 Example HTTP Request

GET / HTTP/2
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Enter fullscreen mode Exit fullscreen mode

This request includes:

  • The method (GET) and path (/) we're requesting
  • The HTTP version (HTTP/2)*
  • Various headers providing information about the browser and its capabilities *Note: HTTP/2 refers to HTTPS only, not the http connection. This request is sent over an already-established HTTPS connection, even though the headers don't explicitly mention HTTPS.

5. Server Processing: Google Responds

Google's servers receive this request and process it. This might involve:

  1. Load Balancing: Distributing the request among many servers.
  2. Application Servers: Running code to generate a response.
  3. Database Queries: Fetching personalized data or search suggestions.
  4. Caching: Retrieving pre-generated content when possible.

6. HTTP Response: Sending the Page

Google's server sends back an HTTP response, which might look something like this:

HTTP/2 200 OK
Content-Type: text/html; charset=UTF-8
Date: Sat, 21 Sep 2024 12:00:00 GMT
Expires: Sat, 21 Sep 2024 12:00:00 GMT
Cache-Control: private, max-age=0
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
[... other headers ...]

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Google</title>
    [... rest of the HTML ...]
  </head>
  <body>
    [... body content ...]
  </body>
</html>
Enter fullscreen mode Exit fullscreen mode

This response includes:

  • Status code (200 OK)
  • Various headers providing metadata about the response
  • The HTML content of the page

7. Rendering: Bringing the Page to Life

Your browser now has the HTML content and begins rendering the page:

  1. Parsing HTML: The browser parses the HTML, creating the Document Object Model (DOM).

  2. Requesting Additional Resources: As it encounters links to CSS, JavaScript, images, etc., it sends additional HTTP requests for these resources.

  3. Parsing CSS: The browser parses CSS and applies styles to the DOM elements, creating the CSS Object Model (CSSOM).

  4. Executing JavaScript: The browser executes JavaScript, which can modify the DOM and CSSOM.

  5. Rendering: The browser uses the final DOM and CSSOM to render the page on your screen.

Conclusion

What seems like a simple action—typing "google.com" and pressing Enter—actually involves a complex series of steps, from DNS lookups and network protocols to server-side processing and client-side rendering. This intricate dance happens in mere milliseconds, showcasing the incredible engineering that powers our online experiences.

Understanding these processes not only satisfies our curiosity but also helps web developers and IT professionals optimize websites, troubleshoot issues, and build more efficient and secure web applications. The next time you navigate to a website, take a moment to appreciate the technological marvels working behind the scenes to bring the web to your screen!


Images in this blog are AI generated.

Also read HTTP vs HTTPS what is difference between them

Top comments (0)