前端小知識|DNS的相關知識及解析過程

語言: CN / TW / HK

theme: smartblue

小知識,大挑戰!本文正在參與“程式設計師必備小知識”創作活動。

前言

最近開啟了日更學習系列,每天向優秀前端更近一步!知識點都會盡量用自己的話進行一個總結!

ip地址

IP地址是IP協議提供的一種統一的地址格式,它為網際網路上的每一個網路和每一臺主機分配一個邏輯地址邏輯地址,以此來遮蔽實體地址的差異。

現在有的網際網路使用的是IPV4協議的ip地址,一共有四段數字,每一段最大不超過255(8位二進位制數,最大為2的八次方),例如咱們常用的本機地址127.0.0.1。

域名

域名是按照層級組成的,一個完整域名的倒數第一個"."的右邊部分稱為頂級域名例如.com這類域名

頂級域名

頂級域名分為兩類

  1. 國家頂級域名,例如中國的.cn,美國的.us。
  2. 國際頂級域名,例如工商企業的com,非盈利組織的.org

dns解析

dns解析就是將域名解析為ip地址,DNS( Domain Name System)是“域名系統”的英文縮寫,平時咱們訪問網站的時候使用的是域名訪問,例如

https://www.baidu.com, 但是計算機在通訊的時候是不認得域名的,它只認得ip地址。網際網路中的地址是數字的IP地址,域名解析的作用主要就是為了便於記憶。

下面我以咱們前端的思維,將dns解析比喻作前端發請求給後端獲取想要的資料來分析DNS解析的過程。 第一個問題,瀏覽器怎麼知道往哪個地址傳送請求解析dns地址,這不是套娃麼!其實我們的電腦裡的網路設定是可以查到自己的ip地址的。

本機快取

輸入域名後,電腦首先看自己有沒有對應域名的快取,如果有的話快取就直接用快取裡的ip訪問,可以輸入這個命令檢視 ipconfig /displaydns,如果本機沒有快取就要去查詢本機的hosts檔案

hosts檔案

hosts檔案位於路徑 “C:\Windows\System32\drivers\etc" 下,大家可以在自己的電腦開啟看看,hosts檔案可以加快域名解析對於要經常訪問的網站,我們可以通過在Hosts中配置域名和IP的對映關係,這樣當我們輸入域名計算機就能很快解析出IP,而不用請求網路上的DNS伺服器。

本地域名解析器

如果hosts檔案中沒有那我們就要訪問本機的dns伺服器,在windows10中可以在 檢視網路屬性 中檢視自己電腦的 dns伺服器,如下圖

image.png

根域名伺服器

本地dns伺服器訪問根域名伺服器,根域名伺服器根據你的域名是 .com 或是.cn返回對應的.com或.cn的頂級域名伺服器地址。根伺服器主要用來管理網際網路的主目錄,最早是IPV4,全球只有13臺

1個為主根伺服器在美國,由美國網際網路機構Network Solutions運作。其餘12個均為輔根伺服器,其中9個在美國,2個在歐洲(位於英國和瑞典),1個在亞洲(位於日本)。

頂級域名伺服器

接下來繼續向頂級域名伺服器傳送請求,傳的引數為咱們的域名,例如oil.com,頂級域名伺服器就會解析出咱們的域名所對應的域名伺服器。

域名伺服器

這時候我們再把完整域名當做引數傳送請求給我們的域名伺服器,終於我們拿到了我們的ip地址,這時候我們的本地dns伺服器會向瀏覽器返回ip地址,瀏覽器也可以向咱們自己得伺服器傳送請求了,在查詢ip地址的過程中還會給咱們的本地dns伺服器和瀏覽器新增快取,下次一訪問就不用去查詢啦!

遞迴+迭代的查詢方式

在dns查詢的過程中,我們使用的是遞迴+迭代的查詢方式。

舉個例子,相信大家都有經歷過考試,如果考試的時候監考老師發試卷是親自從第一個同學往後發,直到自己走到最後一個同學那裡發完最後一張,那就是迭代。

而遞迴就是老師將幾張試卷給第一個同學,第一個同學拿了一張試卷後傳給下一個同學,下一個同學再拿一張,知道傳到最後一個同學那裡,那麼就是遞迴。

dns在本地dns伺服器查詢前使用的是遞迴,而本地dns伺服器向頂級域名伺服器,根域名伺服器等就是用迭代的方式。

dns使用udp進行傳輸

dns使用udp進行傳輸是因為在訪問某些冷門網站的時候,我們可能要走完上述的所有請求過程,如果使用TCP傳輸的話我們需要不斷的去發起TCP連線,而udp則不需要,且咱們dns的解析請求非常的簡單,就是我給你一個域名,你反我一個ip地址。

就例如咱們前端發請求給後端,發一次請求給後端拿十條資料和發十個請求一次拿一條資料時間對比,肯定是發一次請求的更短嘛。

dns解析記錄型別

咱們在一些雲服務平臺買域名的時候就需要解析到咱們伺服器的ip,在新增解析型別的時候我們可以看到有很多種型別,他們的具體區別我用騰訊雲dnspod的一個解釋的圖片做展示

image.png

總結

dns的解析其實就像是我們的請求通過一個一個的伺服器去傳遞,最終在伺服器的幫助下我們從資料庫中拿到了我們想要的資料,期間想要加速請求速度當然是使用輕量的資料包和一些快取機制來加快請求速度,畢竟這只是咱們真正請求的第一步嘛!

我是新人oil,歡迎關注共同成長

「其他文章」