簡述從URL輸入到界面展示的過程
從用戶在瀏覽器首頁輸入網(wǎng)址(列如baidu.com)到最終頁面展現(xiàn)出百度搜索的首頁,其實一共要經(jīng)過6個步驟。分別是在瀏覽器輸入URL性穿、域名解析读恃、服務(wù)器處理、網(wǎng)站處理流程囤采、瀏覽器處理述呐、繪制界面。在詳細講述每個過程之前蕉毯,我們要先了解一下幾個名詞乓搬。
1.什么是URL?
URL(英文Uniform Resource Locator的縮寫)其實就是網(wǎng)址代虾,全稱是統(tǒng)一資源定位符进肯,用于定位互聯(lián)網(wǎng)上的資源。URL由三個部分組成:資源類型褐着、存放資源的主機域名坷澡、資源文件名。
介紹一下幾個常用的協(xié)議:
http--超文本傳輸協(xié)議資源;
https--用安全套接字層傳送的超文本傳輸協(xié)議;
ftp--文件傳輸協(xié)議箩朴;
file--當?shù)仉娔X或者網(wǎng)上分享的文件虫给;
2.什么是IP地址?
IP地址是指互聯(lián)網(wǎng)協(xié)議地址镐侯,它是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個網(wǎng)絡(luò)和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異拗军。
IP地址是一個32位的二進制數(shù),通常是被分割為4個“8位二進制數(shù)”蓄喇,常用“點分十進制”法表示成(a.b.c.d)的形式发侵。常見的IP地址分為IPv4和IPv6兩大類。
3.什么是域名妆偏?
域名(Domain Name)是由一串用點分隔的名字組成的Internet上某一臺計算機或者計算機組的名稱刃鳄,用于在數(shù)據(jù)傳輸是標識計算機的電子方位(有時也只物理地址),對于https://baidu.com/钱骂,其中baidu.com就是域名叔锐。
介紹了兩個需要了解的名詞之后接下來就來詳細介紹具體五個過程:
一 挪鹏、在瀏覽器輸入URL
首先我們在瀏覽器主界面輸入欄中輸入baidu.com,當你點擊搜索時候瀏覽器會自動將地址補全為https://baidu.com/愉烙。在這里我們就看到了前面介紹的https協(xié)議讨盒。
二、域名解析
域名解析就是把域名指向網(wǎng)站空間IP步责,讓人們通過域名就可以快速的訪問到網(wǎng)站返顺。其主要過程是:
(1)查詢?yōu)g覽器緩存——瀏覽器會在自身緩存的DNS記錄中去查找有關(guān)于https://baidu.com/的IP。
(2)系統(tǒng)緩存——如果第一步查不到的話勺择,則會從系統(tǒng)的hosts文件中去查找是否有關(guān)于該域名和對應(yīng)IP创南。
(3)路由器緩存——如果還沒查到,則通過路由器緩存的有關(guān)域名和IP信息中去查找相關(guān)信息省核。
(4)ISP稿辙,DNS緩存——若還是不能查到的話,則從ISP和DNS中緩存的信息去查看气忠,就是從互聯(lián)網(wǎng)提供商那里去查找邻储。
(5)若以上4步都不能查找到對應(yīng)IP的話,則向根域名服務(wù)器查找對應(yīng)IP旧噪,根域名服務(wù)器會把請求轉(zhuǎn)發(fā)到下一級吨娜,指導查找到對應(yīng)IP。
三淘钟、服務(wù)器處理
服務(wù)器就是一臺安裝了系統(tǒng)的機器宦赠,常見的系統(tǒng)有Linux、Window Server 2012米母,在系統(tǒng)里安裝的處理請求的應(yīng)用叫Web Server勾扭。web服務(wù)器接收用戶的Request交給網(wǎng)站代碼或者接收請求反向代理到其他web服務(wù)器。
常見的web服務(wù)器有Apache铁瞒、Nginx妙色、IIS、Lighttpd
四慧耍、網(wǎng)站處理流程
MVC模型(model)——視圖(view)——控制器(controller)
Model(模型)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分身辨,通常模型對象負責在數(shù)據(jù)庫中存取數(shù)據(jù)。
View(視圖)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分芍碧,通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的煌珊。
Controller(控制器)是應(yīng)用程序中處理用戶交互的部分,通趁诙梗控制器負責從視圖讀取數(shù)據(jù)定庵,控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。
其大致過程就是:控制器在接收到用戶請求時會調(diào)用相關(guān)模型進行處理洗贰,模型則根據(jù)數(shù)據(jù)庫的相關(guān)內(nèi)容和有關(guān)規(guī)則去處理用戶發(fā)出的請求,再返回字符串給瀏覽器陨倡。
五敛滋、瀏覽器處理
HTML字符串被瀏覽器接收后被一句句讀取解析
解析到link標簽后重新發(fā)送請求獲取css
解析到script標簽后發(fā)送請求獲取js,并執(zhí)行代碼
解析到img標簽后發(fā)送請求獲取圖片資源
六兴革、繪制網(wǎng)頁
瀏覽器根據(jù)HTML和CSS計算得到渲染樹绎晃,繪制到屏幕上,js會被執(zhí)行杂曲。
總結(jié):經(jīng)過以上6個步驟庶艾,就能夠?qū)崿F(xiàn)只需要輸入網(wǎng)址就能得到網(wǎng)址頁面,其中我只介紹了重要步驟擎勘,具體極為詳細的過程就沒有詳述咱揍,比如瀏覽器與服務(wù)器建立連接的TCP/IP三次握手。如果讀者比較感興趣的話棚饵,可以自行查閱相關(guān)資料了解煤裙。