摘要:域名解析就是利用解析器得到對(duì)應(yīng)過(guò)程,解析器會(huì)向域名服務(wù)器進(jìn)行查詢處理。當(dāng)請(qǐng)求結(jié)束,需要經(jīng)厲連接終止協(xié)議四次揮手。
用戶輸入url
當(dāng)用戶輸入url,操作系統(tǒng)會(huì)將輸入事件傳遞到瀏覽器中,在這過(guò)程中,瀏覽器可能會(huì)做一些預(yù)處理,比如 Chrome 會(huì)根據(jù)歷史統(tǒng)計(jì)來(lái)預(yù)估所輸入字符對(duì)應(yīng)的網(wǎng)站,例如輸入goog,根據(jù)之前的歷史發(fā)現(xiàn) 90% 的概率會(huì)訪問(wèn)「www.google.com 」,因此就會(huì)在輸入回車前就馬上開(kāi)始建立 TCP 鏈接甚至渲染了。
接著是輸入url之后,點(diǎn)擊回車,這時(shí)瀏覽器會(huì)對(duì) URL 進(jìn)行檢查,首先判斷協(xié)議,如果是 http 就按照 Web 來(lái)處理,另外還會(huì)對(duì)這個(gè) URL 進(jìn)行安全檢查
安全檢查完成之后,在瀏覽器內(nèi)核中會(huì)先查看緩存,然后設(shè)置 UA 等 HTTP 信息,接著調(diào)用不同平臺(tái)下網(wǎng)絡(luò)請(qǐng)求的方法。
注意:
瀏覽器和瀏覽器內(nèi)核是不同的概念,瀏覽器指的是 Chrome、Firefox,而瀏覽器內(nèi)核則是 Blink、Gecko,瀏覽器內(nèi)核只負(fù)責(zé)渲染,GUI 及網(wǎng)絡(luò)連接等跨平臺(tái)工作則是瀏覽器實(shí)現(xiàn)的
通過(guò) DNS 查詢 IP;
通過(guò) Socket 發(fā)送數(shù)據(jù)
DNS,英文是Domain Name System,中文叫域名系統(tǒng),是Internet的一項(xiàng)服務(wù),他將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù)
假設(shè)用戶在瀏覽器中輸入的是www.google.com,大概過(guò)程:
如果輸入的是域名,則需要進(jìn)行dns查詢,將域名解析成ip;
進(jìn)行DNS查詢的主機(jī)或軟件叫做DNS解析器,用戶使用的工作站或電腦都屬于解析器。域名解析就是利用DNS解析器得到對(duì)應(yīng)IP過(guò)程,解析器會(huì)向域名服務(wù)器進(jìn)行查詢處理。
主要過(guò)程如下:
從瀏覽器緩存中查找域名www.google.com的IP地址
在瀏覽器緩存中沒(méi)找到,就在操作系統(tǒng)緩存中查找,這一步中也會(huì)查找本機(jī)的hosts看看有沒(méi)有對(duì)應(yīng)的域名映射(當(dāng)然已經(jīng)緩存在系統(tǒng)DNS緩存中了)
在系統(tǒng)中也沒(méi)有的話,就到你的路由器來(lái)查找,因?yàn)槁酚善饕话阋矔?huì)有自己的DNS緩存
如果以上都沒(méi)有找到,則繼續(xù)往下向dns域名服務(wù)器查詢
用戶電腦的解析器向LDNS(也就是Local DNS,互聯(lián)網(wǎng)服務(wù)提供商ISP),發(fā)起域名解析請(qǐng)求,查詢www.google.com的IP地址,這是一個(gè)遞歸查找過(guò)程
在緩存沒(méi)有命中的情況下,LDNS向根域名服務(wù)器.查詢www.google.com的IP地址,LDNS的查詢過(guò)程是一個(gè)迭代查詢的過(guò)程
根告訴LDNS,我不知道www.google.com對(duì)應(yīng)的IP,但是我知道你可以問(wèn)com域的授權(quán)服務(wù)器,這個(gè)域歸他管
LDNS向com的授權(quán)服務(wù)器問(wèn)www.google.com對(duì)應(yīng)的IP地址
com告訴LDNS,我不知道www.google.com對(duì)應(yīng)的IP,但是我知道你可以問(wèn)google.com域的授權(quán)服務(wù)器,這個(gè)域歸他管
LDNS向google.com的授權(quán)服務(wù)器問(wèn)www.google.com對(duì)應(yīng)的IP地址
google.com查詢自己的ZONE文件(也稱區(qū)域文件記錄),找到了www.google.com對(duì)應(yīng)的IP地址,返回給LDNS
LDNS本地緩存一份記錄,把結(jié)果返回給用戶電腦的解析器
在這之后,用戶電腦的解析器拿到結(jié)果后,緩存在自己操作系統(tǒng)DNS緩存中,同時(shí)返回給瀏覽器,瀏覽器依舊會(huì)緩存一段時(shí)間。
注意,
域名查詢時(shí)有可能是經(jīng)過(guò)了CDN調(diào)度器的(如果有cdn存儲(chǔ)功能的話)
而且,需要知道dns解析是很耗時(shí)的,因此如果解析域名過(guò)多,會(huì)讓首屏加載變得過(guò)慢,可以考慮dns-prefetch優(yōu)化
tcp/ip請(qǐng)求有了 IP 地址,就可以通過(guò) Socket API 來(lái)發(fā)送數(shù)據(jù)了,這時(shí)可以選擇 TCP 或 UDP 協(xié)議。
http本質(zhì)是tcp協(xié)議。
TCP是一種面向有連接的傳輸層協(xié)議。他可以保證兩端(發(fā)送端和接收端)通信主機(jī)之間的通信可達(dá)。他能夠處理在傳輸過(guò)程中丟包、傳輸順序亂掉等異常情況;此外他還能有效利用寬帶,緩解網(wǎng)絡(luò)擁堵。
建立TCP連接一開(kāi)始都要經(jīng)過(guò)三次握手:
第一次握手,請(qǐng)求建立連接,發(fā)送端發(fā)送連接請(qǐng)求報(bào)文
第二次握手,接收端收到發(fā)送端發(fā)過(guò)來(lái)的報(bào)文,可知發(fā)送端現(xiàn)在要建立聯(lián)機(jī)。然后接收端會(huì)向發(fā)送端發(fā)送一個(gè)報(bào)文第三次握手,發(fā)送端收到了發(fā)送過(guò)來(lái)的報(bào)文,需要檢查一下返回的內(nèi)容是否是正確的;若正確的話,發(fā)送端再次發(fā)送確認(rèn)包
在TCP連接建立完成之后就可以發(fā)送HTTP請(qǐng)求了??梢詫?shù)據(jù)發(fā)送給服務(wù)器,并收到返回信息。
當(dāng)請(qǐng)求結(jié)束,需要經(jīng)厲連接終止協(xié)議(四次揮手)。
由于TCP連接是全雙工的,因此每個(gè)方向都必須多帶帶進(jìn)行關(guān)閉。這原則是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)FIN來(lái)終止這個(gè)方向的連接。收到一個(gè) FIN只意味著這一方向上沒(méi)有數(shù)據(jù)流動(dòng),一個(gè)TCP連接在收到一個(gè)FIN后仍能發(fā)送數(shù)據(jù)。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉,而另一方執(zhí)行被動(dòng)關(guān)閉。
抽象為:
客戶端:我已經(jīng)關(guān)閉了向你那邊的主動(dòng)通道了,只能被動(dòng)接收了
服務(wù)端:收到通道關(guān)閉的信息
服務(wù)端:那我也告訴你,我這邊向你的主動(dòng)通道也關(guān)閉了
客戶端:最后收到數(shù)據(jù),之后雙方無(wú)法通信
注意
瀏覽器對(duì)同一個(gè)域名有連接數(shù)限制,大部分是 6,http1.0中往往一個(gè)資源下載就需要對(duì)應(yīng)一個(gè)tcp/ip請(qǐng)求,而像 HTTP 2.0 協(xié)議盡管只使用一個(gè) TCP 連接來(lái)傳輸數(shù)據(jù),但性能反而更好,而且還能實(shí)現(xiàn)請(qǐng)求優(yōu)先級(jí)。
參考文章:
http://fex.baidu.com/blog/201...
https://blog.csdn.net/dojiang...
https://segmentfault.com/a/11...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108667.html
摘要:域名解析就是利用解析器得到對(duì)應(yīng)過(guò)程,解析器會(huì)向域名服務(wù)器進(jìn)行查詢處理。當(dāng)請(qǐng)求結(jié)束,需要經(jīng)厲連接終止協(xié)議四次揮手。 用戶輸入url 當(dāng)用戶輸入url,操作系統(tǒng)會(huì)將輸入事件傳遞到瀏覽器中,在這過(guò)程中,瀏覽器可能會(huì)做一些預(yù)處理,比如 Chrome 會(huì)根據(jù)歷史統(tǒng)計(jì)來(lái)預(yù)估所輸入字符對(duì)應(yīng)的網(wǎng)站,例如輸入goog,根據(jù)之前的歷史發(fā)現(xiàn) 90% 的概率會(huì)訪問(wèn)「www.google.com 」,因此就會(huì)在...
摘要:域名解析就是利用解析器得到對(duì)應(yīng)過(guò)程,解析器會(huì)向域名服務(wù)器進(jìn)行查詢處理。當(dāng)請(qǐng)求結(jié)束,需要經(jīng)厲連接終止協(xié)議四次揮手。 用戶輸入url 當(dāng)用戶輸入url,操作系統(tǒng)會(huì)將輸入事件傳遞到瀏覽器中,在這過(guò)程中,瀏覽器可能會(huì)做一些預(yù)處理,比如 Chrome 會(huì)根據(jù)歷史統(tǒng)計(jì)來(lái)預(yù)估所輸入字符對(duì)應(yīng)的網(wǎng)站,例如輸入goog,根據(jù)之前的歷史發(fā)現(xiàn) 90% 的概率會(huì)訪問(wèn)「www.google.com 」,因此就會(huì)在...
摘要:此時(shí)樹(shù),樹(shù)建好,并渲染完成異步請(qǐng)求開(kāi)始若有斷開(kāi)每個(gè)長(zhǎng)連接都會(huì)有一定時(shí)限,當(dāng)請(qǐng)求完成之后,斷開(kāi)連接上面就是整個(gè)請(qǐng)求淘寶頁(yè)面到所有數(shù)據(jù)同步異步接收完成并渲染的整個(gè)過(guò)程。 地址欄輸入U(xiǎn)RL之后到底發(fā)生了哪些事情? 這個(gè)問(wèn)題應(yīng)該是前端面試中被問(wèn)概率較大的知識(shí)點(diǎn),綜合考察了面試者對(duì)于瀏覽器,計(jì)算機(jī)網(wǎng)絡(luò),HTTP協(xié)議,服務(wù)器等的基礎(chǔ)。本人學(xué)生黨一枚,近期找工作的過(guò)程中也被問(wèn)了兩次,之前回答都是參考...
摘要:此時(shí)樹(shù),樹(shù)建好,并渲染完成異步請(qǐng)求開(kāi)始若有斷開(kāi)每個(gè)長(zhǎng)連接都會(huì)有一定時(shí)限,當(dāng)請(qǐng)求完成之后,斷開(kāi)連接上面就是整個(gè)請(qǐng)求淘寶頁(yè)面到所有數(shù)據(jù)同步異步接收完成并渲染的整個(gè)過(guò)程。 地址欄輸入U(xiǎn)RL之后到底發(fā)生了哪些事情? 這個(gè)問(wèn)題應(yīng)該是前端面試中被問(wèn)概率較大的知識(shí)點(diǎn),綜合考察了面試者對(duì)于瀏覽器,計(jì)算機(jī)網(wǎng)絡(luò),HTTP協(xié)議,服務(wù)器等的基礎(chǔ)。本人學(xué)生黨一枚,近期找工作的過(guò)程中也被問(wèn)了兩次,之前回答都是參考...
閱讀 2057·2019-08-30 15:52
閱讀 2449·2019-08-29 18:37
閱讀 802·2019-08-29 12:33
閱讀 2849·2019-08-29 11:04
閱讀 1542·2019-08-27 10:57
閱讀 2102·2019-08-26 13:38
閱讀 2770·2019-08-26 12:25
閱讀 2458·2019-08-26 12:23