国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

細(xì)說瀏覽器輸入URL后發(fā)生了什么

yeyan1996 / 1739人閱讀

摘要:本文摘要域名解析建立連接發(fā)送請求服務(wù)器處理請求返回響應(yīng)結(jié)果關(guān)閉連接瀏覽器解析瀏覽器布局渲染總結(jié)當(dāng)我們在瀏覽器輸入網(wǎng)址并回車后,一切從這里開始。

本文摘要:
1.DNS域名解析;
2.建立TCP連接;
3.發(fā)送HTTP請求;
4.服務(wù)器處理請求;
5.返回響應(yīng)結(jié)果;
6.關(guān)閉TCP連接;
7.瀏覽器解析HTML;
8.瀏覽器布局渲染;
總結(jié)

當(dāng)我們在瀏覽器輸入網(wǎng)址并回車后,一切從這里開始。

一、DNS域名解析

我們在瀏覽器輸入網(wǎng)址,其實(shí)就是要向服務(wù)器請求我們想要的頁面內(nèi)容,所有瀏覽器首先要確認(rèn)的是域名所對應(yīng)的服務(wù)器在哪里。將域名解析成對應(yīng)的服務(wù)器IP地址這項(xiàng)工作,是由DNS服務(wù)器來完成的。

客戶端收到你輸入的域名地址后,它首先去找本地的hosts文件,檢查在該文件中是否有相應(yīng)的域名、IP對應(yīng)關(guān)系,如果有,則向其IP地址發(fā)送請求,如果沒有,再去找DNS服務(wù)器。一般用戶很少去編輯修改hosts文件。

瀏覽器客戶端向本地DNS服務(wù)器發(fā)送一個含有域名www.cnblogs.com的DNS查詢報(bào)文。本地DNS服務(wù)器把查詢報(bào)文轉(zhuǎn)發(fā)到根DNS服務(wù)器,根DNS服務(wù)器注意到其com后綴,于是向本地DNS服務(wù)器返回comDNS服務(wù)器的IP地址。本地DNS服務(wù)器再次向comDNS服務(wù)器發(fā)送查詢請求,comDNS服務(wù)器注意到其www.cnblogs.com后綴并用負(fù)責(zé)該域名的權(quán)威DNS服務(wù)器的IP地址作為回應(yīng)。最后,本地DNS服務(wù)器將含有www.cnblogs.com的IP地址的響應(yīng)報(bào)文發(fā)送給客戶端。

從客戶端到本地服務(wù)器屬于遞歸查詢,而DNS服務(wù)器之間的交互屬于迭代查詢。

正常情況下,本地DNS服務(wù)器的緩存中已有comDNS服務(wù)器的地址,因此請求根域名服務(wù)器這一步不是必需的。
二、建立TCP鏈接

費(fèi)了一頓周折終于拿到服務(wù)器IP了,下一步自然就是鏈接到該服務(wù)器。對于客戶端與服務(wù)器的TCP鏈接,必然要說的就是『三次握手』。

三次握手

客戶端發(fā)送一個帶有SYN標(biāo)志的數(shù)據(jù)包給服務(wù)端,服務(wù)端收到后,回傳一個帶有SYN/ACK標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息,最后客戶端再回傳一個帶ACK標(biāo)志的數(shù)據(jù)包,代表握手結(jié)束,連接成功。

上圖也可以這么理解:

客戶端:“你好,在家不,有你快遞。”

服務(wù)端:“在的,送來就行。”

客戶端:“好嘞。”

三、發(fā)送HTTP請求

與服務(wù)器建立了連接后,就可以向服務(wù)器發(fā)起請求了。這里我們先看下請求報(bào)文的結(jié)構(gòu)(如下圖):

請求報(bào)文
在瀏覽器中查看報(bào)文首部(以google瀏覽器為例):

請求行包括請求方法、URI、HTTP版本。首部字段傳遞重要信息,包括請求首部字段、通用首部字段和實(shí)體首部字段。我們可以從報(bào)文中看到發(fā)出的請求的具體信息。具體每個首部字段的作用,這里不做過多闡述。

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

服務(wù)器端收到請求后的由web服務(wù)器(準(zhǔn)確說應(yīng)該是http服務(wù)器)處理請求,諸如Apache、Ngnix、IIS等。web服務(wù)器解析用戶請求,知道了需要調(diào)度哪些資源文件,再通過相應(yīng)的這些資源文件處理用戶請求和參數(shù),并調(diào)用數(shù)據(jù)庫信息,最后將結(jié)果通過web服務(wù)器返回給瀏覽器客戶端。


服務(wù)器處理請求

五、返回響應(yīng)結(jié)果

在HTTP里,有請求就會有響應(yīng),哪怕是錯誤信息。這里我們同樣看下響應(yīng)報(bào)文的組成結(jié)構(gòu):

響應(yīng)報(bào)文

在響應(yīng)結(jié)果中都會有個一個HTTP狀態(tài)碼,比如我們熟知的200、301、404、500等。通過這個狀態(tài)碼我們可以知道服務(wù)器端的處理是否正常,并能了解具體的錯誤。

狀態(tài)碼由3位數(shù)字和原因短語組成。根據(jù)首位數(shù)字,狀態(tài)碼可以分為五類:

狀態(tài)碼類別

六、關(guān)閉TCP連接

為了避免服務(wù)器與客戶端雙方的資源占用和損耗,當(dāng)雙方?jīng)]有請求或響應(yīng)傳遞時,任意一方都可以發(fā)起關(guān)閉請求。與創(chuàng)建TCP連接的3次握手類似,關(guān)閉TCP連接,需要4次握手。


4次握手
上圖可以這么理解:

客戶端:“兄弟,我這邊沒數(shù)據(jù)要傳了,咱關(guān)閉連接吧。”

服務(wù)端:“收到,我看看我這邊有木有數(shù)據(jù)了。”

服務(wù)端:“兄弟,我這邊也沒數(shù)據(jù)要傳你了,咱可以關(guān)閉連接了。”

客戶端:“好嘞。”

七、瀏覽器解析HTML

準(zhǔn)確地說,瀏覽器需要加載解析的不僅僅是HTML,還包括CSS、JS。以及還要加載圖片、視頻等其他媒體資源。

瀏覽器通過解析HTML,生成DOM樹,解析CSS,生成CSS規(guī)則樹,然后通過DOM樹和CSS規(guī)則樹生成渲染樹。渲染樹與DOM樹不同,渲染樹中并沒有head、display為none等不必顯示的節(jié)點(diǎn)。

要注意的是,瀏覽器的解析過程并非是串連進(jìn)行的,比如在解析CSS的同時,可以繼續(xù)加載解析HTML,但在解析執(zhí)行JS腳本時,會停止解析后續(xù)HTML,這就會出現(xiàn)阻塞問題,關(guān)于JS阻塞相關(guān)問題,這里不過多闡述,后面會多帶帶開篇講解。

八、瀏覽器布局渲染

根據(jù)渲染樹布局,計(jì)算CSS樣式,即每個節(jié)點(diǎn)在頁面中的大小和位置等幾何信息。HTML默認(rèn)是流式布局的,CSS和js會打破這種布局,改變DOM的外觀樣式以及大小和位置。這時就要提到兩個重要概念:replaint和reflow。

replaint:屏幕的一部分重畫,不影響整體布局,比如某個CSS的背景色變了,但元素的幾何尺寸和位置不變。

reflow: 意味著元件的幾何尺寸變了,我們需要重新驗(yàn)證并計(jì)算渲染樹。是渲染樹的一部分或全部發(fā)生了變化。這就是Reflow,或是Layout。
所以我們應(yīng)該盡量減少reflow和replaint,我想這也是為什么現(xiàn)在很少有用table布局的原因之一。

最后瀏覽器繪制各個節(jié)點(diǎn),將頁面展示給用戶。

總結(jié)

本文系統(tǒng)地講述從瀏覽器從輸入域名到最終頁面展示的整體流程。篇幅所限,本文的每一步講述其實(shí)并不全面,所以后面我會多帶帶就域名解析、HTTP請求/響應(yīng)、瀏覽器的解析、渲染等內(nèi)容多帶帶開篇講解,感興趣的朋友也可以關(guān)注我的個人博客 。

更多技術(shù)分享,歡迎關(guān)注『網(wǎng)站建設(shè)運(yùn)維百科』

參考:

http://igoro.com/archive/what...

http://taligarsiel.com/Projec...

https://www.zhihu.com/questio...

圖片制作工具:Axure、PS、 Ulead GIF Animator、 ProcessOn

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44488.html

相關(guān)文章

  • 細(xì)說覽器輸入URL發(fā)生什么

    摘要:本文摘要域名解析建立連接發(fā)送請求服務(wù)器處理請求返回響應(yīng)結(jié)果關(guān)閉連接瀏覽器解析瀏覽器布局渲染總結(jié)當(dāng)我們在瀏覽器輸入網(wǎng)址并回車后,一切從這里開始。 本文摘要:1.DNS域名解析;2.建立TCP連接;3.發(fā)送HTTP請求;4.服務(wù)器處理請求;5.返回響應(yīng)結(jié)果;6.關(guān)閉TCP連接;7.瀏覽器解析HTML;8.瀏覽器布局渲染;總結(jié) showImg(https://segmentfault.com...

    MonoLog 評論0 收藏0
  • 細(xì)說覽器輸入URL發(fā)生什么

    摘要:本文摘要域名解析建立連接發(fā)送請求服務(wù)器處理請求返回響應(yīng)結(jié)果關(guān)閉連接瀏覽器解析瀏覽器布局渲染總結(jié)當(dāng)我們在瀏覽器輸入網(wǎng)址并回車后,一切從這里開始。 本文摘要:1.DNS域名解析;2.建立TCP連接;3.發(fā)送HTTP請求;4.服務(wù)器處理請求;5.返回響應(yīng)結(jié)果;6.關(guān)閉TCP連接;7.瀏覽器解析HTML;8.瀏覽器布局渲染;總結(jié) showImg(https://segmentfault.com...

    Ocean 評論0 收藏0
  • 細(xì)說覽器輸入URL發(fā)生什么

    摘要:本文摘要域名解析建立連接發(fā)送請求服務(wù)器處理請求返回響應(yīng)結(jié)果關(guān)閉連接瀏覽器解析瀏覽器布局渲染總結(jié)當(dāng)我們在瀏覽器輸入網(wǎng)址并回車后,一切從這里開始。 本文摘要:1.DNS域名解析;2.建立TCP連接;3.發(fā)送HTTP請求;4.服務(wù)器處理請求;5.返回響應(yīng)結(jié)果;6.關(guān)閉TCP連接;7.瀏覽器解析HTML;8.瀏覽器布局渲染;總結(jié) showImg(https://segmentfault.com...

    liuhh 評論0 收藏0
  • 細(xì)說覽器輸入URL發(fā)生什么

    摘要:本文摘要域名解析建立連接發(fā)送請求服務(wù)器處理請求返回響應(yīng)結(jié)果關(guān)閉連接瀏覽器解析瀏覽器布局渲染總結(jié)當(dāng)我們在瀏覽器輸入網(wǎng)址并回車后,一切從這里開始。 本文摘要:1.DNS域名解析;2.建立TCP連接;3.發(fā)送HTTP請求;4.服務(wù)器處理請求;5.返回響應(yīng)結(jié)果;6.關(guān)閉TCP連接;7.瀏覽器解析HTML;8.瀏覽器布局渲染;總結(jié) showImg(https://segmentfault.com...

    focusj 評論0 收藏0
  • 細(xì)說 jQuery Ajax操作篇(二) - 數(shù)據(jù)傳遞

    摘要:在前一篇介紹的數(shù)據(jù)加載中的例子都是從靜態(tài)的文件中取得數(shù)據(jù),而更大的價值在于與后端服務(wù)器進(jìn)行數(shù)據(jù)傳遞,動態(tài)地請求和發(fā)送數(shù)據(jù)。首先用方式請求數(shù)據(jù)方式點(diǎn)擊標(biāo)簽后,當(dāng)前頁面為數(shù)據(jù)請求成功。 在前一篇介紹 jQuery Ajax 的數(shù)據(jù)加載中的例子都是從靜態(tài)的文件中取得數(shù)據(jù),而 Ajax 更大的價值在于與后端服務(wù)器進(jìn)行數(shù)據(jù)傳遞,動態(tài)地請求和發(fā)送數(shù)據(jù)。 請求數(shù)據(jù) 我們可以使用 GET、POST...

    paulli3 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<