當你在瀏覽器中輸入「google.com」並回車,會發生什麼?

2020-12-13 中文業界資訊站

我已遇到過的最喜歡的面試問題是"你鍵入'google. com'到一個瀏覽器的地址欄中, 並點擊<Enter>, 之後會發生什麼呢?"有人可以滔滔不絕幾天, 試圖以某種形式的完備性來回答此問題。他們會走多深?純粹出於興趣, 我要把我的答案羅列在此。當我在一次實際面試中被問到這個問題時, 在他們阻止我之前我漫談了1 0分鐘。之後即使在面試結束後,我一直記得當時我所遺漏的東西。

我將把這個格式化為文本牆, 因為在談話中回答這個問題就是這樣的感覺.

那麼發生了什麼呢?

瀏覽器將分析輸入。通常情況下, 如果輸入中有". com", 它不會認為你在輸入搜索詞。一旦它決定其必定是一個url時, 它會檢查輸入是否有協議頭,如果沒有, 它會在其開頭添加"http://"。由於你沒有指定一系列http協議功能, 因此它將假定使用默認值, 如埠80、GET方法和無基本身份認證。

然後, 它將創建一個http請求並發送該請求。我對我的底層網絡知識沒有信心, 但如果我確實要說, 我會說一些關於MAC地址, TCP數據包傳輸, 丟包處理等。但無論如何, 一個對"google. com"DNS的查找將會發生, 如果它還沒有對此的緩存,DNS服務將應答一系列IP位址列表, 因為"google. com"不只單IP的網站。我認為在默認情況下瀏覽器會選擇第一個。不確定它們是區域性的以及它是如何工作的, 但我知道它就在那裡。

因此, http 請求從一個節點跳轉到另一個節點, 直到它找到google. com負載均衡器的IP位址。這不會持續很久, 谷歌會回應說, 你需要使用https-假定是301永久重定向。因此, 它會原路返回到你的瀏覽器, 瀏覽器將協議更改為 https, 默認使用443埠並重新發送。這一次,TLS握手將在負載均衡器和瀏覽器客戶端之間進行。我不是100%確定其工作原理, 但我知道該請求會告訴谷歌, 它支持什麼協議 (TLS 1.0, 1.1, 1.2) ,然後谷歌將響應 "讓我們使用1.2吧"。之後使用TLS加密發送請求。

我認為谷歌接下來要做的是將其放到負載均衡器上的網絡應用程式防火牆規則集上, 看看它是否是一個惡意請求。當這通過之後, 安全連接可能已被終止 (因為PCI-DSS規則規定你不需要加密內部流量), 請求將被分配到其CDN中的某個池上, 而google端緩存主頁將在http響應中返回。可能是預先壓縮的。

谷歌的響應頭將由瀏覽器讀取,根據響應頭的緩存策略進行緩存,然後正文將被解壓縮。而且因為這是谷歌,它可能是超優化的:壓縮,可能是許多預渲染內容、內聯CSS、JavaScript和圖像,以減少網絡請求和首次渲染時間。但該請求將觸發一系列其他請求,所有這些請求都是並發的,因為它應該運行HTTP/2。當這些請求正在進行時,JavaScript會被解析,可能沒有阻塞,因為他們在標籤上使用了defer屬性 - 或者async,我從來沒有單獨閱讀過這裡他們做了些什麼的資料。

但瀏覽器可能已經渲染了搜索框並且正在頂部的工具欄上工作,這將需要一些額外的網絡請求 - 我可能已經有一個cookie或可能是帶有OAuth令牌的本地存儲 - 或我可能是使用Chrome並且它已經知道我是誰,並且使用auth的請求會被發送到他們的Google+ API上,告訴Google搜索頁面的應用程式我的身份。

另一個請求將被發送, 以獲取我的頭像圖像。在這一點上, 他們已經瀏覽器可嗅探的, 看看我是否未使用 chrome, 在這種情況下, 他們會有彈出一個工具欄提示, 告訴我:chrome 是真棒, 我應該使用它, 而不是其他任何瀏覽器。

我想此時需要冷靜下來。所有這些都發生在一秒的時間內。

何為顯著地不同?讓我們看看對應的DNS:

我知道我以前見過google.com返回包中帶有多個IP位址,但似乎不再是這種情況了。似乎他們之前常常使用輪巡策略,但現在不再使用了。 這個StackOverflow提問涉及了此情況。我已忘記了它被稱為輪2。

網絡層

在一個正式結構化回答中,你可能會參考我有所了解但並不精通的OSI模型。在查閱資料之後,我將它視為如下的網絡分層映射:

  1. 應用 - 觸發請求的邏輯

  2. 表示層 - HTTP

  3. 會話 - TLS

  4. 傳輸 - TCP

  5. 網絡 - 路由 (IP)

  6. 數據鏈路 - 幀 (可看做數據包的容器)

  7. 物理層 - 比特流

我記得在TLS中他們會在協議協商時交換證書。網絡並不是我的強項。在我的瀏覽器中打開google.com,並禁用緩存:

我記得主機名規範化——這是一個301。

從HTTP到HTTPS的校正是一個307內部重定向。

然後它下載字體、商標圖像和我的頭像圖像。如果沒有API調用,這意味著他們會在頁面中推送我的個人資料信息並將其與返回數據捆綁在一起 - 因此當你點擊google.com而不僅僅是提供緩存資產時,他們會進行實際的數據檢索。

響應

以上是IE 11和Chrome響應數據的對比——所有都處於退出狀態。

  • IE11和Chrome之間沒有太大的差別。但這意味著他們是用戶代理嗅探伺服器端而不是客戶端。在我的答案中可能提到了這一點。

  • 出乎意料的是,Chrome的響應體大了22kB。我想知道它是否是由在IE 11中明顯缺席的語音搜索功能引起的。IE11可能需要polyfill和Chrome的廣告,但它都被混淆了,我不會再進一步折磨自己了。

  • 即使我在Chrome中清除了Cookie,它仍會在第一次請求時發送Cookie。它在IE 11中並沒有這樣做。

深入理解渲染!

上圖是Chrome將為你提供的第一個屏幕截圖。

問題本身是什麼呢?

你知道嗎? 對於開發人員而言,這可能不是一個很好的面試問題,因為答案涉及到如此多的網絡知識。這是我喜歡的問題的格式,一些開放的事物,包括一些猜測。這使得面試官有機會跟進諸如「你認為TLS是如何建立的?」之類的問題,以查看候選人如何思考,看看他們有多少創意,看看他們的極限何在(有多耐心?)。

你最喜歡的面試問題是什麼?

相關焦點

  • 從輸入 URL 到頁面展示,到底發生了什麼
    .html如有好文章投稿,請點擊 → 這裡了解詳情剛開始寫這篇文章還是挺糾結的,因為網上搜索「從輸入url到頁面展示到底發生了什麼」,你可以搜到一大堆的資料。而且面試這道題基本是必考題,二月份面試的時候,雖然知道這個過程發生了什麼,不過當面試官一步步追問下去的,很多細節就不太清楚了。最近剛好也在看http協議相關的東西,所以想對這個話題來個深入的總結,本文的目的是通過輸入url之後發生的事情來做知識的總結和擴展。所以文章可能會很雜。
  • 如何在瀏覽器中使用Google地球
    但是,如果您想在瀏覽器中使用Google地球,則毫無疑問將不得不使用Google自己的瀏覽器Chrome。最好的谷歌地球和地圖:你應該看到5顆寶石你應該看到 最好的谷歌地球和地圖:你應該看到5顆寶石從時間線上顯示地球老化,記錄谷歌相機捕捉到的愚蠢和奇怪的事情,這是最好的Google地球和Google地圖。
  • 白帽子黑客:手把手教你如何在Kali中使用Google輸入法?
    一、背景介紹對於在Kali中有使用中文輸入的小夥伴來說,大家在安裝好Kali2020.2後發現Kali2020.2不像微軟的windows作業系統一樣預裝中文輸入法,所以需要我們發揮動手能力,自己安裝一款好用小巧的中文輸入法,在這裡我們推薦Goole中文輸入法
  • 在Word中輸入=後……結局太意外
    打開QQ瀏覽器,查看高清大圖如果你在word中輸入=,什麼都不會發生,如果連續輸入3個=按回車後,神奇的一幕出現了。打開QQ瀏覽器,查看高清大圖3個=竟然變成了雙行分隔線。類似的輸入技巧還有很多,比如:輸入三個「_」(下劃線),回車,光標處就插入了粗的水平橫線。輸入三個「#」,回車,光標處就插入了中間粗、兩邊細的水平橫線。
  • 屏棄紛繁 極簡版Google首頁亮相
    近期,Google正在一小部分用戶中測試新版的首頁頁面,將原本就非常簡單的頁面設計再一次進行簡化,略去所有的選項和附加功能,僅留下經典的Google圖標、搜索框以及兩個搜索按鈕。日前,終於有人在網絡上公布了啟用這種極簡化Google首頁的具體方法,你自己也可以來試一試(可能不支持部分瀏覽器):1.
  • Google Chrome瀏覽器官網下載
    Google Chrome瀏覽器官網下載特點:不易崩潰chrome最大的亮點就是其多進程架構,保護瀏覽器不會因惡意網頁和應用軟體而崩潰。每個標籤、窗口和插件都在各自的環境中運行,因此一個站點出了問題不會影響打開其它站點。通過將每個站點和應用軟體限制在一個封閉的環境中這種架構,這進一步提高了系統的安全性。
  • 瀏覽器輸入「世界超一流大學.com」,竟然跳轉到了我們學校官網……
    帝都高校圈為大學生提供什麼?如果把主語換成北京大學,也會得到相似的答案。 關於清北兩所高校孰強孰弱,如果讓兩所學校的學生打個辯論,估計三天三夜也辯不完。 不過,這個問題最近倒是有了確切的答案。不信?你在瀏覽器輸入網址:世界一流大學.com試一試。
  • 將Chrome瀏覽器模擬成安卓Android設備
    先將正在運行的chrome瀏覽器全部關閉,在桌面上的google chrome圖標右鍵-複製-粘帖,出現一個新的副本文件。我們右鍵-屬性,在「目標」文本框內的最後加入以下字符:--user-agent="Android" ,單擊確定(如圖)接著,我們打開Chrome,再打開我們剛才的視頻網站,可以看到已經和Android設備訪問的頁面一樣了。
  • Googler:現可在 Linux 終端下進行 Google 搜索
    一個小問題:你每天做什麼事?當然了,好多事情,但是我可以指出一件事,你幾乎每天(如果不是每天)都會用 Google 搜索,我說的對嗎?
  • google拼音輸入法64位下載 google中文輸入法桌面版地址
    谷歌拼音輸入法是谷歌公司推出的一款中文輸入法,支持簡體中文、繁體中文、標點符號、表情符號、拉丁字符和數字輸入。 google拼音輸入法在哪裡下載?可能很多用戶都想知道,此前Google 從官網移除了拼音輸入法的網頁 (網際網路檔案館的存檔)谷歌拼音輸入法https://www.google.com/intl/zh-cn/ime/pinyin/ 而桌面版的中文輸入法已經很久沒有更新(上次更新已經是2013年了),但移動版本的更新則相當頻繁,畢竟中文用戶是 Android 的主要用戶群。
  • Google上不去怎麼辦?Google打不開有什麼解決辦法
    目前像大家常訪問的google.com以及google.com.hk均無法正常訪問,另外包括GMAIL郵箱也是如此,並且有大量網友遇到此問題,小編針對此問題做了小研究,為了各位小夥伴可以順利打開谷歌搜索,大家隨小編細說吧。
  • google瀏覽器怎麼設置首頁?google瀏覽攻略器
    我們日常的上網肯定離不開瀏覽器的存在,很多人都不喜歡使用網絡公司提供的推薦頁面,而是自己設置主頁面。那麼怎麼設置 google 瀏覽器 的起始頁面呢 ? 下面小編通過圖解給大家詳細的演示一遍。
  • Chrome七大插件提高谷歌瀏覽器性能
    相關精彩文章     1.新建並備份多個配置文件  當你在omnibox中輸入時,瀏覽器會查找歷史記錄並顯示與你正搜索的內容最接近的記錄列表。omnibox中輸入時, Google瀏覽器默認設置是5條URL提示。
  • ipv6網絡是什麼_如何判斷自己的網絡環境是否支持ipv6
    如果自己的電腦是win7/8系統,無需進行ipv6配置;xp用戶需自己手動配置:   開始--》運行,輸入「cmd」回車,然後輸入「ipv6 install」回車。   檢查自己的電腦是否有網絡連接,如連接正常進行下一步測試。
  • 如何保護隱私之瀏覽器Cookie的防範
    從《如何保護隱私之瀏覽器如何導致隱私洩漏》中我們了解了瀏覽器洩露隱私的幾個原因,那麼具體的該如何保護隱私呢?本文將從瀏覽器Cookie的防範說起,助你加強隱私防護。★什麼是"cookie"?本文所說的"cookie",指的是瀏覽器相關的cookie(也叫"HTTP cookie")。
  • 無法輸入文字,電腦變慢,禁止IE瀏覽器自動更新,進來這裡有方法!
    目錄無法輸入文字如何解決電腦變慢禁止IE瀏覽器自動更新方法一:方法二:>無法輸入文字如何解決原因:IE網頁mshtmled.dll組件被破壞,解決方法是 開始 運行 regsvr32 mshtmled.dll回車,確定,即可解決該問題。
  • 如何訪問google申請Google帳號的方法
    對於google公司來說,google帳號(用戶或帳戶)和gmail郵箱(帳號)都是同一個概念,可以通用使用google郵箱的格式來登錄使用。鑑於目前網際網路中google的強勢,很多人目前還沒有使用過google的帳號,並且google在市面上很多產品,都要求有google帳號來方便管理,下面就來介紹一下如何申請google帳號先找到一個能切換IP位址的工具,進入官網下載好壓縮包客戶端之後解壓到桌面上,雙擊裡面的exe圖標輸入已經註冊好的用戶名和密碼,點登陸進入軟體界面,選擇節點,點啟動加速
  • 基於Chromium的新版Edge瀏覽器使用體驗與Google搜索的使用
    https://www.google.cn/chrome/書籤同步問題痛點的解決——基於Chromium的新版Microsoft Edge雖然說國內的瀏覽器也有基於Chromium開發的瀏覽器,我也曾經嘗試過,但總感覺國內的瀏覽器功能太過繁雜,不適合開發人員使用,每次都是沒用多久,
  • Google瀏覽器下載文件下載不了了,怎麼辦?
    小編剛剛越到一個很少遇到的問題,大家使用oa或者imap等公司系統時會下載文件,在google瀏覽器下載文件時下面會有一條提示欄點擊就可以打開,今天突然打不開了,還好小編對於計算機還是比較了解,所有摸索下解決了,與大家分享下吧。
  • 會用Google嗎?真的會用嗎? — Google搜索小貼士,教你神馬才叫 SEARCH
    舉例子: 我們想搜索著名的80/20 理論,直接搜索80/20,會得到下圖的結果,一個碩大的計算器出現了。我們再試試搜索「80/20」,得到的結果就是我們想要的了。如果你還不知道什麼是80/20理論,趕緊試試吧。