博客 / 詳情

返回

DNS工作原理:從域名到IP

前言

每天在瀏覽器輸入域名(比如www.baidu.com),就能輕鬆打開網站,大家有沒有想過:為什麼輸入域名可以訪問到網站?

“我們習以為常的便捷,背後都藏着精密的邏輯”,其實這背後全靠“DNS”在默默工作,它就像互聯網世界的“地址簿”,幫我們把好記的域名翻譯成服務器能懂的IP地址。今天就給大家分享一下DNS的記錄類型和工作方式,解析“域名變IP”的全過程。

一、DNS是什麼?互聯網的“地址翻譯官”

簡單來説,DNS(域名系統)就是幫“域名”和“IP地址”做匹配的工具。由於服務器只認IP地址(比如95.127.211.85),如果只是一兩個網站,或許我們能夠記住其IP信息,但是在信息時代,我們需要訪問的網站多不勝數,靠記IP就顯得不現實了,而大多數網站運營者為了提高自己網站的曝光率和訪問量也會註冊非常通俗易懂的域名(比如www.baidu.com),記住這些域名就很容易了。

對建站的人來説,DNS很重要——比如你用非凡雲服務器搭建了網站,給服務器綁定了域名後,必須通過DNS解析,才能把域名指向服務器的公網IP,別人才能通過域名訪問你的網站。如果DNS配置錯了,哪怕服務器和域名都沒問題,網站也打不開。

DNS 記錄由一系列 DNS 語法編寫的文本文件組成。每個 DNS 記錄都有一個單獨的行。記錄通常遵循以下格式:

<name> <ttl> <class> <type> <rdlength> <radata>
  • name:指域,即用户在瀏覽器中輸入的名稱
  • ttl:TTL 代表“生存時間”,表示記錄可以臨時存儲在緩存中的時間(以秒為單位)
  • class:理論上,DNS 記錄有不同的類別。然而實際中,記錄常是 Internet(即 IN)
  • type:不同的記錄類型
  • rdlength:指定後續數據字段的大小(可選值)
  • rdata:解析出的域名信息(例如 IP 地址)

我們可以使用 Dig 命令查詢 DNS 記錄信息,例如:baidu.com

baidu.com.  130  IN  A  39.156.70.37

這代表着該條記錄可以在緩存中存儲 130 秒,它涉及 Internet 上的 DNS 記錄(IN),並指向了 A 類記錄,同時域名被解析為 IP 地址(39.156.70.37)。

二、DNS記錄:互聯網“地址簿”裏的關鍵信息

DNS記錄是存放在DNS服務器裏的“指令”,就像地址簿裏的“聯繫人詳情”,記錄着域名對應的IP、服務類型等信息。每條記錄都有固定格式,看懂下面這些常見的記錄類型,就能應對大部分建站和上網場景:

1. A記錄 & AAAA記錄:最常用的“域名-IP”匹配

  • A記錄:把域名指向IPv4地址(比如95.127.211.85),是互聯網最基礎的DNS記錄。比如你給非凡雲服務器的公網IPv4地址配置A記錄後,用户輸入域名就能直接訪問服務器;
  • AAAA記錄:功能和A記錄一樣,但指向的是IPv6地址(比如2001:0db8:85a3:0000:0000:8a2e:0370:7334),隨着IPv6的普及,這種記錄會越來越常用。

這兩種記錄就像地址簿裏“家庭地址”的不同格式,一個對應老版地址(IPv4),一個對應新版地址(IPv6),確保無論服務器用哪種IP,域名都能找到它。

2. CNAME記錄:給域名起“別名”

CNAME記錄不直接指向IP,而是把域名指向另一個域名(別名)。比如你有主域名“baidu.com”,想讓“blog.baidu.com”也指向同一個服務器,不用再配置A記錄,直接給“blog”子域名加一條CNAME記錄,指向“baidu.com”即可。

它就像給朋友起了個外號——別人問“小明”(子域名)的地址,你告訴他“小明就是之前的姚明”(主域名),讓他查“姚明”的地址就行。

3. MX記錄:管理郵箱的“郵件嚮導”

MX記錄專門用於郵件服務,它會指定處理域名郵件的服務器地址,還能設置優先級(數字越小優先級越高)。比如你的域名是“baidu.com”,想讓“xxx@baidu.com”的郵件能正常收發,就需要配置MX記錄,指向你的郵件服務器(比如mail.baidu.com)。

這就像快遞站的“分揀規則”——寄給“baidu.com”的郵件,會根據MX記錄的優先級,先送到主郵件服務器,主服務器故障時再轉送到備用服務器,確保郵件不會丟失。

4. 其他常用記錄:各有專屬作用

  • NS記錄:指定管理域名解析的DNS服務器,比如你在域名服務商處購買域名後,需要設置NS記錄,告訴互聯網“這個域名的解析由哪家DNS服務器負責”;
  • TXT記錄:存放文本信息,常用來驗證域名所有權(比如申請SSL證書時)、設置反垃圾郵件規則;
  • PTR記錄:和A記錄相反,能通過IP地址查對應的域名,比如服務器IP被標記為垃圾郵件源時,可通過PTR記錄證明IP歸屬,提升郵件送達率。

三、DNS請求:域名變IP的“四步查詢流程”

知道了DNS記錄,再來看當你輸入域名後,DNS是如何一步步找到IP地址的:

第一步:查本地緩存

瀏覽器會先檢查本地緩存(比如電腦、手機裏存儲的近期DNS記錄),如果之前訪問過這個域名,緩存裏可能還存着對應的IP,這時直接用緩存的IP訪問,不用再查其他服務器,速度最快。就像你之前去過某家餐廳,現在再去不用查地圖,直接憑記憶找過去。

第二步:查本地DNS服務器

如果本地緩存沒有,瀏覽器會向“本地DNS服務器”(通常是你的網絡服務商,比如聯通、電信提供的DNS)發送請求。本地DNS會先查自己的緩存,如果有記錄就直接返回;沒有的話,就開始替你向其他服務器查詢(這叫“遞歸查詢”)。

第三步:查根服務器與頂級域名服務器

本地DNS如果沒查到,會先向“根域名服務器”(互聯網DNS系統的頂層)發送請求。根服務器不會直接返回IP,而是告訴本地DNS“這個域名的頂級域(比如.com、.cn)由哪家頂級域名服務器管理”,就像總郵局告訴你“這個地址屬於某區郵局管,你去問他們”。

接着本地DNS向頂級域名服務器查詢,頂級域名服務器會返回“管理這個域名的權威DNS服務器地址”(比如你域名服務商的DNS服務器)。

第四步:查權威DNS服務器

最後,本地DNS向權威DNS服務器查詢,權威DNS裏存儲着該域名的所有DNS記錄(比如A記錄、CNAME記錄),會直接返回對應的IP地址。本地DNS拿到IP後,一方面把IP返回給瀏覽器,讓瀏覽器訪問服務器;另一方面把IP存到自己的緩存裏,下次再有人查這個域名,就不用再走一遍流程了。

整個過程看似複雜,但實際只需要幾十毫秒,快到你根本察覺不到。

四、實用技巧:排查DNS問題

無論是訪問網站還是搭建網站,偶爾會遇到DNS相關問題(比如域名打不開、解析延遲高),掌握簡單的排查方法,快速解決:

  • 普通用户:如果某網站打不開,可嘗試切換網絡(比如從WiFi換成手機熱點)或修改本地DNS(比如用114.114.114.114、8.8.8.8等公共DNS),排除本地DNS故障;
  • 建站用户:如果自己的網站打不開,可先檢查DNS記錄是否正確(比如A記錄是否指向服務器的公網IP),也可用“Dig命令”(比如在終端輸入dig www.example.com)查詢DNS解析結果。

五、總結

沒有DNS,互聯網會變得無比複雜——我們得記住海量的IP地址,網站也無法通過好記的域名觸達用户。

  • 對建站的人來説,瞭解DNS的基本原理和記錄類型,能幫你更好地配置域名解析、排查訪問問題;
  • 對普通用户來説,知道DNS的工作流程,遇到網站打不開時也能更有方向地排查。
user avatar goody 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.