從URL輸入到頁面展示的過程:
一 .基本概念介紹
(1)什么是URL
URL是統(tǒng)一定位資源符泞当,英文全稱為Universal Resource Locator婚惫,是因特網(wǎng)上標(biāo)準(zhǔn)的地址霞幅。
URL有四種傳輸協(xié)議
1.http——超文本傳輸協(xié)議
2.ftp——文件傳輸協(xié)議
3.file——主要用于訪問本地計算機(jī)中的文件
4.https——數(shù)據(jù)經(jīng)過加密的超文本傳輸協(xié)議
注:開頭只有//而不是協(xié)議续担,代表該URL的協(xié)議與當(dāng)前頁面一致知市。
(2)什么是IP與IP地址
IP是在TCP/IP協(xié)議中網(wǎng)絡(luò)層的主要協(xié)議傻盟,任務(wù)是僅僅根據(jù)源主機(jī)和目的主機(jī)的地址傳送數(shù)據(jù);
為此目的,IP定義了尋址方法和數(shù)據(jù)報的封裝結(jié)構(gòu)嫂丙。
IP是分配給網(wǎng)絡(luò)上使用網(wǎng)際協(xié)議(英語:Internet Protocol, IP)的設(shè)備的數(shù)字標(biāo)簽娘赴。常見的IP地址分為
IPv4與IPv6兩大類。IP地址相當(dāng)于一臺主機(jī)的門牌號奢入。
IP地址總共有A,B,C,D,E 五類筝闹,其中最常用到的是A類B類和C類,常以32二進(jìn)制組成常以
XXX.XXX.XXX.XXX形式表現(xiàn)腥光,每組XXX代表小于或等于255的10進(jìn)制數(shù)关顷。例如我的電腦的IP地址是
27.151.164.140是一個A類IP地址。
公網(wǎng)IP:是由國際互聯(lián)網(wǎng)分配的唯一的IP地址武福,是個靜態(tài)IP地址议双。
內(nèi)網(wǎng)IP:由路由器建立子網(wǎng)分配IP地址。
(3)什么是DNS
DNS是域名解析服務(wù)捉片,DNS可以將域名映射到對應(yīng)的IP地址平痰。
IP地址的記憶較為不方便,于是選用了域名伍纫,可以更好的記憶宗雇,從而通過域名訪問網(wǎng)站。
域名解析的流程:
1.瀏覽器緩存 – 瀏覽器會緩存DNS記錄一段時間
2.系統(tǒng)緩存 - 從 Hosts 文件查找是否有該域名和對應(yīng) IP莹规。
3.路由器緩存 – 一般路由器也會緩存域名信息赔蒲。
4.ISP DNS 緩存 – 比如到電信的 DNS 上查找緩存。如果都沒有找到,則向根域名服務(wù)器查找
域名對應(yīng) IP舞虱,根域名服務(wù)器把請求轉(zhuǎn)發(fā)到下一級欢际,直到找到 IP。
dns劫持:將系統(tǒng)緩存host文件里的域名對應(yīng)的IP改成其他IP矾兜,致使用戶訪問該域名是是訪問到其他的
網(wǎng)站损趋。
(4)服務(wù)器
服務(wù)器是一臺安裝系統(tǒng)的機(jī)器,常見的系統(tǒng)如Linux椅寺、windows server 2012浑槽。
常見的web服務(wù)器有Apache、Nginx配并、IIS括荡、Lighttpd等。
二 .URL輸入到頁面展現(xiàn)的具體流程
1.在瀏覽器里輸入URL
2.域名解析
把域名解析成IP溉旋。域名存在的作用就是方便記憶畸冲。
域名解析的流程:
1.在瀏覽器里找緩存:瀏覽器會緩存DNS一段時間
2.在系統(tǒng)緩存里查找:從 Host文件查找是否有該域名對應(yīng)的IP
3.在路由器緩存里查找:一般的路由器也會緩存域名
4.在ISPDNS緩存里查找
5.在根域名服務(wù)器查找域名對應(yīng)的IP
3.服務(wù)器處理
web server接受用戶的請求,并返回代碼web server 擔(dān)任管控的角色观腊,對于不同用戶發(fā)送的請求邑闲,會結(jié)合配置文件,把不同請求委托給服務(wù)器上處理對應(yīng)請求的程序進(jìn)行處理(例如CGI腳本梧油,JSP腳本苫耸,servlets,ASP腳本儡陨,服務(wù)器端JavaScript褪子,或者一些其它的服務(wù)器端技術(shù)等),然后返回后臺程序處理產(chǎn)生的結(jié)果作為響應(yīng)骗村。
4.網(wǎng)站處理流程
網(wǎng)站處理嫌褪,就是實際后臺處理的工作。后臺開發(fā)現(xiàn)在有很多框架胚股,但大部分都還是按照MVC設(shè)計模式進(jìn)行搭建的笼痛。MVC是一個設(shè)計模式,將應(yīng)用程序分成三個核心部件:模型(model)-- 視圖(view)--控制器(controller)琅拌,它們各自處理自己的任務(wù)缨伊,實現(xiàn)輸入、處理和輸出的分離进宝。
1.視圖(view)
視圖是用戶看到并與之交互的界面刻坊。這是前端工作的主力部分。
2.模型(model)
模型是將實際開發(fā)中的業(yè)務(wù)規(guī)則和所涉及的數(shù)據(jù)格式模型化党晋,應(yīng)用于模型的代碼只需寫 一次就可以被多個視圖重用紧唱。在MVC的三個部件中活尊,模型擁有最多的處理任務(wù)。一個模型 能為多個視圖提供數(shù)據(jù)漏益。
3.控制器(controller)
控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。Controller處于管理角色深胳,從視圖接收請求并決定調(diào)用哪個模型構(gòu)件去處理請求绰疤,然后再確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)。
5.瀏覽器處理
通過后臺處理返回的html字符串結(jié)果會被瀏覽器讀取解析舞终,對應(yīng)就是html頁面加載轻庆、解析、渲染的工作敛劝。1余爆、加載瀏覽器對一個html頁面的加載順序是從上而下的,并在加載過程并行進(jìn)行解析渲染處理夸盟。在這個過程中遇到link標(biāo)簽蛾方、image標(biāo)簽、script標(biāo)簽時上陕,瀏覽器會再次向服務(wù)器發(fā)送請求獲取css文件桩砰、圖片資源、js文件释簿,并執(zhí)行js代碼亚隅,同步進(jìn)行加載解析。2庶溶、解析煮纵、渲染解析的過程,其實就是生成解析樹偏螺,即dom樹行疏。dom樹是由dom元素及屬性節(jié)點組成,加上css解析的樣式對象和js解析后的動作實現(xiàn)砖茸。而渲染隘擎,就是將DOM樹進(jìn)行可視化表示。下一步就來到了繪制網(wǎng)頁的工作階段凉夯。
6.繪制網(wǎng)頁
瀏覽器通過上面步驟計算得到渲染樹货葬,是DOM樹的可視化表示,構(gòu)建渲染樹使頁面以正確的順序繪制出來劲够,遵循一定的渲染規(guī)則震桶,經(jīng)過一系列的渲染工作,實現(xiàn)網(wǎng)站頁面的繪制征绎,由此最終完成了頁面展示蹲姐。