第一步:輸入網(wǎng)址
用戶輸入網(wǎng)址(baidu.com)扎瓶,即統(tǒng)一資源定位符(URL)。
第二步:DNS解析
瀏覽器查找baidu.com網(wǎng)站所在的服務器IP地址概荷。(為什么用域名不直接用IP碌燕?因為域名比較好記继薛,有語義作用。)
瀏覽器依次從瀏覽器緩存遏考,系統(tǒng)緩存蓝谨,路由器緩存,ISP DNS緩存中查找是否有該域名和對應的IP譬巫。如果都沒有找到,則向根域名服務器查找域名及對應的IP芦昔,根域名服務器把請求轉(zhuǎn)發(fā)到下一級,直到找到IP珠十。
第三步:發(fā)送HTTP請求
HTTP報文是包裹在TCP報文中發(fā)送的锨阿,服務器端收到TCP報文時會解包提取出HTTP報文记罚。HTTP是明文,而HTTPS對HTTP進行了加密桐智。這里又涉及到三次握手,四次分手说庭。
HTTP請求報文是由三部分組成: 請求行, 請求報頭和請求正文。
第四步:服務器處理請求并返回HTTP報文
Web服務器接收用戶的處理請求并交給網(wǎng)站姿搜,或者接受請求反向代理到其他web服務器捆憎。后臺處理請求舅柜,封裝成HTTP報文躲惰。服務器返回給瀏覽器的文本信息,通常HTML, CSS, JS, 圖片等文件就放在這一部分氮块。
第五步:網(wǎng)站處理
(MVC模型:模型model,視圖views滔蝉,控制器controller)
網(wǎng)站接受到用戶的請求后,交給控制器處理锰提,模型在數(shù)據(jù)庫里查找數(shù)據(jù)并返回給控制器,控制器將數(shù)據(jù)傳到視圖模版上边坤,最后組合成一個html谅年,再發(fā)到瀏覽器。
第六步:瀏覽器處理
html字符串被瀏覽器接受后融蹂,被讀取并解析。當解析到link標簽后重新發(fā)送請求獲取cs超燃;當解析到script標簽后重新發(fā)送請求獲取js并執(zhí)行代碼;當解析到img標簽后發(fā)送請求獲取圖片樱调。
瀏覽器根據(jù)html和css計算得到渲染樹届良,繪制到屏幕上;js將會被執(zhí)行士葫。