這個過程大致流程總結(jié)如下:
- 輸入baidu.com,回車
- 域名解析
- 瀏覽器與服務(wù)器建立連接
- web瀏覽器發(fā)送HTTP請求
- web服務(wù)器處理請求并返回HTTP響應(yīng)
- 瀏覽器接收HTTP響應(yīng)
- 瀏覽器渲染頁面
1 輸入baidu.com,回車
2 域名解析
域名系統(tǒng)(英文:Domain Name System趴腋,縮寫:DNS)是互聯(lián)網(wǎng)的一項服務(wù)吊说。它作為將域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能夠使人更方便地訪問互聯(lián)網(wǎng)优炬。 ——維基百科
瀏覽器首先按以下順序檢查緩存中的DNS記錄,如果存在即返回對應(yīng)的IP
- 瀏覽器緩存
- 系統(tǒng)緩存(hosts文件)
- 路由器緩存
- ISP緩存
如果請求的URL不在緩存中蠢护,本地域名服務(wù)器會向根域名服務(wù)器發(fā)送一個請求。如果不存在葵硕,轉(zhuǎn)發(fā)給下一級查詢,順序如下:
- 根域名服務(wù)器
- COM頂級域名服務(wù)器
- baidu.com域名服務(wù)器
3 瀏覽器與服務(wù)器建立連接
一旦瀏覽器收到正確的IP地址懈凹,它將與服務(wù)器建立TCP連接蜀变。使用稱為TCP/IP三次握手的過程建立此連接以進行數(shù)據(jù)傳輸。
4 瀏覽器發(fā)送HTTP請求
建立TCP連接后库北,就可以開始傳輸數(shù)據(jù)了。瀏覽器將發(fā)送HTTP請求寒瓦。
5 服務(wù)器處理HTTP請求
web服務(wù)器接收HTTP請求,由控制層處理邏輯坪仇,從數(shù)據(jù)庫取得模型杂腰,視圖層組裝頁面,返回HTTP響應(yīng)
6 服務(wù)器返回HTTP響應(yīng)
狀態(tài)碼:
- 1xx 指示信息–表示請求已接收椅文,繼續(xù)處理。
- 2xx 成功–表示請求已被成功接收恤筛、理解、接受毒坛。
- 3xx 重定向–要完成請求必須進行更進一步的操作。
- 4xx 客戶端錯誤–請求有語法錯誤或請求無法實現(xiàn)煎殷。
- 5xx 服務(wù)器端錯誤–服務(wù)器未能實現(xiàn)合法的請求。
7 瀏覽器渲染頁面
瀏覽器至上而下解析HTML字符串豪直,碰到link,src,img等外部資源時發(fā)起請求加載靜態(tài)資源并緩存。但是碰到一般的Js會掛起渲染過程等待下載并執(zhí)行完畢弓乙。
瀏覽器根據(jù)HTML和CSS計算得到模型樹,繪制到屏幕上暇韧。