? ????? 如題捷雕,本文將介紹一下用戶在瀏覽器里輸入網(wǎng)址到看到一個網(wǎng)站頁面的過程罐脊。
1.瀏覽器輸入URL?
??? 用戶訪問某一個網(wǎng)站時首先需要的就是在瀏覽器輸入對應(yīng)的網(wǎng)址盛泡,這里涉及到一些概念辜纲。
(1)URL(Uniform / Universal Resource Locator兜粘,承淇福縮寫為URL)定義:統(tǒng)一資源定位符砸泛,俗稱為網(wǎng)頁地址(網(wǎng)址),如同在網(wǎng)絡(luò)上的門牌蛆封,用于定義互聯(lián)網(wǎng)上的資源唇礁,這個資源可能是一個圖片,可能是一個文件惨篱,通過URL才可以找到盏筐。
(2)對應(yīng)的協(xié)議:http https ftp file
??????? http://? 超文本傳輸協(xié)議資源,獲取網(wǎng)絡(luò)資源砸讳,明文傳輸琢融。
? ? ? ? https://? 安全加密之后的超文本傳輸協(xié)議界牡。
? ? ? ? file://? 定位本地資源,本地電腦或網(wǎng)上分享的文件漾抬。
? ? ? ? ftp://? 文件傳輸協(xié)議(File Transfer Protocol宿亡,縮寫:FTP)是用于在網(wǎng)絡(luò)上進行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議,使用客戶/服務(wù)器模式纳令。
??????? 另外挽荠,有時我們打開一個網(wǎng)站引入一個類似src="http://code/"沒有前面的[http:]的路徑文件,這個表示當(dāng)前文件URL的協(xié)議和當(dāng)前頁面保持一致平绩。
2.域名解析
??? 概念解釋:對于http://jirengu.com圈匆,瀏覽器實際是不知道jirengu.com到底是什么東西,需要查找jirengu.com網(wǎng)站所在的服務(wù)器IP地址馒过,才能找到目標(biāo)臭脓。
(1)域名?是什么?
? ? ? ? 對于http://jirengu.com:8080/blog腹忽,jirengu.com就是域名来累。http,是協(xié)議窘奏;8080嘹锁,是服務(wù)器上的網(wǎng)絡(luò)端口號;blog着裹,是頁面路徑领猾。
(2)為什么要發(fā)明域名,不用IP骇扇?
??????? 域名語義化摔竿,好記。
(3)IP地址?是什么少孝?
??????? ①每個處于互聯(lián)網(wǎng)的設(shè)備都有IP地址继低,沒有就找不到,形如 192.168.0.1
??????? ②局域網(wǎng)IP和公網(wǎng)IP是有差別的
? ? ? ???? 局域網(wǎng)IP 舉例:辦公室中的同一路由器的WiFi稍走,所有連到這個WiFi的機器都處于同一局域網(wǎng)袁翁,IP就是局域網(wǎng)的IP,同一局域網(wǎng)內(nèi)可以通過這個IP地址訪問到這個局域網(wǎng)內(nèi)的其他機器婿脸。但別人是無法通過這個IP找到你的粱胜,因為這個IP是假的IP,只有在小圈子里可以用狐树。
? ? ? ? ?? 實踐:例如開發(fā)中需要手機界面測試焙压,電腦和手機連到同一WiFi下,電腦有一個IP地址,手機瀏覽器可以通過這個IP地址訪問這個服務(wù)器冗恨。
? ? ? ???? 公網(wǎng)IP是需要申請的答憔,127.0.0.1代表本機IP。
(4)域名解析 流程
??????? ①瀏覽器緩存- 瀏覽器會緩存DNS記錄一段時間
??????? ②系統(tǒng)緩存- 從Hosts文件查找是否有該域名和對應(yīng)IP
??????????? 用處:當(dāng)開發(fā)一個網(wǎng)站時掀抹,文件資源在本地,線上的域名測試心俗,當(dāng)開啟服務(wù)器測試不想找遠(yuǎn)程服務(wù)器的資源傲武,希望找到本地資源時,那就可以把網(wǎng)址對應(yīng)到127.0.0.1城榛,當(dāng)打開html文件時揪利,所有的文件的請求資源都是通過網(wǎng)址找到的本地IP地址,這個IP就是本機地址狠持,相當(dāng)于定位到本機服務(wù)器
??????? ③路由器緩存- 一般路由器也會緩存域名信息
??????? ④ISP DNS緩存- 比如到電信DNS上查找緩存
??????? ⑤如果都沒有找到疟位,則向根域名(鏈接)服務(wù)器查找域名對應(yīng)IP,根域名服務(wù)器把請求轉(zhuǎn)發(fā)到下一級喘垂,直到找到IP甜刻,IP會尋址
??????? ⑥問題:
??????? ●電腦上不了網(wǎng),為什么修改到DNS為8.8.8.8或者114.114.114.114正勒?
???????? 8.8.8.8是谷歌提供的一個服務(wù)器得院,例如baidu.com對應(yīng)的域名找不到時,把電腦的DNS服務(wù)器改為谷歌的服務(wù)器章贞,那時就不會遵循上面的幾部祥绞,會直接通過谷歌的服務(wù)器來逐級找IP地址。
?????? ●什么是DNS劫持鸭限?
? ? ??? 當(dāng)黑客攻擊到某一個節(jié)點蜕径,比如根域名服務(wù)器,把某個網(wǎng)站域名指向的IP改成一個惡意網(wǎng)站IP败京,此時如果你去訪問該網(wǎng)站就會得到一個假網(wǎng)站兜喻。
3.服務(wù)器處理
??? 服務(wù)器定義:是一臺安裝系統(tǒng)的機器,常見的系統(tǒng)如Linux(無圖形界面)喧枷、windows server 2012虹统,系統(tǒng)里安裝的處理請求的應(yīng)用叫Web server。服務(wù)器系統(tǒng)和普通電腦系統(tǒng)是有差別的隧甚。
??? Web服務(wù)器?:常見的Web服務(wù)器有Apache车荔、Nginx,IIS戚扳,Lighttpd
??? Web服務(wù)器接受用戶的Request交給網(wǎng)站代碼忧便,或者接受請求反向代理到其他Web服務(wù)器
? ●Web服務(wù)器實際是個管理的入口,服務(wù)器配置文件,接收不同請求時返回不同的頁面
? ●網(wǎng)站處理流程(如下圖):
??? MVC: 模型(model)——>視圖(view)——>控制器(controller)
? ●流程描述(參上圖):用戶的請求發(fā)送到路由珠增,路由進行匹配超歌,然后交給對應(yīng)的控制器,控制器需要管理蒂教,比如需要查找全部的用戶巍举,那就會找到模型處理,模型再來操作數(shù)據(jù)庫凝垛,控制器調(diào)用模型提供的接口來得到對應(yīng)數(shù)據(jù)懊悯。
?? 視圖則為html的模板,之后把數(shù)據(jù)填到模板里生成html文件梦皮,再展現(xiàn)到瀏覽器界面炭分。
?? 前端就是視圖模塊,以前較為簡單剑肯,現(xiàn)在復(fù)雜程度堪比后端捧毛,包含html、css让网、js以及各種框架等呀忧。
? ●瀏覽器處理:
??? HTML字符串被瀏覽器接收后被一句句讀取解析。
??? 例如解析到<link? href="css.css">標(biāo)簽時寂祥,href對應(yīng)的是css的地址荐虐,它會重新發(fā)請求得到這個css地址;例如解析到script標(biāo)簽后發(fā)送請求獲取js丸凭,并執(zhí)行代碼福扬;例如解析到img標(biāo)簽后發(fā)送請求獲取圖片資源。
??? 瀏覽器得到html時惜犀,會再次請求一遍铛碑,所以審查元素時會看到很多請求。
??? 獲取到所有資源之后虽界,瀏覽器會根據(jù)HTML和CSS得到渲染樹汽烦,繪制到屏幕,JS會被執(zhí)行
??? 本博客版權(quán)歸饑人谷_海瀚和饑人谷所有莉御,轉(zhuǎn)載需說明來源