(1).dns解析
當我們在瀏覽器中輸入乙個網域名稱的時候,例如www.mi.com,這個網域名稱只是與ip位址的乙個對映,這時dns解析就要充當乙個翻譯的角色,把網域名稱解析成真實的ip位址。所以dns解析的過程實際上就是將網域名稱還原成真實ip位址的過程。
dns的解析又分為以下幾個步驟:
1.瀏覽器會先檢查自身快取中有沒有被解析過的這個網域名稱對應的ip,如果有,解析結束;
2.如果瀏覽器快取沒有命中,瀏覽器會檢查作業系統快取中是否有對應的解析過的結果,而作業系統也有乙個網域名稱解析的過程,在hosts檔案裡可以讀寫,如果在這裡找到了對應的對映關係,則會直接使用這個ip位址,完成網域名稱解析;
3.如果還是沒有命中,此時會請求本地網域名稱伺服器(ldns)來解析這個網域名稱,這個伺服器一般離你不會很遠且效能很強,80%的網域名稱解析到這裡就會結束;
4.如果ldns仍然沒有命中,此時會直接到root server網域名稱伺服器請求解析
(2).tcp連線
三次握手
(3).瀏覽器向伺服器傳送http請求
經過tcp的三次握手之後,瀏覽器會對請求進行包裝,包裝成請求報文。完整的http請求包含請求起始行、請求頭部、請求主體三部分。
常用的請求頭如下:
accept: 接收型別,表示瀏覽器支援的mime型別
(對標服務端返回的content-type)
accept-encoding:瀏覽器支援的壓縮型別,如gzip等,超出型別不能接收
content-type:客戶端傳送出去實體內容的型別
cache-control: 指定請求和響應遵循的快取機制,如no-cache
if-modified-since:對應服務端的last-modified,用來匹配看檔案是否變動,只能精確到1s之內,http1.0中
expires:快取控制,在這個時間內不會請求,直接使用快取,http1.0,而且是服務端時間
max-age:代表資源在本地快取多少秒,有效時間內不會請求,而是使用快取,http1.1中
if-none-match:對應服務端的etag,用來匹配檔案內容是否改變(非常精確),http1.1中
cookie: 有cookie並且同域訪問時會自動帶上
connection: 當瀏覽器與伺服器通訊時對於長連線如何進行處理,如keep-alive
host:請求的伺服器url
origin:最初的請求是從**發起的(只會精確到埠),origin比referer更尊重隱私
referer:該頁面的**url(適用於所有型別的請求,會精確到詳細頁面位址,csrf攔截常用到這個字段)
user-agent:使用者客戶端的一些必要資訊,如ua頭部等
(4).瀏覽器接收到伺服器端的響應
伺服器在接收到瀏覽器傳送的http請求之後,會將收到的http報文封裝成http的request物件,並通過不同的web伺服器進行處理,處理完的結果以http的response物件返回,主要包含狀態碼,響應頭,響應報文三個部分。
常見的狀態碼如下:
1**:伺服器收到請求,需要請求者進一步操作
2**:請求成功
3**:重定向,資源被轉移到其它url了
4**:客戶端錯誤,請求語法錯誤或沒有找到相應資源
5**:服務端錯誤,server error
301:資源(網頁等)被永久轉移到其它url,返回值中包含新的url,瀏覽器會自動定向到新的url
302:臨時轉移,客戶端應訪問原有url
304:not modified,指定日期後未修改,不返回資源
403:伺服器拒絕執行請求
404:請求的資源(網頁等)不存在
500:內部伺服器錯誤
響應頭主要由cache-control、 connection、date、pragma等組成;
常用的響應頭如下:
access-control-allow-headers: 伺服器端允許的請求headers
access-control-allow-methods: 伺服器端允許的請求方法
access-control-allow-origin: 伺服器端允許的請求origin頭部(譬如為*)
content-type:服務端返回的實體內容的型別
date:資料從伺服器傳送的時間
cache-control:告訴瀏覽器或其他客戶,什麼環境可以安全的快取文件
last-modified:請求資源的最後修改時間
expires:應該在什麼時候認為文件已經過期,從而不再快取它
max-age:客戶端的本地資源應該快取多少秒,開啟了cache-control後有效
etag:請求變數的實體標籤的當前值
set-cookie:設定和頁面關聯的cookie,伺服器通過這個頭部把cookie傳給客戶端
keep-alive:如果客戶端有keep-alive,服務端也會有響應(如timeout=38)
server:伺服器的一些相關資訊
響應體為伺服器返回給瀏覽器的資訊,主要由html,css,js,檔案組成;
下圖是對某請求的http報文結構的簡要分析:
(5).瀏覽器進行語法解析,渲染頁面
(1).瀏覽器通過解析html,生成dom樹;
(2).解析css,生成css規則樹;
(3).合併dom樹和css規則樹,生成render樹
(4).布局render樹(layout/reflow),負責各元素尺寸、位置的計算
(5).繪製render樹(paint),繪製頁面畫素資訊
(6).瀏覽器會將各層的資訊傳送給gpu,gpu會將各層合成(composite),顯示在螢幕上
(6).關閉tcp連線
四次揮手
從輸入URL到頁面載入完成
例如 協議部分 http www.guokr.com 資源路徑 question 554991 2 如果位址不是乙個ip位址,通過dns 網域名稱系統 將該位址解析成ip位址。ip位址對應著網路上一台計算機,dns伺服器本身也有ip,你的網路設定包含dns伺服器的ip。例如 www.guokr.co...
輸入URL到頁面載入完成過程
首先是網域名稱解析,就是把url轉換成對應的ip位址 網域名稱解析 瀏覽器會先搜尋自己的dns快取,如果沒有在作業系統的dns裡檢視,如果也沒有會搜尋作業系統的hosts檔案,如果沒有會把這個網域名稱傳送到本地網域名稱伺服器上,然後本地網域名稱伺服器會查詢自己的dns快取,如果成功則返回ip位址,如...
從輸入URL到頁面載入顯示完成這個過程發生了什麼?
參考部落格 一般會經歷以下幾個過程 1 在瀏覽器位址列輸入url 2 瀏覽器檢視瀏覽器快取 系統快取 路由器快取,若有,直接在螢幕中顯示,若沒有,則進行第三部操作 3 在傳送http之前,需要網域名稱解析 dns 獲取相應ip位址 4 瀏覽器與伺服器建立tcp連線,與瀏覽器建立tcp三次握手 5 握...