經(jīng)典前端面試題:進入一個網(wǎng)頁,發(fā)生了什么?第一章DNS解析

之前我在一家小公司,當前端面試官的時候,我都會問:進入一個網(wǎng)頁,發(fā)生了什么?為什么問呢。就是因為有些人只會寫增刪查改業(yè)務(wù)代碼,不思考算法,不思考底層,不懂得優(yōu)化,這種只能算碼農(nóng),不能算程序猿。雖然說這道面試題,幾乎是必考,但是卻能很好的體現(xiàn)出一個人的基礎(chǔ)如何。

首先,進入一個網(wǎng)頁,發(fā)生了什么?

1、DNS解析
2、HTTP三次握手建立TCP
3、瀏覽器重繪與回流

先說第一個,DNS解析:

DNS( Domain Name System)是“域名系統(tǒng)”的英文縮寫,是一種組織成域?qū)哟谓Y(jié)構(gòu)的計算機和網(wǎng)絡(luò)服務(wù)命名系統(tǒng),它用于TCP/IP網(wǎng)絡(luò),它所提供的服務(wù)是用來將主機名和域名轉(zhuǎn)換為IP地址(IPV4)的工作。DNS就是這樣的一位“翻譯官”,在TCP/IP協(xié)議的第四層,基于UDP,所以也沒有TCP三次握手,SNMP也一樣。
還是拿域名www.baidu.com舉例子,一個域名“www.baidu.com.”由4部分組成(最后的.可以去掉):
第1部分“.”代表根服務(wù)器、
第2部分“.com.”代表頂級域名服務(wù)器、比如edu教育機構(gòu),com商業(yè)組織,gov政府機構(gòu)
第3部分“baidu.com.”代表域名所有者服務(wù)器。
第4部分“www.baidu.com.”代表主機域名。

域名解析

域名體系是一個分級體系,最高級是根服務(wù)器,最低級是本地服務(wù)器(如114.114.114.114),域名查詢需要逐級遞歸查詢。

所以是,用戶在瀏覽器輸入URL地址,請求,會先在本地DNS發(fā)送查詢請求,本地地址向根服務(wù)器查詢.com的地址,再向.com服務(wù)器查詢baidu.com的地址,再向baidu.com服務(wù)器查詢www.baidu.com的地址,再返回給瀏覽器www.baidu.com的地址,其中包含有該主機名對應的IP地址,一旦該瀏覽器收到來自DNS的IP地址,就可以向該IP地址定位的HTTP服務(wù)器發(fā)起TCP連接這樣瀏覽器就可以打開百度了。

深入域名解析

這里就借鑒百度的了,百度的講的比我詳細多了。
查找域名對應的 IP 地址的具體過程
1、瀏覽器搜索自己的 DNS 緩存(瀏覽器維護一張域名與 IP 地址的對應表);如果沒有命中,進入下一步;
2、搜索操作系統(tǒng)中的 DNS 緩存;如果沒有命中,進入下一步;
3、搜索操作系統(tǒng)的 hosts 文件( Windows 環(huán)境下,維護一張域名與 IP 地址的對應表);如果沒有命中,進入下一步;

操作系統(tǒng)將域名發(fā)送至 LDNS (本地區(qū)域名服務(wù)器),LDNS 查詢自己的 DNS 緩存(一般命中率在 80% 左右),查找成功則返回結(jié)果,失敗則發(fā)起一個迭代 DNS 解析請求:
LDNS向 Root Name Server(根域名服務(wù)器,如com、net、im 等的頂級域名服務(wù)器的地址)發(fā)起請求,此處,Root Name Server 返回 im 域的頂級域名服務(wù)器的地址;
LDNS 向 im 域的頂級域名服務(wù)器發(fā)起請求,返回 juejin.im 域名服務(wù)器地址;
LDNS 向 juejin.im 域名服務(wù)器發(fā)起請求,得到 juejin.im 的 IP 地址;
LDNS 將得到的 IP 地址返回給操作系統(tǒng),同時自己也將 IP 地址緩存起來;操作系統(tǒng)將 IP 地址返回給瀏覽器,同時自己也將 IP 地址緩存起來。

DNS Prefetch

即 DNS 預獲取,是前端優(yōu)化的一部分。一般來說,在前端優(yōu)化中與 DNS 有關(guān)的有兩點:
減少 DNS 的請求次數(shù)
進行 DNS 預獲取
典型的一次 DNS 解析需要耗費 20-120 毫秒,減少DNS解析時間和次數(shù)是個很好的優(yōu)化方式。DNS Prefetching 是讓具有此屬性的域名不需要用戶點擊鏈接就在后臺解析,而域名解析和內(nèi)容載入是串行的網(wǎng)絡(luò)操作,所以這個方式能減少用戶的等待時間,提升用戶體驗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容