一、是什麼 DNS(Domain Names System),功能變數名稱系統,是互聯網一項服務,是進行功能變數名稱和與之相對應的 IP 地址進行轉換的伺服器 簡單來講,DNS相當於一個翻譯官,負責將功能變數名稱翻譯成ip地址 IP 地址:一長串能夠唯一地標記網路上的電腦的數字 功能變數名稱:是由一串用點分隔的名字組成的 Int ...
一、是什麼
DNS(Domain Names System),功能變數名稱系統,是互聯網一項服務,是進行功能變數名稱和與之相對應的 IP 地址進行轉換的伺服器
簡單來講,DNS
相當於一個翻譯官,負責將功能變數名稱翻譯成ip
地址
- IP 地址:一長串能夠唯一地標記網路上的電腦的數字
- 功能變數名稱:是由一串用點分隔的名字組成的 Internet 上某一臺電腦或電腦組的名稱,用於在數據傳輸時對電腦的定位標識
二、功能變數名稱
功能變數名稱是一個具有層次的結構,從上到下一次為根功能變數名稱、頂級功能變數名稱、二級功能變數名稱、三級功能變數名稱...
例如www.xxx.com
,www
為三級功能變數名稱、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