更多知識,請移步我的小破站:http://hellofriend.top
概述
DNS:Domain Name System
通過域名去尋找到主機的真實IP地址,就是所謂的DNS服務。
域名解析系統DNS
- 多層命名服務器構成的分佈式數據庫
- 應用層協議:完成名字的解析
Internet核心功能,用應用層協議實現
網絡邊界複雜
DNS服務
- 域名向IP地址的翻譯
- 主機別名
- 郵件服務器別名
- 負載均衡:Web服務器
它是一種分佈式層次式數據庫的方式,從根目錄開始,逐層往下查詢的。例如www.baidu.com,會先找根服務器,找到com域名解析的服務器,然後從com域名解析的服務器,找到baidu.com解析的服務器。然後又從baidu.com找到訪問網站的主機IP地址。
DNS根域名服務器
當本地域名解析服務器無法解析域名時,訪問根域名服務器。目前全球共有13個根域名服務器,從權威的域名服務器中獲取到映射後,返回給本都域名解析服務器。
TLD和權威域名解析服務器
頂級域名服務器(TLD, top-level domain): 負責com, org, net,edu等;
Network Solutions維護com頂級域名服務器
Educause維護edu頂級域名服務器
權威(Authoritative)域名服務器:組織的域名解析服務器,提供組織內部服務器的解析服務
本地域名解析服務器
- 不嚴格屬於層級體系
- 每個ISP有一個本地域名服務器
默認域名解析服務器 - 當主機進行DNS查詢時,查詢被髮送到本地域名服務器
作爲代理(proxy),將查詢轉發給(層級式)域名解析服務器系統
DNS查詢示例
迭代查詢
迭代查詢會不斷的與聯繫的服務器獲取下一個要聯繫的對象,然後把請求在發送過去,通常需要發送多次請求。
遞歸查詢
遞歸查詢一般只發送一次請求然後將剩下的事情交給發送的服務器去完成,只需要接收最後的結果即可。
DNS優化
DNS這個過程中存在多個請求(同時存在UDP和TCP請求)。如果每次都經過這麼多步驟,是否太耗時間?如何減少該過程的步驟呢?那就是DNS緩存。
DNS緩存
DNS存在着多級緩存,從離瀏覽器的距離排序的話,有以下幾種: 瀏覽器緩存,系統緩存,路由器緩存,IPS服務器緩存,根域名服務器緩存,頂級域名服務器緩存,主域名服務器緩存。
- 在你的chrome瀏覽器中輸入:chrome://dns/,你可以看到chrome瀏覽器的DNS緩存。
- 系統緩存主要存在/etc/hosts(Linux系統)中:
DNS負載均衡
不知道大家有沒有思考過一個問題: DNS返回的IP地址是否每次都一樣?如果每次都一樣是否說明你請求的資源都位於同一臺機器上面,那麼這臺機器需要多高的性能和儲存才能滿足億萬請求呢?其實真實的互聯網世界背後存在成千上百臺服務器,大型的網站甚至更多。但是在用戶的眼中,它需要的只是處理他的請求,哪臺機器處理請求並不重要。DNS可以返回一個合適的機器的IP給用戶,例如可以根據每臺機器的負載量,該機器離用戶地理位置的距離等等,這種過程就是DNS負載均衡,又叫做DNS重定向。大家耳熟能詳的CDN(Content Delivery Network)就是利用DNS的重定向技術,DNS服務器會返回一個跟用戶最接近的點的IP地址給用戶,CDN節點的服務器負責響應用戶的請求,提供所需的內容。