一、訪問網站的基本流程
第一步:客戶端用戶在瀏覽器輸入www.51cto.com網站,回車後,系統首先會查找系統本地的DNS緩存及hosts文件信息,確定是否存在www.51cto.com餘名對應的IP解析記錄,如果有就直接獲取IP地址,然後去訪問這個IP地址對應餘名www.51cto.com的服務器。一般第一次請求的時候,DNS緩存是沒有解析記錄的,而hosts躲在內部臨時測試時使用。
第二步:如果客戶端本地DNS緩存及hosts文件沒有www.51cto.com餘名對應的解析記錄,那麼,系統會把瀏覽器的解析請求發送給客戶端本地設置的DNS服務器地址(稱爲LDNS)解析,如果LDNS服務器的本地緩存有對應的解析記錄就會直接返回IP地址給客戶端;如果沒有,則LDNS會負責繼續請求其他的DNS服務器。
第三步:LDNS從DNS系統的根開始請求對www.51cto.com餘名的解析,並針對各個層級的DNS服務器系統進行一系列的查找,最終會查找到51cto.com域名對應的授權DNS服務器,而這個授權DNS服務器正式企業購買域名時用於管理域名解析的服務器,這個授權服務器會有www.51cto.com對應的IP解析記錄。如果此時沒有,就表示企業的域名管理人員沒有爲www.51cto.com域名做解析設置,即網站還沒有架設好。
第四步:51cto.com餘名的授權DNS服務器會把www.51cto.com對應的最終IP解析記錄發給LDNS。
第五步:LDNS把來自授權DNS服務器的www.51cto.com對應的IP解析記錄發給客戶端瀏覽器,並且它會把該域名和IP地址的對應解析緩存起來,以便下一次更快的返回相同解析請求的記錄,這些緩存記錄在指定的時間(DNS TTL)內不會過期。
第六步:客戶端瀏覽器獲取了www.51cto.com對應的IP地址,接下來,瀏覽器會請求獲得IP地址對應的網站服務器,網站服務器接收到客戶的請求並響應處理(此處的處理可能是數百臺集羣的服務器系統,也可能是一臺雲主機),將客戶請求的內容返回給客戶端瀏覽器。至此,一次訪問瀏覽網頁的完整過程也就完成了。
附:
(1)查看windows客戶端的本地緩存記錄:
ifconfig /displaydns
(2)清楚Windows客戶端本地緩存DNS記錄:
ifconfig /flushdns
(3)Windows系統下的hosts域名解析記錄位置:
C:\Windows\System32\drivers\etc\hosts
二、DNS系統解析基本流程
DNS簡介
A記錄----把餘名解析爲對應的IP地址。
CNAME別名記錄--別名解析功能常備CDN加速服務商應用
MX郵件記錄--MX記錄功能,在購買或搭建郵件服務器時會被用到
PTR記錄--反向解析,即把IP地址解析爲對應域名,和A記錄的解析相反,此功能在郵件服務業務中會用
DNS解析流程圖
通過dig命令來實踐理解DNS解析流程
[root@alon ~]# dig +trace www.51cto.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> +trace www.51cto.com ;; global options: +cmd . 47942 IN NS j.root-servers.net. . 47942 IN NS f.root-servers.net. . 47942 IN NS b.root-servers.net. . 47942 IN NS h.root-servers.net. . 47942 IN NS e.root-servers.net. . 47942 IN NS g.root-servers.net. . 47942 IN NS k.root-servers.net. . 47942 IN NS l.root-servers.net. . 47942 IN NS m.root-servers.net. . 47942 IN NS i.root-servers.net. . 47942 IN NS c.root-servers.net. . 47942 IN NS a.root-servers.net. . 47942 IN NS d.root-servers.net. ;; Received 228 bytes from 192.168.0.1#53(192.168.0.1) in 54 ms ## a-m一共13個DNS服務器,j.root-servers.net根DNS負責了此處的解析 com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. ;; Received 491 bytes from 198.97.190.53#53(198.97.190.53) in 352 ms ##解析com的一共有13個DNS服務器,.com的a.gtld-servers.net負責了此處解析 51cto.com. 172800 IN NS ns1.dnsv2.com. 51cto.com. 172800 IN NS ns2.dnsv2.com. ;; Received 249 bytes from 192.54.112.30#53(192.54.112.30) in 272 ms ##解析 ns1.dnsv2.com負責了最終A記錄解析 www.51cto.com. 600 IN CNAME web.dns.51cto.com. web.dns.51cto.com. 600 IN CNAME gf.dns.51cto.com. gf.dns.51cto.com. 600 IN A 218.11.0.91 51cto.com. 86400 IN NS ns2.dnsv2.com. 51cto.com. 86400 IN NS ns1.dnsv2.com. ;; Received 162 bytes from 115.236.151.178#53(115.236.151.178) in 139 ms