用戶在瀏覽器中輸入一個 url 或直接點開一個 url 后,就可以看到網(wǎng)頁內(nèi)容了。雖然可以直接顯示,但在這背后卻經(jīng)過了非常復(fù)雜的操作,主要有五大過程:
1.?瀏覽器根據(jù)域名找到對應(yīng)的 ip 地址(遠程服務(wù)器)
????????ip 指的是網(wǎng)絡(luò)為每一臺電腦分配的一個地址。由于 ip 地址不容易被記住,所以有了域名,瀏覽器拿到域名后,首先要先把域名解析成 ip,然后找到 ip 對應(yīng)的機器。解析域名通常使用的方法是 DNS 解析,為了讓查找過程更高效,瀏覽器和操作系統(tǒng)都會將每次的解析結(jié)果緩存起來,在下次解析的時候,就會先從緩存中去查找 ip(解析方式:查找本地緩存中 ——> DNS數(shù)據(jù)緩存中 ——> DNS解析對應(yīng)ip)。
2.?瀏覽器與遠程服務(wù)器建立連接(tcp連接 三次握手)
找到對應(yīng)的 ip 后,就要建立 TCP 連接了,只有連接成功,雙方才可以發(fā)送數(shù)據(jù)。連接分為三次,分別是瀏覽器向服務(wù)器端發(fā)送 SYN 請求;服務(wù)器接收到請求后,會向瀏覽器端發(fā)送 SYN/ACK 數(shù)據(jù)包進行確認信息;最后瀏覽器會向服務(wù)器端傳入 ACK 數(shù)據(jù)包來表示可以通信了。
3.?瀏覽器與遠程服務(wù)器發(fā)送和接收數(shù)據(jù)
建立連接后,瀏覽器和服務(wù)器就可以進行通信了。瀏覽器通過向服務(wù)器發(fā)送 http 請求,從而獲得響應(yīng)數(shù)據(jù)。這其中的過程包含了:請求報文(請求行、請求頭、主體)、響應(yīng)報文(狀態(tài)行、響應(yīng)頭、響應(yīng)正文)。
4.?瀏覽器與遠程服務(wù)器斷開連接(tcp斷開 四次揮手)
兩端通信結(jié)束之后,為了不浪費系統(tǒng)資源,就需要考慮斷開連接了。TCP 的斷開分為四次,因為在瀏覽器向服務(wù)器端發(fā)出可以斷開連接信息的時候,服務(wù)器可能還存在一些數(shù)據(jù)沒有傳輸完成,這時服務(wù)器需要去確認一下數(shù)據(jù)是否全都傳輸完成,如果全都完成了,服務(wù)器才會告訴瀏覽器可以斷開了。
5.?瀏覽器渲染
1)構(gòu)建 DOM 樹:渲染進程將 HTML 內(nèi)容轉(zhuǎn)換為能夠讀懂的 DOM 樹結(jié)構(gòu);
2)樣式計算:渲染引擎將 CSS 樣式表轉(zhuǎn)化為瀏覽器可以理解的 styleSheets,計算出 DOM 節(jié)點的樣式;
3)布局階段:創(chuàng)建布局樹,并計算元素的布局信息;(排除script、meta等功能化和非視覺節(jié)點)
4)分層:對布局樹進行分層,并生成分層樹;(生成圖層樹,因為有不同的層級要求)
5)柵格化:合并線程將圖層分圖塊,并柵格化將圖塊轉(zhuǎn)換成位圖;(視圖進行分割)文章來源:http://www.zghlxwxcb.cn/news/detail-666421.html
6)顯示:合并線程發(fā)送繪制圖塊命令給瀏覽器進程。瀏覽器進程根據(jù)指令生成頁面,并顯示在頁面;文章來源地址http://www.zghlxwxcb.cn/news/detail-666421.html
到了這里,關(guān)于從輸入URL到瀏覽器顯示頁面的過程中都發(fā)生了什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!