從輸入url地址到頁(yè)面渲染

總體分為一下幾個(gè)過程:

  1. DNS 解析將域名解析成 IP 地址
  2. TCP 連接三次握手
  3. 發(fā)送 HTTP 請(qǐng)求
  4. 服務(wù)器處理并放回 HTTP 報(bào)文
  5. 瀏覽器解析渲染頁(yè)面
  6. 斷開連接:TCP 四次揮手

URL

URL(Uniform Resource Locatr)摇庙,統(tǒng)一資源定位符,用于定位互聯(lián)網(wǎng)的資源遥缕。俗稱網(wǎng)址

組成部分:scheme://host.domain:port/path/filename卫袒,例如:https://www.lufangyong.com

各部分解釋如下:

  • schema: 定義因特網(wǎng)服務(wù)的類型,常見的協(xié)議有 http单匣、https夕凝、ftp宝穗、file,其中最常見的是 http码秉,而 https 則是進(jìn)行加密的網(wǎng)絡(luò)傳輸
  • hots:定義域主機(jī)(http 的默認(rèn)主機(jī)是 www)
  • domain:定義因特網(wǎng)域名逮矛,比如 www.lufangyong.com
  • prot:定義主機(jī)上的端口號(hào)(http 的默認(rèn)端口號(hào)是 80)
  • path:定義服務(wù)器上的路徑(如果省略,則文檔必須位于網(wǎng)站的根目錄中)
  • filename:定義文檔/資源的名稱

DNS 域名解析

在瀏覽器輸入網(wǎng)址后转砖,首先要經(jīng)過域名解析须鼎,因?yàn)闉g覽器并不能直接通過域名找到對(duì)應(yīng)的服務(wù)器,而是通過 IP 地址

什么是域名解析

DNS 協(xié)議提供通過域名查找 IP 地址府蔗,或逆向從 IP 地址反查域名的服務(wù)晋控。DNS 是一個(gè)網(wǎng)絡(luò)服務(wù)器,我們的域名解析簡(jiǎn)單來說就是在 DNS 上記錄一條信息記錄礁竞。

例如 baidu.com 220.114.23.56(服務(wù)器外網(wǎng)IP地址)80(服務(wù)器端口號(hào))

瀏覽器如何通過域名去查詢 URL 對(duì)應(yīng)的 IP 呢

  • 瀏覽器緩存:瀏覽器會(huì)按照一定的頻率緩存 DNS 記錄
  • 操作系統(tǒng):如果瀏覽器緩存中找不到需要的 DNS 記錄,那就去操作系統(tǒng)中找
  • 路由緩存:路由器也有 DNS 緩存
  • ISP 的 DNS 服務(wù)器:ISP 是互聯(lián)網(wǎng)服務(wù)提供商(Internet Service Provider)的簡(jiǎn)稱杉辙,ISP 有專門的 DNS 服務(wù)器對(duì)應(yīng) DNS 查詢請(qǐng)求
  • 根服務(wù)器:ISP 的 DNS 服務(wù)器還找不到的話模捂,它就會(huì)向根服務(wù)器發(fā)出請(qǐng)求,進(jìn)行遞歸查詢(DNS 服務(wù)器先問根域名服務(wù)器 .com 域名服務(wù)器的 IP 地址蜘矢,然后再問 .baidu 域名服務(wù)器狂男,以此類推)

小結(jié)

瀏覽器通過向 DNS 服務(wù)器發(fā)送域名,DNS 服務(wù)器查詢到與域名相對(duì)應(yīng)的 IP 地址品腹,然后返回給瀏覽器岖食,瀏覽器再將 IP 地址打在協(xié)議上,同時(shí)請(qǐng)求參數(shù)也會(huì)在協(xié)議搭載舞吭,然后一并發(fā)送給對(duì)應(yīng)的服務(wù)器泡垃。接下來介紹向服務(wù)器發(fā)送 HTTP 請(qǐng)求階段,HTTP 請(qǐng)求分為三個(gè)部分:TCP 三次握手羡鸥、http 請(qǐng)求響應(yīng)信息蔑穴、關(guān)閉 TCP 連接。


TCP

按層次分惧浴,TCP 位于傳輸層存和,提供可靠的字節(jié)流服務(wù)。

所謂的字節(jié)流服務(wù)(Bety Stream Service)是指衷旅,為了方便傳輸捐腿,將大塊數(shù)據(jù)分割成以報(bào)文(segment)為單位的數(shù)據(jù)包進(jìn)行管理。而可靠的傳輸服務(wù)是指柿顶,能夠把數(shù)據(jù)準(zhǔn)確可靠地傳給對(duì)方茄袖。一言以蔽之,TCP 協(xié)議為了更容易傳送大數(shù)據(jù)才把數(shù)據(jù)分割嘁锯,而且 TCP 協(xié)議能夠確認(rèn)數(shù)據(jù)最終是否送達(dá)到對(duì)方

確保數(shù)據(jù)能達(dá)到目標(biāo)

為了準(zhǔn)確無誤地將數(shù)據(jù)送達(dá)目標(biāo)處绞佩,TCP 協(xié)議采用三次握手(there-way handshaking)策略寺鸥。用 TCP 協(xié)議把數(shù)據(jù)包送出去后,TCP 不會(huì)對(duì)傳送后的情況置之不理品山,它一定會(huì)向?qū)Ψ酱_認(rèn)是否成功送達(dá)胆建。握手過程中使用了 TCP 的標(biāo)志(flag)———— SYN(synchronize)和 ACK(acknowledgement)

發(fā)送端首先發(fā)送一個(gè)帶 SYN 標(biāo)志的數(shù)據(jù)包給對(duì)方。接受端收到后肘交,回傳一個(gè)帶有 SYN/ACK 標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息笆载。最后,發(fā)送端在回傳一個(gè)帶 ACK 標(biāo)志的數(shù)據(jù)包涯呻,代表 “握手” 結(jié)束

若在握手過程中某個(gè)階段莫名中斷凉驻,TCP 協(xié)議會(huì)再次以相同的順序發(fā)送相同的數(shù)據(jù)包


服務(wù)器處理請(qǐng)求并返回 HTTP 報(bào)文

MVC 后臺(tái)處理

瀏覽器解析渲染頁(yè)面

瀏覽器拿到響應(yīng)文本 HTML 后,開始解析渲染頁(yè)面

分為五個(gè)步驟:

  1. 根據(jù) HTML 解析 DOM 樹
  2. 根據(jù) CSS 解析生成 CSS 規(guī)則樹
  3. 結(jié)合 DOM 樹和 CSS 規(guī)則樹复罐,生成渲染樹
  4. 根據(jù)渲染樹計(jì)算每一個(gè)節(jié)點(diǎn)的信息
  5. 根據(jù)計(jì)算好的信息繪制頁(yè)面

根據(jù) HTML 解析 DOM 樹

  • 根據(jù) HTML 的內(nèi)容涝登,將標(biāo)簽按照結(jié)構(gòu)解析成為 DOM 樹,DOM 樹解析的過程是一個(gè)深度優(yōu)先遍歷效诅。即先構(gòu)建當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)胀滚,再構(gòu)建下一個(gè)節(jié)點(diǎn)。
  • 在讀取 HTML 文檔乱投,構(gòu)建 DOM 樹的過程中咽笼,若遇到 script 標(biāo)簽,則 DOM 樹的構(gòu)建會(huì)暫停戚炫,直到腳本執(zhí)行完畢

根據(jù) CSS 解析生成 CSS 規(guī)則樹

  • 解析 CSS 規(guī)則樹時(shí) js 執(zhí)行將暫停剑刑,直到 CSS 規(guī)則樹就緒
  • 瀏覽器在 CSS 規(guī)則樹生成之前不會(huì)進(jìn)行渲染

結(jié)合 DOM 樹和 CSS 規(guī)則樹,生成渲染樹

  • DOM 樹和 CSS 規(guī)則樹全部準(zhǔn)備好了以后双肤,瀏覽器才開始構(gòu)建渲染樹
  • 精簡(jiǎn) CSS 并可以加快 CSS 規(guī)則樹的構(gòu)建施掏,從而加快頁(yè)面相應(yīng)速度

根據(jù)渲染樹計(jì)算每一個(gè)節(jié)點(diǎn)的信息

  • 布局:通過渲染樹中渲染對(duì)象的信息,計(jì)算出每一個(gè)渲染樹對(duì)象的位置和尺寸
  • 回流:在布局完成后茅糜,發(fā)現(xiàn)了某個(gè)部分發(fā)生了變化影響了布局其监,那就需要倒回去重新渲染

根據(jù)計(jì)算好的信息繪制頁(yè)面

  • 繪制階段:系統(tǒng)會(huì)遍歷呈現(xiàn)樹,并調(diào)用呈現(xiàn)器的 paint 方法限匣,將呈現(xiàn)器的內(nèi)容顯示在屏幕上
  • 重繪:某個(gè)元素的背景色抖苦,文字顏色等,不影響元素周圍或內(nèi)部布局的屬性米死,將只會(huì)引起瀏覽器的重繪
  • 回流:莫格元素的尺寸發(fā)生了變化锌历,則需重新計(jì)算渲染樹,重新渲染

斷開連接

當(dāng)數(shù)據(jù)傳送完畢峦筒,需要斷開 tcp 連接究西,此時(shí)發(fā)起 tcp 四次揮手

參考資源

從 URL 輸入到頁(yè)面展現(xiàn)到底發(fā)生什么?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末物喷,一起剝皮案震驚了整個(gè)濱河市卤材,隨后出現(xiàn)的幾起案子遮斥,更是在濱河造成了極大的恐慌,老刑警劉巖扇丛,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件术吗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡帆精,警方通過查閱死者的電腦和手機(jī)较屿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卓练,“玉大人隘蝎,你說我怎么就攤上這事〗笃螅” “怎么了嘱么?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)顽悼。 經(jīng)常有香客問我曼振,道長(zhǎng),這世上最難降的妖魔是什么表蝙? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任拴测,我火速辦了婚禮乓旗,結(jié)果婚禮上府蛇,老公的妹妹穿的比我還像新娘。我一直安慰自己屿愚,他們只是感情好汇跨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妆距,像睡著了一般穷遂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上娱据,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天蚪黑,我揣著相機(jī)與錄音,去河邊找鬼中剩。 笑死忌穿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的结啼。 我是一名探鬼主播掠剑,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼郊愧!你這毒婦竟也來了朴译?” 一聲冷哼從身側(cè)響起井佑,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎眠寿,沒想到半個(gè)月后躬翁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澜公,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年姆另,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坟乾。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迹辐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甚侣,到底是詐尸還是另有隱情明吩,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布殷费,位于F島的核電站印荔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏详羡。R本人自食惡果不足惜仍律,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望实柠。 院中可真熱鬧水泉,春花似錦、人聲如沸窒盐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蟹漓。三九已至炕横,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葡粒,已是汗流浹背份殿。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嗽交,地道東北人卿嘲。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像轮纫,于是被迫代替她去往敵國(guó)和親腔寡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容