DNS協議 是什麼?說說DNS 完整的查詢過程?

林恒發表於2024-03-26

一、是什麼

DNS(Domain Names System),域名系統,是網際網路一項服務,是進行域名和與之相對應的 IP 地址進行轉換的伺服器

簡單來講,DNS相當於一個翻譯官,負責將域名翻譯成ip地址

  • IP 地址:一長串能夠唯一地標記網路上的計算機的數字
  • 域名:是由一串用點分隔的名字組成的 Internet 上某一臺計算機或計算機組的名稱,用於在資料傳輸時對計算機的定位標識

二、域名

域名是一個具有層次的結構,從上到下一次為根域名、頂級域名、二級域名、三級域名...

例如www.xxx.comwww為三級域名、xxx為二級域名、com為頂級域名,系統為使用者做了相容,域名末尾的根域名.一般不需要輸入

在域名的每一層都會有一個域名伺服器,如下圖:

除此之外,還有電腦預設的本地域名伺服器

三、查詢方式

DNS 查詢的方式有兩種:

  • 遞迴查詢:如果 A 請求 B,那麼 B 作為請求的接收者一定要給 A 想要的答案

  • 迭代查詢:如果接收者 B 沒有請求者 A 所需要的準確內容,接收者 B 將告訴請求者 A,如何去獲得這個內容,但是自己並不去發出請求

四、域名快取

在域名伺服器解析的時候,使用快取儲存域名和IP地址的對映

計算機中DNS的記錄也分成了兩種快取方式:

  • 瀏覽器快取:瀏覽器在獲取網站域名的實際 IP 地址後會對其進行快取,減少網路請求的損耗
  • 作業系統快取:作業系統的快取其實是使用者自己配置的 hosts 檔案

五、查詢過程

解析域名的過程如下:

  • 首先搜尋瀏覽器的 DNS 快取,快取中維護一張域名與 IP 地址的對應表

  • 若沒有命中,則繼續搜尋作業系統的 DNS 快取

  • 若仍然沒有命中,則作業系統將域名傳送至本地域名伺服器,本地域名伺服器採用遞迴查詢自己的 DNS 快取,查詢成功則返回結果

  • 若本地域名伺服器的 DNS 快取沒有命中,則本地域名伺服器向上級域名伺服器進行迭代查詢

    • 首先本地域名伺服器向根域名伺服器發起請求,根域名伺服器返回頂級域名伺服器的地址給本地伺服器
    • 本地域名伺服器拿到這個頂級域名伺服器的地址後,就向其發起請求,獲取許可權域名伺服器的地址
    • 本地域名伺服器根據許可權域名伺服器的地址向其發起請求,最終得到該域名對應的 IP 地址
  • 本地域名伺服器將得到的 IP 地址返回給作業系統,同時自己將 IP 地址快取起來

  • 作業系統將 IP 地址返回給瀏覽器,同時自己也將 IP 地址快取起

  • 至此,瀏覽器就得到了域名對應的 IP 地址,並將 IP 地址快取起

流程如下圖所示:

參考文獻

  • https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F
  • https://www.cnblogs.com/jmilkfan-fanguiju/p/12789677.html
  • https://segmentfault.com/a/1190000039039275
  • https://vue3js.cn/interview

相關文章