43,452
stars
+3
5,728
forks
669
watchers
2,210
prs
301
issues
0
releases
0
discussions
README
What happens when... ==================== This repository is an attempt to answer the age-old interview question "What happens when you type google.com into your browser's address box and press enter?" Except instead of the usual story, we're going to try to answer this question in as much detail as possible. No skipping out on anything. This is a collaborative process, so dig in and try to help out! There are tons of details missing, just waiting for you to add them! So send us a pull request, please! This is all licensed under the terms of the Creative Commons Zero_ license. Read this in 简体中文_ (simplified Chinese), 日本語_ (Japanese), 한국어_ (Korean) and Spanish_. NOTE: these have not been reviewed by the alex/what-happens-when maintainers. Table of Contents ==================== .. contents:: :backlinks: none :local: The "g" key is pressed ---------------------- The following sections explain the physical keyboard actions and the OS interrupts. When you press the key "g" the browser receives the event and the auto-complete functions kick in. Depending on your browser's algorithm and if you are in private/incognito mode or not various suggestions will be presented to you in the dropdown below the URL bar. Most of these algorithms sort and prioritize results based on search history, bookmarks, cookies, and popular searches from the internet as a whole. As you are typing "google.com" many blocks of code run and the suggestions will be refined with each keypress. It may even suggest "google.com" before you finish typing it. The "enter" key bottoms out --------------------------- To pick a zero point, let's choose the Enter key on the keyboard hitting the bottom of its range. At this point, an electrical circuit specific to the enter key is closed (either directly or capacitively). This allows a small amount of current to flow into the logic circuitry of the keyboard, which scans the state of each key switch, debounces the electrical noise of the rapid intermittent closure of the switch, and converts it to a keycode integer, in this case 13. The keyboard controller then encodes the keycode for transport to the computer. This is now almost universally over a Universal Serial Bus (USB) or Bluetooth connection, but historically has been over PS/2 or ADB connections. In the case of the USB keyboard: - The USB circuitry of the keyboard is powered by the 5V supply provided over pin 1 from the computer's USB host controller. - The keycode generated is stored by internal keyboard circuitry memory in a register called "endpoint". - The host USB controller polls that "endpoint" every ~10ms (minimum value declared by the keyboard), so it gets the keycode value stored on it. - This value goes to the USB SIE (Serial Interface Engine) to be converted in one or more USB packets that follow the low-level USB protocol. - Those packets are sent by a differential electrical signal over D+ and D- pins (the middle 2) at a maximum speed of 1.5
Top issues
#130Change google.com to wikipedia.org14 comments · 2015-01-23#88Redirect from google.com to www.google.com to https://www.google.com...6 comments · 2015-01-18#19What about semiconductor level (integrated circuits structure and underlying physics)6 comments · 2015-01-17#34NSA packet inspection.5 comments · 2015-01-17#242Too client-centric4 comments · 2017-07-30#159Bug in "ARP process" section4 comments · 2015-02-25#43USB differential transmission4 comments · 2015-01-17#16The network3 comments · 2015-01-17