DNS
通過域名(通常爲三級:三級.二級.頂級)查找主機ip的過程。
- 客戶端 -> 發起域名解析 -> 層層查找… -> 根域名服務器(最權威的13個機構,1個主的,12個輔助)
- 服務端 <- 域名對應IP <- 層層解析… <- 根域名服務器
原理
UDP報文遞歸查詢。任何一級域名服務器均會對結果進行緩存,時間設置爲ttl。ttl越大,網絡開銷越小,準確性越低。
過程
- 檢查應用(如瀏覽器)緩存,查看是否存在已解析的ip地址。
緩存保留的時間由ttl設置。
- 檢查操作系統緩存,查看是否有已解析過的結果。
操作系統會先檢查hosts文件,即本地域名解析配置。域名劫持也由此而來:hosts文件被黑客修改過,指定到他期望的ip地址。
- 請求本地域名服務器(LDNS)來解析這個域名。
這臺服務器一般在你的城市的某個角落,距離你不會很遠,並且這臺服務器的性能都很好,一般都會緩存域名解析結果,大約80%的域名解析到這裏就完成了。
- 由本地域名服務器(LDNS)請求根域名服務器(ROOT Server)解析,獲取頂級域名服務器(TLD Server-Top Level Domain)。
TLD Server是能夠解析【.com】、【.cn】等頂級域名的服務器,分爲兩種:nTLD-國家頂級域名;gTLD-通用頂級域名。
- 由本地域名服務器(LDNS)請求頂級域名服務器(TLD Server)解析,獲取命名服務器(Name Server),也叫權限域名服務器。
Name Server就是網站註冊的域名服務器,即服務商用於維護域名的服務器。
- (Name Server)根據映射關係表找到目標ip,返回給LDNS。LDNS緩存並返回給用戶。
- 用戶使用ttl值緩存到本地。
服務商和解析商
- 服務商:提供域名買賣。通常情況下,服務商也有解析的能力,也可能是和他方dns解析商合作。
- 解析商:可以理解爲(Name Server)dns服務器,存儲【域名/IP】映射關係,可能同步架設在很多地方。
1.當註冊購買了域名時,僅代表擁有了使用權,但尚未設置解析,即不存在域名/IP映射關係,因此無法通過域名直接訪問您的網站,或作爲電子郵箱後綴進行郵件收發。
2.當設置瞭解析(即域名/IP)後,解析商就將解析的配置存儲到指定的dns解析服務器裏,解析服務器可能架設在很多地方,每個地方都會同步一份。例如:購買“xxx.xyz”域名後,在阿里雲設置解析到自己的雲服務器“xxx.xxx.xxx.xxx”,阿里會提示:”當前分配的DNS服務器是:dns9.hichina.com, dns10.hichina.com“,即該解析配置由這兩個dns域名下的服務器負責解析,它們是權限域名服務器。
這兩個dns域名服務器,通過nslookup可以查看到是一個服務器集羣。
指定dns解析
分爲兩個角度:
- 服務端解析配置時,指定dns,將決定由誰(命名服務器)能夠解析該域名,通常選擇安全、穩定的dns解析商,阿里域名默認使用阿里系。
- 客戶端,指定dns,將選擇從客戶端發起的dns解析線路,
測試:域名解析分析網站
延伸
- nslookup查看DNS信息
nslookup 域名 # 查看A記錄
nslookup -q=cname 域名 # 查看cname記錄
nslookup -q=ns 域名 # 查看dns服務器
nslookup -debug 域名 # 查詢過程中會顯示完整的響應包以及其中的交互包
示例:nslookup -q=ns -debug baidu.com
待補充
- dns負載均衡:dns解析也是一個服務程序,可以實現負載均衡,即可以指定多個ip,通過負載均衡策略指定其中的某個ip。
- dns劫持