NS域名工作原理及解析


DNS域名工作原理及解析

 

0x00 定義

    DNS( Domain Name System)是“域名系統”的英文縮寫,它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網。DNS使用TCP和UDP端口53[1]。當前,對於每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符。

    開始時,域名的字符僅限於 ASCII字符的一個子集。2008年,ICANN通過一項決議,允許使用其它語言作為互聯網頂級域名的字符。使用基於 Punycode碼的 IDNS系統,可以將 Unicode字符串映射為有效的DNS字符集。因此,諸如“XXX.中國”、“XXX.美國”的域名可以在地址欄直接輸入並訪問,而不需要安裝插件。但是,由於英語的廣泛使用,使用其他語言字符作為域名會產生多種問題,例如難以輸入,難以在國際推廣等。
    簡單來說就是一個將域名翻譯成ip地址的系統。

總結以下幾點:

1)映射域名與IP

2)使用TCP/UDP:53端口

3)每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符

4)早期的DNS是只支持英文域名解析。在IDNs(國際化域名Internationalized Domain Names)推出以后,為了保證兼容以前的DNS,所以,對IDNs進行punycode轉碼,轉碼后的punycode就由26個字母+10個數字,還有“-”組成。

例如:企鵝.com,用Punycode轉換后為:xn--hoq754q. com

          中國.cn,用Punycode轉換后為:xn--fiqs8s. cn

 

0x01 域名結構

    DNS 系統采用的是分布式的解析方案,整個 DNS 架構是一種層次樹狀結構,這個樹狀結構稱為 DNS 域名空間,如圖:

    樹狀結構最頂層稱為根域,用 “.” 表示,相應服務器稱為根服務器,整個域名空間解析權都歸跟服務器所有,但根服務器無法承擔龐大的負載,采用“委派”機制,在根域下設置了一些頂級域,然后將不同頂級域解析權分別委派給相應的頂級域服務器,如將 com 域 的解析全委派給 com 域服務器,以后但凡跟服務器收到以 com 結尾的域名解析請求,都會轉發給com 域服務器,同樣道理,為了減輕頂級域的壓力,又下設了若干二級域,二級域又下設三級域或主機

根域
位於域名空間最頂層,一般用一個 “.” 表示

頂級域
一般代表一種類型的組織機構或國家地區,如 net、com、org、edu、gov、mil、cn、jp、hk

二級域
用來標明頂級域內的一個特定的組織,國家頂級域下面的二級域名由國家網絡部門統一管理,如 .cn 頂級域名下面設置的二級域名:.com.cn、.net.cn、.edu.cn …

子域
二級域下所創建的各級域統稱為子域,各個組織或用戶可以自由申請注冊自己的域名

主機
主機位於域名空間最下層,就是一台具體的計算機,如 www、mail、都是具體的計算機名字,可用www.sina.com.cn.、mail.sina.com.cn. 來表示,這種表示方式稱為 FQDN (完全合格域名),也是這台主機在域名中的全名

0x02 DNS記錄

轉載了一篇比較全的DNS記錄說明,可以看一下

下面說一下比較常見一些記錄信息

A/AAAA、CNAME、MX、NS、TXT、SPF
下面挨個介紹一下。

A記錄/AAAA記錄

IPv4:
  • 示例:ns1.exmaple.com. IN A 198.51.100.2
  • 解釋:【domain】 IN A 【IP地址】
IPv6:
  • 示例:ns1.exmaple.com. IN AAAA 8fe0::8f61:ac8:30cd:a16e
  • 解釋:【domain】 IN AAAA 【IP地址】
    ※IN的意思是「Internet」,不是IN/OUT的「IN」。
干什么用呢?

我們在瀏覽器輸入域名后,需要向DNS服務器請求,找到這個域名對應的服務器IP。上面示例就是這么一條記錄。
雖然域名和IP都可以變更,但是相比來說域名變更更加簡單和隨意。所以當網站更換自己域名的時候,就需要修改這條記錄。

CNAME

  • 示例:sub.example.com. IN CNAME hoge.example.com.
  • 解釋:【別名】 IN CNAME 【原名】
干什么用呢?

給某一個domain起多個名字。
類似於,jd.com,jd360.com,jingdong.com雖然是不同名字的域名,但是可以指向同一個原名jd.com。可以讓企業的對外展示更加靈活。
舉例:
jd360.com IN CNAME jd.com
jingdong.com IN CNAME jd.com
jd.com IN A 123.123.123.123 (這條是A記錄例子)

MX記錄

  • MX記錄(Mail Exchange):郵件路由記錄
    在DNS上設定,用於將郵箱地址@符號后的域名指向郵件服務器。
  • 示例:example.com. IN MX 10 mail.example.com.
  • 解釋:【domain】 IN MX 【優先度】 【郵件服務器】
干什么用呢?

當發信側服務器給受信側發郵件時,首先會要求DNS服務器解析受信側郵箱地址中@后面部分的域名對應的MX記錄(DNS的寫法可以理解成example.com 的A記錄下面,有一行上面示例的MX記錄,當然郵箱服務器也有對應的A記錄)。
這樣,郵件就直接發到對應的MX記錄的A記錄里的IP了。
例子:給test@exmaple.com發郵件的話,
DNS會返回給發信側198.51.100.3這個IP

exmaple.com. IN A 198.51.100.2
example.com. IN MX 10 mail.example.com.
mail.example.com. IN A 198.51.100.3

※如果是普通用戶通過【exmaple.com】瀏覽主頁,那么DNS繼續返回 198.51.100.2 。這個其實也需要DNS判斷請求服務器是郵件服務器還是普通的訪問。

NS記錄

  • 指定域名解析服務器。
  • 示例:example.com. IN NS ns1.example.com.
  • 解釋:【domain】 IN NS 【DNS服務器】
干什么用呢?

指定該域名由哪個DNS服務器來進行解析。

TXT記錄

  • 示例:ns1.exmaple.com. IN TXT "聯系電話:XXXX"
  • 解釋:【domain】 IN TXT 【任意字符串】
干什么用呢?

一般指某個主機名或域名的說明,或者聯系方式,或者標注提醒等等。

SPF記錄

SPF記錄是TXT記錄的一個運用。后面的備注需要按照指定的格式才能有效。

  • 示例:exmaple.com. IN TXT "v=spf1 ip4:198.51.100.1 ~all"
  • 解釋:【domain】 IN TXT 【送信側郵件服務器確認規則】
干什么用呢?

從發信側服務器設定到DNS上的這條記錄中,讀取信息,判斷發信側是否合法。
如果不符合規則,那么按照約定的規則處理掉。
跟MX記錄正好相反。
MX:我是收件服務器,你找我時,請參考我設定到DNS服務器上的MX記錄。
SPF:我是發信服務器,你接受郵件時,請參考我設定到DNS服務器上SPF規則。如果不是我發的信,你可以刪掉或者接收。

SPF記錄規則
  1. 格式:
    版本 空格 定義 空格 定義 (空格 定義的循環)
    跟着例子看的話,比較好理解。
    example.com. IN SPF "v=spf1 ip4:192.0.2.1 -all"

    • v=spf1 是版本。只出現一次。
    • ip4:192.0.2.1 第一個定義
    • -all 第二個定義
  2. 定義的格式。

    • 種類
      | all | ip4 | ip6 | a | mx | ptr | exists | include|
    • 前綴
      "+" Pass(通過)
      "-" Fail(拒絕)
      "~" Soft Fail(軟拒絕)
      "?" Neutral(中立)
  3. 定義測試
    測試時,將從前往后依次測試每個定義。
    如果一個定義命中了要查詢的 IP 地址,則由相應定義的前綴決定怎么處理。默認的前綴為+。
    如果測試完所有的 定義也沒有命中,則結果為 Neutral。
    結果及處理方法一覽

結果 說明 服務器處理辦法
Pass 發件IP是合法的 接受來信
Fail 發件 IP 是非法的 退信
Soft Fail 發件 IP 非法,但是不采取強硬措施 接受來信,但是做標記
Neutral SPF 記錄中沒有關於發件 IP 是否合法的信息 接受來信
None 服務器沒有設定 SPF 記錄 接受來信
PermError 發生了嚴重錯誤(例如 SPF 記錄語法錯誤) 沒有規定
TempError 發生了臨時錯誤(例如 DNS 查詢失敗) 接受或拒絕


0x03DNS服務器類型
    因特網上的域名服務器用來存儲域名的分布式數據庫,並為DNS客戶提供域名解析。它們也是按照域名層次來安排的,每一個域名服務器都只對域名體系中的一部分進行管轄。根據它們的用途,域名服務器有以下幾種不同類型。
(1)主域名服務器:負責維護這個區域的所有域名信息,是特定的所有信息的權威信息源。也是說,主域名服務器內所存儲的是該區域的正本數據,系統管理員可以對它進行修改。從DNS域名空間可以看出,根域是最大的,但因為他的工作方式是委派,委派給頂級域進行解析,所以其實主域名服務器就是頂級域服務器
(2)輔助域名服務器:當主域名服務器出現故障、關閉或負載過重時,輔助域名服務器作為備份服務提供域名解析服務。輔助域名服務器中的區域文件內的數據是從另外一台域名服務器復制過來的,並不是直接輸入的,也是說這個區域文件只是一份副本,這里的數據是無法修改的。
(3)緩存域名服務器:可運行域名服務器軟件但沒有域名數據庫。它從某個遠程服務器取得每次域名服務器查詢的回答,一旦獲取一個答案,將它放在高速緩存中,以后查詢相同的信息時用它予以回答。緩存域名服務器不是權威性服務器,因為提供的所有信息都是間接信息。
(4)轉發域名服務器:負責所有非本地域名的本地查詢。轉發域名服務器接到查詢請求時,在其緩存中查找,如找不到把請求依次轉發到指定的域名服務器,直到查詢到結果為止,否則返回無法映射的結果。
 
0x04 域名解析過程

 域名解析總體可分為一下過程:
(1) 輸入域名后, 先查找自己主機對應的域名服務器,域名服務器先查找自己的數據庫中的數據.
(2) 如果沒有, 就向上級域名服務器進行查找, 依次類推
(3) 最多回溯到根域名服務器, 肯定能找到這個域名的IP地址
(4) 域名服務器自身也會進行一些緩存, 把曾經訪問過的域名和對應的IP地址緩存起來, 可以加速查找過程 

具體過程可描述如下:
1. 主機先向本地域名服務器進行遞歸查詢
2. 本地域名服務器采用迭代查詢,向一個根域名服務器進行查詢
3. 根域名服務器告訴本地域名服務器,下一次應該查詢的頂級域名服務器的IP地址
4. 本地域名服務器向頂級域名服務器進行查詢
5. 頂級域名服務器告訴本地域名服務器,下一步查詢權限服務器的IP地址
6. 本地域名服務器向權限服務器進行查詢
7. 權限服務器告訴本地域名服務器所查詢的主機的IP地址
8. 本地域名服務器最后把查詢結果告訴主機

上文我們提出了兩個概念:遞歸查詢和迭代查詢
(1)遞歸查詢:本機向本地域名服務器發出一次查詢請求,就靜待最終的結果。如果本地域名服務器無法解析,自己會以DNS客戶機的身份向其它域名服務器查詢,直到得到最終的IP地址告訴本機
(2)迭代查詢:本地域名服務器向根域名服務器查詢,根域名服務器告訴它下一步到哪里去查詢,然后它再去查,每次它都是以客戶機的身份去各個服務器查詢。

通俗地說,遞歸就是把一件事情交給別人,如果事情沒有辦完,哪怕已經辦了很多,都不要把結果告訴我,我要的是你的最終結果,而不是中間結果;如果你沒辦完,請你找別人辦完。
迭代則是我交給你一件事,你能辦多少就告訴我你辦了多少,然后剩下的事情就由我來辦。

下面采用了Amazon的例子

  1. 用戶打開 Web 瀏覽器,在地址欄中輸入 www.example.com,然后按 Enter 鍵。
  2. www.example.com 的請求被路由到 DNS 解析程序(即本地DNS服務器),這一般由用戶的 Internet 服務提供商 (ISP) 進行管理,例如有線 Internet 服務提供商、DSL 寬帶提供商或公司網絡。
  3. ISP 的 DNS 解析程序將 www.example.com 的請求轉發到 DNS 根名稱服務器。
  4. ISP 的 DNS 解析程序再次轉發 www.example.com 的請求,這次轉發到 .com 域的一個 TLD 名稱服務器。.com 域的名稱服務器使用與 example.com 域相關的四個 Amazon Route 53 名稱服務器的名稱來響應該請求。
  5. ISP 的 DNS 解析程序選擇一個 Amazon Route 53 名稱服務器,並將 www.example.com 的請求轉發到該名稱服務器。
  6. Amazon Route 53 名稱服務器在 example.com 托管區域中查找 www.example.com 記錄,獲得相關值,例如,Web 服務器的 IP 地址 (192.0.2.44),並將 IP 地址返回至 DNS 解析程序。
  7. ISP 的 DNS 解析程序最終獲得用戶需要的 IP 地址。解析程序將此值返回至 Web 瀏覽器。DNS 解析程序還會將 example.com 的 IP 地址緩存 (存儲) 您指定的時長,以便它能夠在下次有人瀏覽 example.com 時更快地作出響應。有關更多信息,請參閱存活期 (TTL)。
  8. Web 瀏覽器將 www.example.com 的請求發送到從 DNS 解析程序中獲得的 IP 地址。這是您的內容所處位置,例如,在 Amazon EC2 實例中或配置為網站終端節點的 Amazon S3 存儲桶中運行的 Web 服務器。
  9. 192.0.2.44 上的 Web 服務器或其他資源將 www.example.com 的 Web 頁面返回到 Web 瀏覽器,且 Web 瀏覽器會顯示該頁面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM