解析階段詳細(xì)流程說明
步驟 | 說明 |
---|---|
① | 瀏覽器輸入:http://www.baidu.com |
② | 查找瀏覽器自身 DNS 緩存:chrome://net-internals/#dns |
③ | Windows 系統(tǒng):查找系統(tǒng) hosts 文件、Linux 系統(tǒng):查找 /etc/hosts 文件 |
④ | 瀏覽器就會(huì)發(fā)起一個(gè) DNS 系統(tǒng)調(diào)用(向本地域名服務(wù)器發(fā)起域名解析請(qǐng)求) |
⑤ | 本地域名服務(wù)器 LDNS 替我們的瀏覽器發(fā)起 迭代 DNS 解析請(qǐng)求
|
⑥ | 本地域名服務(wù)器把查詢 IP 結(jié)果返回客戶端(瀏覽器) |
查找瀏覽器自身 DNS 緩存介紹
在 chrome 瀏覽器的 url 地址欄輸入如下地址
chrome://net-internals/#dns
訪問頁面結(jié)果
Resolved lP addresses of “www.baidu.com”:[“112.80.248.75”, “112.80.248.76”].
No data on which protocols are supported.
Host resolver cache
主機(jī)解析器緩存(點(diǎn)擊 Clear host cache 即可清除緩存記錄)
將其一對(duì)應(yīng) IP 進(jìn)行直接請(qǐng)求訪問
把 112.80.248.75 在瀏覽器打開:默認(rèn) 80 端口(訪問結(jié)果如下)
Window 系統(tǒng)查找 hosts 文件
打開路徑
C:\Windows\System32\drivers\etc
etc 目錄展示
里面會(huì)有一個(gè) hosts 文件,右擊用筆記本打開。在最下面添加如下格式:IP + 空格 + 網(wǎng)址
例如 127.0.0.1 www.baidu.com,那么你訪問百度的時(shí)候 其實(shí)訪問的是127.0.0.1(自己電腦的)
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1 www.baidu.com
我們使用 Golang 開啟一個(gè) 127.0.0.1 的 server 進(jìn)程,驗(yàn)證
package main
import ("net/http")
func handle(w http.ResponseWriter, req *http.Request) {
w.Write([]byte("hello world"))
}
func main() {
http.HandleFunc("/", handle)
http.ListenAndServe("127.0.0.1:80", nil)
}
因?yàn)槟J(rèn)端口是 80,所以可以省略端口號(hào),直接訪問 127.0.0.1 IP,訪問結(jié)果展示:
因?yàn)槲覀冊(cè)?window 的 hosts 文件中配置了 127.0.0.1 www.baidu.com
,現(xiàn)在我們進(jìn)行驗(yàn)證上述
訪問 www.baidu.com 域名地址(結(jié)果是 百度搜索頁 結(jié)果)
問題原因
為什么不是出現(xiàn)不是 hello world,結(jié)果是 百度搜索頁 呢?
原因:瀏覽器先查找自身的 DNS 緩存,沒有查找到結(jié)果才會(huì)去 Window 下 hosts 文件查找,所以我們先用進(jìn)行刪除 瀏覽器 Dns 緩存。
chrome://net-internals/#dns 中 點(diǎn)擊 clear host cache
(在 # 查找瀏覽器自身 DNS 緩存介紹
提到)
驗(yàn)證 127.0.0.1 www.baidu.com
在 # Window 系統(tǒng)查找 hosts 文件
上節(jié)中進(jìn)行修改 Window 中 hosts 文件,并且 刪除了 chrome 瀏覽器的 host cache 緩存,然后繼續(xù)進(jìn)行嘗試。
訪問 www.baidu.com 域名地址(這次更加直接,都直接無法訪問此網(wǎng)站了)
分析原因:我們雙擊 chrome 瀏覽器的 url 地址,展示結(jié)果如下:
這是因?yàn)?chrome 瀏覽器的 域名安全策略 ?
有些網(wǎng)址 http 協(xié)議和 https 協(xié)議是兩個(gè)服務(wù),有時(shí)候需要訪問 http 地址,但 chrome 會(huì)默認(rèn)轉(zhuǎn)成 https 請(qǐng)求地址,而且會(huì)不停的跳轉(zhuǎn),導(dǎo)致我們?cè)L問不到 http 的網(wǎng)址,非常的煩人。
如何解決?
在 chrome 瀏覽器地址輸入如下地址:
chrome://net-internals/#hsts
在最下面的 Delete domain security policies 中填寫 www.baidu.com 地址,然后點(diǎn)擊 Delete
繼續(xù)訪問 www.baidu.com 域名地址(訪問成功,結(jié)果是 hello world)
繼續(xù)測(cè)試:接下來刪除 hosts 文件中 127.0.0.1 www.baidu.com,然后繼續(xù)訪問 www.baidu.com 域名地址,能夠發(fā)現(xiàn),結(jié)果是 hello world
原因:Chrome 瀏覽器先查找自身的 DNS 緩存,查找到結(jié)果了,不會(huì)再去 Window 下 hosts 文件查找域名和 IP 的映射關(guān)系。
所以我們?nèi)绻麆h除 chrome DNS 緩存,再去訪問 www.baidu.com,先查找自身的 DNS 緩存沒有查找結(jié)果,再去 Window 的 hosts 文件中 沒有查找結(jié)果,接下來查找 ···(后面的小節(jié)會(huì)提到)直到映射百度搜索頁。
本地域名服務(wù)器解析(LDNS)
如果在 hosts 文件中也沒有找到對(duì)應(yīng)的條目,瀏覽器就會(huì)發(fā)起一個(gè) DNS 系統(tǒng)調(diào)用,就會(huì)向本地配置的首選 DNS 服務(wù)器(LDNS一般是電信運(yùn)營(yíng)商提供的,也可以使用像 Google 提供的 DNS 服務(wù)器)發(fā)起域名解析請(qǐng)求(通過的是 UDP 協(xié)議向 DNS 的 53 端口發(fā)起請(qǐng)求,這個(gè)請(qǐng)求是遞歸的請(qǐng)求,也就是運(yùn)營(yíng)商的 DNS 服務(wù)器必須得提供給我們?cè)撚蛎?IP 地址)。
本地電腦網(wǎng)絡(luò)設(shè)置中的 DNS 服務(wù)器,一般是自動(dòng)設(shè)置好的,自動(dòng)設(shè)置的 DNS 地址一般是管理 wifi 路由器的 IP 地址;當(dāng)然也可以手動(dòng)設(shè)置,比如常見的 Google DNS 服務(wù)器 8.8.8.8
本地域名服務(wù)器
在我們的網(wǎng)絡(luò)配置中都會(huì)有“DNS 服務(wù)器地址”這一項(xiàng),這個(gè)地址就用于解決前面所說的如果兩個(gè)過程無法解析時(shí)要怎么辦,操作系統(tǒng)會(huì)把這個(gè)域名發(fā)送給這里設(shè)置的 LDNS,也就是本地區(qū)的域名服務(wù)器。
這個(gè) DNS 通常都提供給你本地互聯(lián)網(wǎng)接入的一個(gè) DNS 解析服務(wù)。例如你是在學(xué)校接入互聯(lián)網(wǎng),那么你的 DNS 服務(wù)器肯定在你的學(xué)校。例如你是在一個(gè)小區(qū)接入互聯(lián)網(wǎng)的,那這個(gè) DNS 就是提供給你接入互聯(lián)網(wǎng)的應(yīng)用提供商,即電信或者聯(lián)通,也就是通常所說的 SPA,那么這個(gè) DNS 通常也會(huì)在你所在城市的某個(gè)角落,通常不會(huì)很遠(yuǎn)。
這個(gè)專門的域名解析服務(wù)器性能都會(huì)很好,它們一般都會(huì)緩存域名解析結(jié)果,當(dāng)然緩存時(shí)間是受域名的失效時(shí)間控制的,一般緩存空間不是影響域名失效的主要因素。大約 80% 的域名解析都到這里就已經(jīng)完成了,所以 LDNS 主要承擔(dān)了域名的解析工作。
運(yùn)營(yíng)商的 DNS 服務(wù)器首先查找自身的緩存,找到對(duì)應(yīng)的條目,且沒有過期,則解析成功。
如何查看本地 DNS 服務(wù)器?
對(duì)于本地 DNS 服務(wù)器地址,Windows 系統(tǒng)使用命令 ipconfig
就可以查看,在 Linux 和 Mac 系統(tǒng)下,直接使用命令 cat /etc/resolv.conf
來查看LDNS服務(wù)地址。
查看配置信息:請(qǐng)點(diǎn)擊電腦所連接 WiFi 的 屬性即可查看網(wǎng)絡(luò)屬性信息(例如如下所示)
SSID: TP-LINK_hh
協(xié)議: Wi-Fi 4 (802.11n)
安全類型: WPA2-個(gè)人
網(wǎng)絡(luò)頻帶: 2.4 GHz
網(wǎng)絡(luò)通道: 6
鏈接速度(接收/傳輸): 300/300 (Mbps)
IPv4 地址: 192.168.1.106
IPv4 DNS 服務(wù)器: 172.16.4.4 210.29.152.xxx(前一個(gè)是本地局域網(wǎng),后一個(gè)是公網(wǎng) IP)
根域名服務(wù)器解析(Root Server)
域名服務(wù)器 4 種不同的類型
根域名服務(wù)器
根域名服務(wù)器是最高層次的域名服務(wù)器。每個(gè)根域名服務(wù)器都知道所有的頂級(jí)域名服務(wù)器的域名及其 IP 地址。因特網(wǎng)上共有 13 個(gè)不同 IP 地址的根域名服務(wù)器。當(dāng)本地域名服務(wù)器向根域名服務(wù)器發(fā)出查詢請(qǐng)求時(shí),路由器就把查詢請(qǐng)求報(bào)文轉(zhuǎn)發(fā)到離這個(gè) DNS 客戶最近的一個(gè)根域名服務(wù)器。這就加快了 DNS 的查詢過程,同時(shí)也更合理地利用了因特網(wǎng)的資源。
頂級(jí)域名服務(wù)器
這些域名服務(wù)器負(fù)責(zé)管理在該頂級(jí)域名服務(wù)器注冊(cè)的所有二級(jí)域名。當(dāng)收到 DNS 查詢請(qǐng)求時(shí)就給出相應(yīng)的回答(可能是最后的結(jié)果,也可能是下一級(jí)權(quán)限域名服務(wù)器的 IP 地址)。
權(quán)限域名服務(wù)器
這些域名服務(wù)器負(fù)責(zé)管理某個(gè)區(qū)的域名。每一個(gè)主機(jī)的域名都必須在某個(gè)權(quán)限域名服務(wù)器處注冊(cè)登記。因此權(quán)限域名服務(wù)器知道其管轄的域名與 IP 地址的映射關(guān)系。另外,權(quán)限域名服務(wù)器還知道其下級(jí)域名服務(wù)器的地址。
本地域名服務(wù)器
本地域名服務(wù)器不屬于上述的域名服務(wù)器的等級(jí)結(jié)構(gòu)。當(dāng)一個(gè)主機(jī)發(fā)出DNS請(qǐng)求報(bào)文時(shí),這個(gè)報(bào)文就首先被送往該主機(jī)的本地域名服務(wù)器。本地域名服務(wù)器起著代理的作用,會(huì)將該報(bào)文轉(zhuǎn)發(fā)到上述的域名服務(wù)器的等級(jí)結(jié)構(gòu)中。本地域名服務(wù)器離用戶較近,一般不超過幾個(gè)路由器的距離,也有可能就在同一個(gè)局域網(wǎng)中。本地域名服務(wù)器的IP地址需要直接配置在需要域名解析的主機(jī)中。
解析流程圖示
查詢根域名服務(wù)器 (Root DNS)
如果LDNS沒有找到對(duì)應(yīng)的條目,則由本地域名服務(wù)器替我們的瀏覽器發(fā)起 迭代 DNS 解析請(qǐng)求
。它首先是會(huì)找根域的 DNS 的 IP 地址(這個(gè) DNS 服務(wù)器都內(nèi)置 13 臺(tái)根域的 DNS 的 IP 地址),找到根域的 DNS 地址,就會(huì)向其發(fā)起請(qǐng)求。
例如:請(qǐng)問 www.baidu.com 這個(gè)域名的 IP 地址是什么?。?/p>
根域名服務(wù)器返回給本地域名服務(wù)器一個(gè)所查詢域的主域名服務(wù)器(gTLD Server)地址,gTLD 是國(guó)際頂級(jí)域名服務(wù)器,如 .com、.cn、.org 等,全球只有 13 臺(tái)左右。
根域發(fā)現(xiàn)這是一個(gè)頂級(jí)域 com 域的一個(gè)域名,于是就告訴本地域名服務(wù)器我不知道這個(gè)域名的 IP 地址,但是我知道 com 域的 IP 地址,讓本地域名服務(wù)器去查找它。
查詢頂級(jí)域名服務(wù)器 (Top Level DNS)
本地域名服務(wù)器 (Local DNS Server) 再向上一步返回的 gTLD 服務(wù)器發(fā)送請(qǐng)求。于是本地域名服務(wù)器就得到了 com 域的 IP 地址,再向 com 域的 IP 地址發(fā)起了請(qǐng)求(請(qǐng)問 www.baidu.com 這個(gè)域名的 IP 地址是什么?)
com 域這臺(tái)服務(wù)器告訴本地域名服務(wù)器我不知道 www.google.com 這個(gè)域名的IP地址,但是我知道 baidu.com 這個(gè)域的 DNS 地址,讓本地域名服務(wù)器去查找它。
查詢權(quán)威域名服務(wù)器 (Authoritative DNS)
接受請(qǐng)求的 gTLD 服務(wù)器查找并返回此域名對(duì)應(yīng)的 Name Server 域名服務(wù)器的地址,這個(gè)Name Server通常就是注冊(cè)的域名服務(wù)器。
例如:在某個(gè)域名服務(wù)提供商申請(qǐng)的域名,那么這個(gè)域名解析任務(wù)就由這個(gè)域名提供商的服務(wù)器來完成。
本地域名服務(wù)器 (Local DNS Server) 向 google.com 這個(gè)域名的 DNS 地址(這個(gè)一般就是由域名注冊(cè)商提供的,像萬網(wǎng),新網(wǎng)等)發(fā)起請(qǐng)求(請(qǐng)問 www.baidu.com 這個(gè)域名的IP地址是什么?)
這個(gè)時(shí)候 baidu.com 域的 DNS 服務(wù)器一查,果真在我這里,于是就把找到的結(jié)果發(fā)送給本地域名服務(wù)器,這個(gè)時(shí)候本地域名服務(wù)器就拿到了 wwwbaidu.com 這個(gè)域名對(duì)應(yīng)的 IP 地址。最后本地域名服務(wù)器把結(jié)果返回給用戶瀏覽器的主機(jī)。
DNS 迭代查詢 和 遞歸查詢
DNS域名解析過程:域名解析包含兩種查詢方式,分別是遞歸查詢和迭代查詢。
遞歸查詢
遞歸查詢是一種DNS 服務(wù)器的查詢模式,在該模式下 DNS 服務(wù)器接收到客戶機(jī)請(qǐng)求,必須使用一個(gè)準(zhǔn)確的查詢結(jié)果回復(fù)客戶機(jī)。如果DNS 服務(wù)器本地沒有存儲(chǔ)查詢DNS 信息,那么該服務(wù)器會(huì)詢問其他服務(wù)器,并將返回的查詢結(jié)果提交給客戶機(jī)。
迭代查詢
DNS 服務(wù)器另外一種查詢方式為迭代查詢,DNS 服務(wù)器會(huì)向客戶機(jī)提供其他能夠解析查詢請(qǐng)求的 DNS 服務(wù)器地址,當(dāng)客戶機(jī)發(fā)送查詢請(qǐng)求時(shí),DNS 服務(wù)器并不直接回復(fù)查詢結(jié)果,而是告訴客戶機(jī)另一臺(tái)DNS 服務(wù)器地址,客戶機(jī)再向這臺(tái) DNS 服務(wù)器提交請(qǐng)求,依次循環(huán)直到返回查詢的結(jié)果為止。
由于遞歸查詢對(duì)于被查詢的域名服務(wù)器負(fù)擔(dān)太大,通常采用以下模式:從請(qǐng)求主機(jī)到本地域名服務(wù)器的查詢是遞歸查詢,而 DNS 服務(wù)器到 DNS 服務(wù)器的查詢是迭代查詢。
DNS 迭代查詢 和 遞歸查詢 綜合圖示文章來源:http://www.zghlxwxcb.cn/news/detail-767761.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-767761.html
到了這里,關(guān)于Chrome 谷歌瀏覽器獲取網(wǎng)址映射 IP 地址 DNS 域名解析過程介紹(詳細(xì)教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!