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

上網(wǎng)已經(jīng)成為我們每個(gè)人生活中一項(xiàng)重要的內(nèi)容了,當(dāng)我們打開瀏覽器,在地址欄中輸入相應(yīng)的網(wǎng)址并按下了回車鍵,既會在頁面中呈現(xiàn)所需的相關(guān)信息。那么,在這背后都進(jìn)行了哪些技術(shù)步驟,才會將豐富的信息內(nèi)容加載出來,展現(xiàn)在我們眼前呢。

從URL的輸入到頁面的展現(xiàn),大概會經(jīng)過以下幾個(gè)過程:

  1. 在瀏覽器中輸入url
  2. DNS域名解析
  3. 服務(wù)器處理請求
  4. 網(wǎng)站處理流程
  5. 瀏覽器顯示頁面信息

一、在瀏覽器輸入U(xiǎn)RL

首先,我們來了解下URL的一些知識。

URL(Uniform Resource Locator,統(tǒng)一資源定位符)

由一串簡單的文本字符組成,他的作用是用于定位互聯(lián)網(wǎng)上資源的地址。URL通常由以下幾部分組成:傳輸協(xié)議、域名、端口、文件路徑。

以我的簡書主頁為例,“http://www.lxweimin.com/u/dc6b5792c956”這一串字符即為URL。

  • 協(xié)議部分

通過特定的傳輸協(xié)議,獲得指定文檔的內(nèi)容。

該URL的協(xié)議部分為“ https: ”,這代表網(wǎng)頁使用的是https協(xié)議。在Internet中可以使用多種協(xié)議。常見的協(xié)議有:” http:// ” (超文本傳輸協(xié)議,信息是明文傳輸)、“ https:// ”(進(jìn)行加密的網(wǎng)絡(luò)傳輸協(xié)議)、" file:// "(本地文件傳輸協(xié)議,file協(xié)議主要用于訪問本地計(jì)算機(jī)中的文件)、" ftp:// "(文件傳輸協(xié)議)," mailto: "(資源為電子郵件地址,通過SMTP訪問)。還有一種URL前面沒有加指定協(xié)議,它是指獲取該資源需要使用的協(xié)議與當(dāng)前的URL是保持一致的。

  • 域名部分

用來確定服務(wù)器在互聯(lián)網(wǎng)上的位置,域名的目的是便于記憶和溝通的一組服務(wù)器的地址,是唯一不可重復(fù)的。

該URL的域名部分為jianshu.com

  • 端口部分

跟在域名后面的為端口編號,域名和端口之間使用“ :”分隔開。默認(rèn)端口一般在URL中不展現(xiàn)。當(dāng)Web服務(wù)器采用的不是默認(rèn)端口時(shí),就需要寫明服務(wù)所用的端口。端口號的作用,主要是區(qū)分服務(wù)類別和在同一時(shí)間進(jìn)行多個(gè)會話。

常用的應(yīng)用協(xié)議和對應(yīng)的端口號如下:

應(yīng)用協(xié)議 端口號
http 80
ftp 21
https 443
smtp 25
tftp 69
telnet 23
  • 文件路徑

一般用來表示主機(jī)上的一個(gè)目錄或文件地址(即存儲的位置),由零或多個(gè)“ / ”符號隔開,劃分為多個(gè)層次進(jìn)行描述。

該URL的文件路徑為/u/dc6b5792c956

二、DNS域名解析

當(dāng)你在瀏覽器中輸入U(xiǎn)RL后,你使用的電腦會發(fā)出一個(gè)DNS請求(將域名轉(zhuǎn)化為IP地址的請求)。對于瀏覽器,實(shí)際上并不知道“http://www.lxweimin.com/u/dc6b5792c956”到底是什么東西,需要確認(rèn)其中域名所在服務(wù)器的IP地址才能找到目標(biāo)網(wǎng)站(瀏覽器需要對IP地址進(jìn)行識別,才能夠進(jìn)一步傳遞網(wǎng)址和信息內(nèi)容)。那么,將域名解析成對應(yīng)的服務(wù)器IP地址這項(xiàng)工作,就是由DNS服務(wù)器來完成。

DNS(Domain Name System,域名系統(tǒng))

主要進(jìn)行將主機(jī)名和域名轉(zhuǎn)換為IP地址的工作。把便于用戶記憶的特定域名轉(zhuǎn)換成為能夠被機(jī)器直接讀取的IP數(shù)串。

IP地址(Internet Protocol Address,互聯(lián)網(wǎng)協(xié)議地址)

IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個(gè)網(wǎng)絡(luò)和每一臺主機(jī)分配一個(gè)邏輯地址。在互聯(lián)網(wǎng)中的每一臺主機(jī)都有IP地址,IP協(xié)議就是使用這個(gè)地址在主機(jī)之間傳遞信息,形如 192.168.0.1 。如果沒有IP地址,就無法找到相應(yīng)的主機(jī)進(jìn)行信息交換,這個(gè)設(shè)備也就無法連接到互聯(lián)網(wǎng)。

相關(guān)問題:

為什么要用域名,不直接使用IP地址?

  • IP地址不容易記住,特定的域名,更加方便與用戶記憶或辨識。
  • IP地址與域名并不是一對一的映射關(guān)系,一個(gè)域名后面可以對應(yīng)多臺設(shè)備的IP地址,一個(gè)IP地址也可以綁定多個(gè)域名。如果直接使用IP地址的話,可能無法準(zhǔn)確的定位你想要訪問的網(wǎng)站。

局域網(wǎng)IP與公網(wǎng)IP之間的區(qū)別

  • 內(nèi)網(wǎng)也就是局域網(wǎng),內(nèi)網(wǎng)的計(jì)算機(jī)以NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)協(xié)議,通過一個(gè)公共的網(wǎng)關(guān)訪問Internet。內(nèi)網(wǎng)的計(jì)算機(jī)可向Internet上的其他計(jì)算機(jī)發(fā)送連接請求,但I(xiàn)nternet上其他的計(jì)算機(jī)無法向內(nèi)網(wǎng)的計(jì)算機(jī)發(fā)送連接請求。
  • 公網(wǎng)IP是處于整個(gè)互聯(lián)網(wǎng)可訪問的一個(gè)狀態(tài)當(dāng)中,公網(wǎng)IP都是需要購買的。

在同樣的局域網(wǎng)下,如果知道對方的IP就可以進(jìn)行訪問,公網(wǎng)IP是處于整個(gè)互聯(lián)網(wǎng)可訪問的狀態(tài)中。

域名解析的流程:

  1. 查找瀏覽器緩存——我們?nèi)粘g覽網(wǎng)站時(shí),瀏覽器會緩存DNS記錄一段時(shí)間。如果以前我們訪問過該網(wǎng)站,那么在瀏覽器中就會有相應(yīng)的緩存記錄。因此,我們輸入網(wǎng)址后,瀏覽器會首先檢查緩存中是否有該域名對應(yīng)的IP信息。如果有,則直接返回該信息供用戶訪問網(wǎng)站,如果查詢失敗,會從系統(tǒng)緩存中進(jìn)行查找。
  2. 查找系統(tǒng)緩存——從hosts文件中查找是否有存儲的DNS信息(MAC端,可在“終端”中輸入命令cat etc/hosts找到hosts文件位置),如果查詢失敗,可從路由器緩存中繼續(xù)查找。
  3. 查找路由器緩存——如果之前訪問過相應(yīng)的網(wǎng)站,一般路由器也會緩存信息。如果查詢失敗,可繼續(xù)從 ISP DNS 緩存查找。
  4. 查找ISP DNS緩存——從網(wǎng)絡(luò)服務(wù)商(例如電信)的DNS緩存信息中查找。
  5. 如果經(jīng)由以上方式都沒找到對應(yīng)IP的話,則像根域名服務(wù)器查找域名對應(yīng)的IP地址,根域名服務(wù)器把請求轉(zhuǎn)發(fā)到下一級,逐層查找該域名的對應(yīng)數(shù)據(jù),知道獲得最終解析結(jié)果或失敗的相應(yīng)。
  • 根域名服務(wù)器,根服務(wù)器主要用來管理互聯(lián)網(wǎng)的主目錄。是互聯(lián)網(wǎng)域名解析系統(tǒng)(DNS)中最高級別的域名服務(wù)器。
相關(guān)問題:
  • 什么是DNS劫持?

DNS劫持(Domain Name System,域名劫持),是指在劫持的網(wǎng)絡(luò)范圍內(nèi)攔截域名解析的請求,分析請求的域名,把審查范圍以外的請求放行,返回假的IP地址或者什么都不做使請求失去響應(yīng),其效果就是對特定的網(wǎng)絡(luò)不能訪問或訪問的是假網(wǎng)址。簡單來說,就是你輸入的是知乎的網(wǎng)址,但是卻跳轉(zhuǎn)到了百度的頁面。

  • 為什么修改DNS為114.114.114.114或8.8.8.8可以解決電腦上不了網(wǎng)的問題?

當(dāng)你使用手機(jī)端可以正常打開網(wǎng)站,但是在電腦端訪問網(wǎng)站失敗的話,那么可能是DNS配置出現(xiàn)了問題,或者是在路由器緩存中解析查找錯(cuò)誤,無法找到對應(yīng)的IP地址。那么這時(shí)我們可以在電腦端更改DNS進(jìn)行單獨(dú)配置即可正常訪問(MAC端,打開“網(wǎng)絡(luò)偏好設(shè)置”——“高級”——“DNS”進(jìn)行修改)。8.8.8.8是谷歌提供的免費(fèi)DNS服務(wù)器的IP地址,114.114.114.114是電信的。

三、服務(wù)器處理請求

瀏覽器通過IP地址找到對應(yīng)的服務(wù)器,要求建立TCP鏈接,此時(shí)服務(wù)器開始處理用戶請求。

服務(wù)器是什么?

服務(wù)器是一臺安裝系統(tǒng)的機(jī)器。常見的系統(tǒng)有Linux、Windows Server2012等。系統(tǒng)里安裝的處理請求的應(yīng)用叫Web server

服務(wù)器如何處理請求?

由服務(wù)器上安裝的處理請求的應(yīng)用(Web Server)來處理。
常見的Web服務(wù)器有:Apache、Nginx、IIS、Lighttpd。
Web服務(wù)器接收用戶的Requset交給網(wǎng)站代碼或反向代理到其他服務(wù)器。

TCP是什么?

TCP是互聯(lián)網(wǎng)中的傳輸層協(xié)議,提供可靠的鏈接服務(wù),采用三次握手確認(rèn)一個(gè)連接:

  1. 瀏覽器向服務(wù)器發(fā)送建立連接的請求。
  2. 服務(wù)器接收到瀏覽器發(fā)送的請求后,想瀏覽器發(fā)送統(tǒng)一連接的信號。
  3. 瀏覽器接受到服務(wù)器發(fā)出的同意連接的信號后,再次向服務(wù)器發(fā)出確認(rèn)連接的信號。

當(dāng)三次握手返程,TCP客戶端和服務(wù)端成功的建立連接,就可以開始傳輸數(shù)據(jù)了。

四、網(wǎng)站處理流程

用戶輸入網(wǎng)址后向服務(wù)器發(fā)送內(nèi)容請求,服務(wù)器接收到請求后觸發(fā)Controller(控制器),控制器從Model(模型)和視圖(View)中獲取各種數(shù)據(jù)信息進(jìn)行處理,最后視圖(View)將數(shù)據(jù)渲染為HTML使得頁面完整的呈獻(xiàn)給用戶。

MVC是什么

MVC是一種設(shè)計(jì)模式,全名是Model View Controller,是模型(Model)- 視圖(View)- 控制器(Controller)的縮寫。

  • Model(模型)
    是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。
    通常模型對象負(fù)責(zé)在數(shù)據(jù)苦衷存取數(shù)據(jù)。

  • View(視圖)
    是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。
    通常視圖是一句模型數(shù)據(jù)創(chuàng)建的。
    而這一部分也是我們前端工作中很重要的一項(xiàng)內(nèi)容。

  • Controller(控制器)
    是應(yīng)用程序中處理用戶交互的部分。
    通常控制器負(fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。

五、瀏覽器顯示頁面信息

  • HTML字符串被瀏覽器接收后被一句句讀取解析。
  • 解析到link標(biāo)簽后重新發(fā)送請求獲取CSS。
  • 解析到script標(biāo)簽后發(fā)送請求獲取JS,并執(zhí)行代碼。
  • 解析到img標(biāo)簽后發(fā)送請求獲取圖片資源。
  • 瀏覽器根據(jù)HTML和CSS計(jì)算得到渲染書,繪制到屏幕上。
  • JS會被執(zhí)行,頁面展現(xiàn)。

以上就是我與大家分享的,從URL輸入到頁面展現(xiàn)其中過程的學(xué)習(xí)記錄,對于理解不到位或者錯(cuò)誤的地方煩請大家指正,感謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,016評論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,006評論 2 374