從URL輸入到頁(yè)面展現(xiàn)

前言

當(dāng)用戶打開瀏覽器,在地址欄輸入 https://www.baidu.com/讨韭,按下回車脂信,頁(yè)面展示百度首頁(yè)癣蟋。整個(gè)過程發(fā)生了什么呢?

一狰闪、輸入U(xiǎn)RL

  • URL統(tǒng)一資源定位符疯搅,也平時(shí)我們說的網(wǎng)址。瀏覽器通過URL來查找和定位資源的位置埋泵。

  • url的格式一般為:

協(xié)議類型://<服務(wù)器地址>:<服務(wù)器端口號(hào)>/<文件路徑>/

常見的協(xié)議有http幔欧、https、telnet丽声、ftp礁蔗、file等。

  • 其中http是最常見的超文本傳輸協(xié)議
  • 而https(超文本傳輸安全協(xié)議)則是由http通過與SSL (安全套接層)或TLS(安全傳輸協(xié)議)的組合使用雁社,加密的HTTP的通信內(nèi)容浴井。因此HTTPS比HTTP協(xié)議更加安全。

服務(wù)器地址是URL指定待訪問的地址歧胁∽趟牵可以是域名或主機(jī)號(hào)厉碟,或ip地址

服務(wù)器端口號(hào)指服務(wù)器連接的網(wǎng)絡(luò)端口號(hào)喊巍。若用戶省去,則為默認(rèn)端口號(hào)

  • 因?yàn)橐慌_(tái)計(jì)算機(jī)常常會(huì)同時(shí)作為Web箍鼓,F(xiàn)TP等服務(wù)器崭参,端口編號(hào)用來告訴web服務(wù)器所在的主機(jī)要將請(qǐng)求交給哪個(gè)服務(wù)。
  • 默認(rèn)情況下http服務(wù)的端口為80款咖。ftp為21何暮,HTTPS為443,telnet為23.

文件路徑則是服務(wù)器上文件路徑定位上的資源铐殃,也就是目錄

https://www.baidu.com/使用的是HTTPS協(xié)議海洼,服務(wù)器地址則是域名。

20.png

二富腊、域名解析

  • DNS服務(wù)是提供域名到IP地址之間的解析服務(wù)坏逢。計(jì)算機(jī)即可以被賦予ip地址,也可以被賦予主機(jī)號(hào)和域名赘被,比如www.baidu.com是整。
  • 用戶通常使用主機(jī)號(hào)與域名來訪問其他計(jì)算機(jī),因?yàn)楦菀子洃洝?/li>
  • IP地址是指互聯(lián)網(wǎng)協(xié)議地址民假,每個(gè)處于互聯(lián)網(wǎng)中的設(shè)備都有IP 地址浮入,形如192.168.1.10
  • 局域網(wǎng) IP 和公網(wǎng) IP 是有差別的
  • 127.0.0.1代表本機(jī)的 IP

當(dāng)用戶在瀏覽器中輸入https://www.baidu.com/后,你使用的計(jì)算機(jī)會(huì)發(fā)出一個(gè)DNS請(qǐng)求到本地DNS服務(wù)器。本地DNS服務(wù)器一般都是你的網(wǎng)絡(luò)接入服務(wù)器商提供羊异,比如中國(guó)電信事秀,中國(guó)移動(dòng),中國(guó)聯(lián)通DNS請(qǐng)求到達(dá)本地DNS服務(wù)器之后會(huì)有以下幾個(gè)步驟

1 搜索瀏覽器緩存

瀏覽器會(huì)緩存DNS記錄一段時(shí)間彤断,且有數(shù)量限制

2 搜索操作系統(tǒng)緩存

從 Hosts 文件查找是否有該域名與對(duì)應(yīng) IP

3 搜索路由器緩存

一般路由器也會(huì)緩存域名信息

4搜索ISP(互聯(lián)網(wǎng)服務(wù)提供商)NDS緩存

比如到中國(guó)移動(dòng)的 DNS 上查找緩存

5若都沒有找到,則向根域名服務(wù)器查找域名對(duì)應(yīng) IP秽晚,根域名服務(wù)器把請(qǐng)求轉(zhuǎn)發(fā)到下一級(jí)瓦糟,直到找到對(duì)應(yīng)IP

三 .TCP連接

  • 拿到域名對(duì)應(yīng)的IP地址之后,指瀏覽器會(huì)以一個(gè)隨機(jī)端口(1024 < 端口 < 65535)向服務(wù)器的WEB程序(常用的有httpd,nginx等)80端口發(fā)起TCP的連接請(qǐng)求赴蝇。
  • 3次握手菩浙,詳細(xì)展開很麻煩的

四. 建立TCP連接后發(fā)起http請(qǐng)求、

進(jìn)過TCP3次握手之后,瀏覽器發(fā)起了http的請(qǐng)求,使用的http的方法 一般是GET 方法妒牙,請(qǐng)求的URL是 / ,協(xié)議是HTTP/1.0或HTTP/1.1

五贬芥、 服務(wù)器處理 ——響應(yīng)http請(qǐng)求,響應(yīng)報(bào)文

  • 每臺(tái)服務(wù)器上都會(huì)安裝處理請(qǐng)求的應(yīng)用——web server著洼。常見的web server產(chǎn)品有apache、nginx、IIS或Lighttpd等疫蔓。

  • 當(dāng)web server接收到一個(gè)HTTP請(qǐng)求,會(huì)返回一個(gè)HTTP響應(yīng)身冬,例如送回一個(gè)HTML頁(yè)面衅胀。對(duì)于不同用戶發(fā)送的請(qǐng)求,會(huì)結(jié)合配置文件酥筝,把不同請(qǐng)求委托給服務(wù)器上處理對(duì)應(yīng)請(qǐng)求的程序進(jìn)行處理

  • 這些服務(wù)器端(server-side)的程序通常產(chǎn)生一個(gè)HTML的響應(yīng)(response)來讓瀏覽器可以瀏覽滚躯。

  • 那么如何處理請(qǐng)求?實(shí)際上就是后臺(tái)處理的工作嘿歌。后臺(tái)開發(fā)現(xiàn)在有很多框架掸掏,但大部分都還是按照MVC設(shè)計(jì)模式進(jìn)行搭建的。

MVC是三個(gè)單詞的首字母縮寫宙帝,它們是Model(模型)丧凤、View(視圖)和Controller(控制器)。

1.最上面的一層步脓,是直接面向最終用戶的"視圖層"(View)愿待。視圖是用戶看到并與之交互的界面。這是前端工作的主力部分

2.模型(Model)沪编,模型是將實(shí)際開發(fā)中的業(yè)務(wù)規(guī)則和所涉及的數(shù)據(jù)格式模型化呼盆,應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用。在MVC的三個(gè)部件中蚁廓,模型擁有最多的處理任務(wù)访圃。一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。

3.控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求相嵌。Controller處于管理角色腿时,從視圖接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求况脆,然后再確定用哪個(gè)視圖來顯示模型處理返回的數(shù)據(jù)。

總結(jié)而言批糟,首先控制器接收用戶的請(qǐng)求格了,并決定應(yīng)該調(diào)用哪個(gè)模型來進(jìn)行處理,然后模型用業(yè)務(wù)邏輯來處理用戶的請(qǐng)求并返回?cái)?shù)據(jù)徽鼎,最后控制器用相應(yīng)的視圖格式化模型返回html字符串給瀏覽器盛末,瀏覽器呈現(xiàn)網(wǎng)頁(yè)給用戶。


22.png

七否淤、瀏覽器處理——加載悄但、解析、渲染

接下來就是瀏覽器進(jìn)行處理石抡, 通過后臺(tái)處理返回的HTML字符串被瀏覽器接受后被一句句讀取解析檐嚣,html頁(yè)面經(jīng)歷加載、解析啰扛、渲染嚎京。

加載

瀏覽器對(duì)一個(gè)html頁(yè)面的加載順序是從上而下的。如果加載過程中遇到外部css文件隐解,瀏覽器另外發(fā)出一個(gè)請(qǐng)求鞍帝,來獲取css文件。遇到圖片資源厢漩,瀏覽器也會(huì)另外發(fā)出一個(gè)請(qǐng)求膜眠,來獲取圖片資源岩臣。但是當(dāng)文檔加載過程中遇到j(luò)s文件溜嗜,html文檔會(huì)掛起渲染(加載解析渲染同步)的線程,不僅要等待文檔中js文件加載完畢架谎,還要等待解析執(zhí)行完畢炸宵,才可以恢復(fù)html文檔的渲染線程。

解析

  • 解析文檔是指將文檔轉(zhuǎn)化成為有意義的結(jié)構(gòu)谷扣,也就是可讓代碼理解和使用的結(jié)構(gòu)土全。解析得到的結(jié)果通常是代表了文檔結(jié)構(gòu)的節(jié)點(diǎn)樹,它稱作解析樹或者語(yǔ)法樹会涎,也就是DOM樹裹匙。如下圖:
23.gif

渲染

即為構(gòu)建渲染樹的過程末秃,就是將DOM樹進(jìn)行可視化表示概页。構(gòu)建這棵樹是為了以正確的順序繪制文檔內(nèi)容。

八练慕、繪制網(wǎng)頁(yè)

瀏覽器根據(jù) HTML 和 CSS 計(jì)算得到渲染樹惰匙,最終繪制到屏幕上

25.png

作者:彭榮輝
鏈接:http://www.reibang.com/u/0f804364a8a8
來源:簡(jiǎn)書
著作權(quán)歸作者所有技掏。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處项鬼。

參看文章:
前端經(jīng)典面試題: 從輸入U(xiǎn)RL到頁(yè)面加載發(fā)生了什么哑梳?
導(dǎo)航到某個(gè)網(wǎng)址時(shí)會(huì)發(fā)生什么?
一次完整的HTTP事務(wù)是怎樣一個(gè)過程绘盟?
前端面試題:從url到頁(yè)面展現(xiàn)鸠真,這之中發(fā)生了什么?
在瀏覽器地址欄輸入一個(gè)URL后回車龄毡,背后會(huì)進(jìn)行哪些技術(shù)步驟弧哎?
從URL輸入到頁(yè)面展現(xiàn)發(fā)生了什么?
從URL輸入到頁(yè)面展現(xiàn)的過程-前端筆記
瀏覽器工作原理:從 URL 輸入到頁(yè)面展現(xiàn)到底發(fā)生了什么稚虎?
MVC模型結(jié)構(gòu)是什么
瀏覽器~加載撤嫩,解析,渲染

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蠢终,一起剝皮案震驚了整個(gè)濱河市序攘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寻拂,老刑警劉巖程奠,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異祭钉,居然都是意外死亡瞄沙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門慌核,熙熙樓的掌柜王于貴愁眉苦臉地迎上來距境,“玉大人,你說我怎么就攤上這事垮卓〉婀穑” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵粟按,是天一觀的道長(zhǎng)诬滩。 經(jīng)常有香客問我,道長(zhǎng)灭将,這世上最難降的妖魔是什么疼鸟? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮庙曙,結(jié)果婚禮上空镜,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好姑裂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布馋袜。 她就那樣靜靜地躺著,像睡著了一般舶斧。 火紅的嫁衣襯著肌膚如雪欣鳖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天茴厉,我揣著相機(jī)與錄音泽台,去河邊找鬼。 笑死矾缓,一個(gè)胖子當(dāng)著我的面吹牛怀酷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嗜闻,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蜕依,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了琉雳?” 一聲冷哼從身側(cè)響起样眠,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翠肘,沒想到半個(gè)月后檐束,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡束倍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年被丧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绪妹。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甥桂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喂急,到底是詐尸還是另有隱情格嘁,我是刑警寧澤笛求,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布廊移,位于F島的核電站,受9級(jí)特大地震影響探入,放射性物質(zhì)發(fā)生泄漏狡孔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一蜂嗽、第九天 我趴在偏房一處隱蔽的房頂上張望苗膝。 院中可真熱鬧,春花似錦植旧、人聲如沸辱揭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)问窃。三九已至亥鬓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間域庇,已是汗流浹背嵌戈。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留听皿,地道東北人熟呛。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像尉姨,于是被迫代替她去往敵國(guó)和親庵朝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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