dns是網域名稱系統(domain name service)的縮寫,我們通常用來識別主機的方式有兩種,一種是通過主機名,另外一種是通過ip位址。主機名便於我們的記憶,而路由器則更喜歡定長的、有著層次結構的ip位址。所以需要乙個能將網域名稱轉變到ip位址的目錄服務,這就是網域名稱伺服器存在的意義。
當使用者在瀏覽器中輸入www.baidu.com
的時候,dns解析大概會有以下過程:
首先瀏覽器會檢查自身快取是否解析過這個網域名稱的ip位址,如果有即快取命中,那麼解析結束;
如果瀏覽器快取中沒有,那麼瀏覽器會檢查作業系統快取中是否有相應的解析過的結果。而作業系統也有乙個網域名稱解析的過程。像我們熟悉的hosts檔案,如果使用者在這裡定義了乙個網域名稱對應的ip位址,那麼瀏覽器會首先使用這裡定義的ip位址;
如果此時還沒有命中網域名稱,才會真正地去請求本地網域名稱伺服器(ldns)來解析這個網域名稱,這台伺服器一般在你的城市的某個角落,距離你不是很遠,並且這台伺服器的效能很好,一般這裡會快取網域名稱解析的結果。大約80%的網域名稱解析到這裡就完成了;
如果ldns仍然沒有命中,那麼ldns就會向根網域名稱伺服器(root server)發起網域名稱請求解析;
根網域名稱伺服器返回給ldns乙個所查詢域的主網域名稱伺服器(gtld server,國際頂尖網域名稱伺服器,如.com、.cn、.org等)位址;
name server根據對映關係表找到目標ip位址,並將其返回給ldns;
ldns快取這個網域名稱和對應的ip;
ldns把解析的結果返回給使用者,使用者根據ttl值快取到本地系統快取中,網域名稱解析過程至此結束。
從上面內容我們了解了dns主要解析流程,dns主要作用就是將主機網域名稱轉換為ip位址。當使用者主機的dns客戶端接收到應用程式的這種轉換請求時(例如呼叫gethostbyname()
系統函式),那麼就會向網路中傳送乙個dns查詢報文。需要了解的是,dns請求和回答報文的下層都是使用udp資料報經過53埠傳送的。
那麼為什麼使用udp(user datagram protocol)這樣面向無連線的,盡最大能力交付的不可靠資料連線,而不是使用tcp(transmission control protocol)這樣的面向連線的可靠資料連線。
因為相比較與tcp來說,一次udp網域名稱伺服器的交換可以短到只有兩個報文,乙個查詢報文、乙個響應報文。一次tcp交換則至少包含九個傳送報文:三次握手初始化tcp會話、乙個查詢報文、乙個響應報文、四次揮手的tcp中斷連線(或許是八個報文,畢竟連線建立時第二個ack報文是可以攜帶資料的,誰知道呢,反正也比兩個報文要多)。所以考慮到效率的原因,tcp連線的開銷更大,故而採用udp作為dns的傳輸層協議。
當然還有另外一點需要注意,整個dns服務體系中,並不是只有udp一種協議存在,上述網域名稱解析時使用的是udp,但是在區域傳送時還是使用tcp。輔網域名稱伺服器會定時(一般是三小時)向主網域名稱伺服器進行查詢以便了解資料是否有變動。如有變動,則會執行一次區域傳送,進行資料同步。區域傳送將使用tcp而不是udp,因為資料同步傳送的資料量比乙個請求和應答的資料量要多得多,使用tcp更加可靠。
dns的一種簡單設計是在網際網路上只使用乙個dns伺服器,該伺服器包含了所有的對映。在這種集中式設計中,客戶直接將所有查詢直接發往單一的dns伺服器,同時該dns伺服器直接對所有的查詢客戶做出響應。儘管這種設計十分簡單,但是由於網際網路有著資料量巨大的主機。這種集中式設計會有以下問題:①單點故障:如果該dns伺服器奔潰,整個網際網路隨之癱瘓;②通訊容量:單個dns伺服器不得不處理所有的dns查詢。
所以單一dns伺服器上執行集中式資料庫完全沒有可擴充套件能力。因此,dns採用了分布式的設計方案。
事實上dns伺服器是一種分布式並且分層次的資料庫系統,從上面dns的解析過程中我們也看出來了,dns系統中有多種型別的dns伺服器,它們之間以層次劃分開來:
權威dns伺服器:在網際網路上具有公共可訪問主機(如web伺服器和郵件伺服器)的每個組織機構必須提供公共可訪問的dns記錄,這些記錄將這些主機的名字對映為ip位址。多數大學和大公司是實現和維護它們自己的基本和輔助(備份)的權威dns。
DNS協議解析
dns是引用層協議,傳輸層用udp,採用 請求 響應 模式。1.1.網域名稱結構 網域名稱系統並不像 號碼通訊錄那麼簡單,通訊錄主要是單個個體在使用,同乙個名字出現在不同個體的通訊錄裡並不會出現問題,但網域名稱是群體中所有人都在用的,必須要保持唯一性。為了達到唯一性的目的,網際網路在命名的時候採用了...
DNS解析過程
你打入乙個 www.microsoft.com,按回車後。系統首先查詢本地dns客戶端快取中是否有這個網域名稱,如果你剛才已經訪問過這個 那麼快取中就會有對應的ip,系統就可以直接根據這個ip來連線 如果本地快取中無法找到對應的ip,系統將向dns伺服器 0.14 提交查詢請求。0.14在收到請求後...
DNS解析過程
名詞解釋 dns domain name server 網域名稱解析伺服器 url統一資源識別符號 ttl time to live 生存時間 ldns 本地dns伺服器 gtld全球dns伺服器 背景 在網際網路的世界中是用ip來標識一台伺服器的,因此在很早的時候大家都是通過ip來訪問其他伺服器上...