從輸入URL到頁面加載完成的過程中都發生了什么事情?--這是一個經典的面試題;
主要是關於計算機網絡方面的知識基礎,對於非科班計算機自學web開發的同學可能理解起來就很困難。
StackOverFlow上有一個簡要回答:
http://stackoverflow.com/questions/2092527/what-happens-when-you-type-in-a-url-in-browser
Piskvor的回答: 作一個簡單粗暴的描述,假設是簡單的HTTP請求,IPV4,沒有代理。 1.瀏覽器查詢緩存,如果緩存存在跳到第9步。 2.瀏覽器詢問操作系統服務器的IP地址。 3.操作系統做DNS查詢,返回IP地址給瀏覽器。 4.瀏覽器打開對服務器的TCP連接(如果是HTTPS協議的話會更復雜)。 5.瀏覽器通過TCP連接發送HTTP請求。 6.瀏覽器接收HTTP響應並且可能關掉TCP連接,或者是重新使用連接處理新請求。 7.瀏覽器檢查HTTP響應是否為一個重定向(3xx 結果狀態碼 ),一個驗證請求(401),錯誤(4xx 5xx)等等,這些都是不同響應的正常處理(2xx). 8.如果響應可緩存,將存入緩存。 9.瀏覽器解碼響應(例如:如果它是gzziped壓縮)。 10.瀏覽器決定如何處理這些響應(例如,它是HTML頁面,一張圖片,一段音樂)。 11.瀏覽器展現響應,對未知類型還會彈出下載對話框。 這里邊的每個步驟都可以長篇大論一番,當然還有很多東西與這些步驟平行發生。
主要要掌握計算機與網絡設備之間通信
Web使用一種HTTP(HyperText TransFer Protocol,超文本協議)的協議作為規范,完成從客戶端到服務器等一系列運作流程。可見web是建立在HTTP協議上通信的。
通常我們使用的網絡(包括互聯網)是在TCP/IP協議族的基礎上運作的,而HTTP屬於它內部的一個子集。
計算機與網絡設備之間通信的協議總稱為TCP/IP.該協議最重要的一點就是分層。
利用TCP/IP協議族進行通信時,會通過分層順序與對方進行通信。
與HTTP關系緊密的協議有:
DNS:負責域名解析
TCP:確保可靠性,會數據分割
IP:負責傳輸
傳輸過程圖如下:
深入理解整個計算機體系和硬件的話,FEX團隊的nwind專門有對該問題的文章:
http://fex.baidu.com/blog/2014/05/what-happen/
該回答真的非常有深度和廣度。值得學習。