1.關(guān)于URL
URL是一種統(tǒng)一資源定位符,用于定位互聯(lián)網(wǎng)上資源配乓,包括http/https/ftp/file等協(xié)議
(ps:其中https可用于資源加密犹芹,是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版腰埂。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL牺荠,因此加密的詳細(xì)內(nèi)容就需要SSL)
2.域名解析
從URL首先接著進(jìn)行域名解析驴一,因?yàn)闉g覽器并不知道某個(gè)URL是什么,需要通過(guò)域名找到某個(gè)網(wǎng)址所在的IP地址杈曲。
那域名是什么?為什么需要域名恰响?
域名是一個(gè)IP地址上有“面具” 魁亦。例如baidu.com即為域名。一個(gè)域名的目的也就是作用洁奈,是便于記憶和溝通的一組服務(wù)器的地址(網(wǎng)站利术,電子郵件,F(xiàn)TP等)印叁。
IP是什么?
IP是網(wǎng)絡(luò)之間互連的協(xié)議也就是為計(jì)算機(jī)網(wǎng)絡(luò)相互連接進(jìn)行通信而設(shè)計(jì)的協(xié)議昨悼。在因特網(wǎng)中跃洛,它是能使連接到網(wǎng)上的所有計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)相互通信的一套規(guī)則,規(guī)定了計(jì)算機(jī)在因特網(wǎng)上進(jìn)行通信時(shí)應(yīng)當(dāng)遵守的規(guī)則葱蝗。
局域網(wǎng)IP和公網(wǎng)IP是不同的细燎,位于同一個(gè)局域網(wǎng)IP的用戶可以進(jìn)行信息交互,而位于不同局域網(wǎng)IP的用戶只能通過(guò)申請(qǐng)公網(wǎng)IP進(jìn)行信息交互悼凑。127.0.0.1為本機(jī)IP击狮;
域名解析為IP的過(guò)程
通過(guò)瀏覽器緩存,系統(tǒng)緩存,路由器緩存,ISP DNS緩存捺萌,向根域名服務(wù)器查找域名對(duì)應(yīng)IP等各種方式尋找解析IP膘茎。這里要提及DNS酷誓,DNS是因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù)盐数,能夠使用戶更方便的訪問(wèn)互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串玫氢。通過(guò)主機(jī)名,最終得到該主機(jī)名對(duì)應(yīng)的IP地址的過(guò)程叫做域名解析(或主機(jī)名解析)
因此通過(guò)8.8.8.8(google提供的DNS服務(wù)器)或者114.114.114.114(國(guó)內(nèi)一個(gè)DNS服務(wù)商提供的服務(wù)器)可以找到域名與IP的相關(guān)記錄攻旦。DNS劫持就是使域名對(duì)應(yīng)的不再是原本應(yīng)有的IP
3.服務(wù)器處理響應(yīng)請(qǐng)求
服務(wù)器是安裝了操作系統(tǒng)的機(jī)器生逸,通過(guò)服務(wù)器包含的web serve來(lái)處理相關(guān)請(qǐng)求,常見(jiàn)的web serve包括Apache/Nginx/lls/Lighttpd. web serve服務(wù)器接受用戶請(qǐng)求交給網(wǎng)站代碼槽袄,或者接受請(qǐng)求反向代理到其他web serve。服務(wù)器響應(yīng)請(qǐng)求截酷,將數(shù)據(jù)返回給瀏覽器狮鸭。數(shù)據(jù)可能是根據(jù)HTML協(xié)議組織的網(wǎng)頁(yè),里面包含頁(yè)面的布局灾部、文字惯退。數(shù)據(jù)也可能是圖片、腳本程序等∷洌現(xiàn)在你可以用瀏覽器的“查看源代碼”功能懊蒸,感受一下服務(wù)器返回的是什么。如果資源路徑指示的資源不存在舌仍,服務(wù)器就會(huì)返回著名的404錯(cuò)誤。如國(guó)返回的是一個(gè)頁(yè)面铸豁,根據(jù)頁(yè)面里一些外鏈的URL,例如圖片的地址节芥,按照上述過(guò)程再次獲取。
4.網(wǎng)站處理流程
模型-視圖-控制器 (MVC).MVC是一個(gè)設(shè)計(jì)模式蚣驼,它強(qiáng)制性的使應(yīng)用程序的輸入拧晕、處理和輸出分開(kāi)。使用MVC應(yīng)用程序被分成三個(gè)核心部件:
模型(M)输玷、視圖(V)靡馁、控制器(C),它們各自處理自己的任務(wù)赔嚎。
視圖是用戶看到并與之交互的界面胧弛。對(duì)老式的Web應(yīng)用程序來(lái)說(shuō),視圖就是由HTML元素組成的界面损晤,在新式的Web應(yīng)用程序中红竭,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮茵宪,它們包括Adobe Flash和象XHTML稀火,XML/XSL,WML等一些標(biāo)識(shí)語(yǔ)言和Web services凰狞。如何處理應(yīng)用程序的界面變得越來(lái)越有挑戰(zhàn)性服球。MVC一個(gè)大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒(méi)有真正的處理發(fā)生斩熊,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲(chǔ)的還是一個(gè)雇員列表粉渠,作為視圖來(lái)講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式霸株。
模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則去件。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù).被模型返回的數(shù)據(jù)是中立的尤溜,就是說(shuō)模型與數(shù)據(jù)格式無(wú)關(guān)宫莱,這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用授霸,所以減少了代碼的重復(fù)性碘耳。
控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當(dāng)單擊Web頁(yè)面中的超鏈接和發(fā)送HTML表單時(shí)藏畅,控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求绞蹦,然后確定用哪個(gè)視圖來(lái)顯示模型處理返回的數(shù)據(jù)榜旦。
現(xiàn)在我們總結(jié)MVC的處理過(guò)程溅呢,首先控制器接收用戶的請(qǐng)求猿挚,并決定應(yīng)該調(diào)用哪個(gè)模型來(lái)進(jìn)行處理驶鹉,然后模型用業(yè)務(wù)邏輯來(lái)處理用戶的請(qǐng)求并返回?cái)?shù)據(jù),最后控制器用相應(yīng)的視圖格式化模型返回的數(shù)據(jù)办绝,并通過(guò)表示層呈現(xiàn)給用戶姚淆。
如下圖
4.瀏覽器的處理
開(kāi)始根據(jù)資源的類型腌逢,將資源組織成屏幕上顯示的圖像,這個(gè)過(guò)程叫渲染搏讶,網(wǎng)頁(yè)渲染是瀏覽器最復(fù)雜窍蓝、最核心的功能。對(duì)加載到的資源(HTML吓笙、JS面睛、CSS等)進(jìn)行語(yǔ)法解析,建議相應(yīng)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(比如HTML的DOM樹(shù)叁鉴,JS的(對(duì)象)屬性表幌墓,CSS的樣式規(guī)則等等)渲染,構(gòu)建渲染樹(shù)常侣,對(duì)各個(gè)元素進(jìn)行位置計(jì)算胳施、樣式計(jì)算等等。
5.繪制網(wǎng)頁(yè)
瀏覽器根據(jù)html和css計(jì)算得到渲染樹(shù)之后,將渲染好的頁(yè)面圖像顯示出來(lái)焦辅,即繪制網(wǎng)頁(yè),并開(kāi)始響應(yīng)用戶的操作剃根。仆抵。
綜上便是從URL到頁(yè)面展現(xiàn)的基本步驟,實(shí)際遠(yuǎn)遠(yuǎn)并沒(méi)有那么簡(jiǎn)單,很多很多的知識(shí)還需要學(xué)習(xí)娱两。