日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dns解析过程_DNS原理总结及其解析过程

發布時間:2024/9/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dns解析过程_DNS原理总结及其解析过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方藍色字體,關注我們

前言

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

體系結構

DNS 是一個分布式數據庫。它允許對整個數據庫的各個部分進行本地控制;同時整個網絡也能通過?客戶-服務器?方式訪問每個部分的數據,借助備份和緩存機制,DNS 將更強壯和足夠的性能。
DNS 數據庫的結構如圖1所示,就像一棵倒掛著的樹。

根域名服務器

根域名服務器(英語:root name server)是互聯網域名解析系統(DNS)中最高級別的域名服務器,負責返回頂級域的權威域名服務器地址。它們是互聯網基礎設施中的重要部分,因為所有域名解析操作均離不開它們。由于DNS和某些協議(未分片的用戶數據報協議(UDP)數據包在IPv4內的最大有效大小為512字節)的共同限制,根域名服務器地址的數量被限制為13個。幸運的是,采用任播技術架設鏡像服務器可解決該問題,并使得實際運行的根域名服務器數量大大增加。截至2017年11月,全球共有800臺根域名服務器在運行。
12DNS 根域名服務器并不真的只有 13 臺,而是 13 個 IP,對應了 A-M 13 個編號,借由任播(Anycast)技術,編號相同的根服務器使用同一個IP(類似一個集群)。

頂級域

頂級域(或頂級域名;英語:Top-level Domain;英文縮寫:TLD)是互聯網DNS等級之中的最高級的域,它保存于DNS根域的名字空間中。頂級域名是域名的最后一個部分,即域名最后一點之后的字母,例如在example.com這個域名中,頂級域是.com(或.COM),大小寫視為相同。頂級域主要分4類:
  • 國家頂級域國家和地區頂級域名(Country code top-level domain,英語:ccTLD),簡稱國家頂級域,又譯國碼域名、頂級國碼域名、國碼頂級域名,或頂級國碼域名,是用兩字母的國家或地區名縮寫代稱的頂級域,其域名的指定及分配,政治因素考量凌駕在技術和商業因素之上。這些頂級域均由兩個字母組成,大部分使用?ISO 3166-1標準。
  • 通用頂級域通用頂級域主要由.com、.info、.net及.org等域名組成。同時 .biz、.name及.pro亦可視作“通用”性質,但這些域名指定為“限制”級別,規定申請者須提供資格證明。
  • 基礎建設頂級域.arpa,過去曾包括在“通用頂級域”內.arpa是互聯網域名系統上一個專門用于互聯網基礎設施配置的頂級域。其名稱最初是縮寫自高級研究計劃局(Advanced Research Projects Agency,ARPA),也就是現在互聯網的雛形網絡ARPANET的主管部門。現在其標準名稱對應為“地址路由參數域(Address and Routing Parameter Area)”。直到2015年,它是IANA頂級域分類中的一個分類,基礎設施頂級域(infrastructure top-level domain)內的唯一頂級域。現在其有兩個二級域名,“in-addr.arpa”和“ip6.arpa”,用于對應IPv4和IPv6的DNS反向查詢功能。
  • 測試頂級域例如繁體中文的http://例子.測試/及簡體的http://例子.測試/
DNS 的分布式數據庫是以域名為索引的,每個域名實際上就是一棵很大的逆向樹中路徑,這棵逆向樹稱為域名空間(domain name space)。如圖1所示,樹的最大深度不得超過 127 層,樹中每個節點都有一個可以長達 63 個字符的文本標號。

區和域的不同

整個的域名空間可以根據組織劃分或管理分類,組織成一個樹狀結構。樹上的每個節點叫做?domain(域),就是一個標示。一個 domain 的名字就是從 root 開始,到當前節點的所有 domain 標志的集合。從書寫的結構上看,就是從右到左依次用”.”來區分開。這樣域名的標志才能夠唯一。而整個的域名空間被分成的多個區域,叫?zone。它開始于一個頂級 domain,一直到一個子 domain 或是其它 domain 的開始。zone 通常表示管理界限的劃分。實際上,zone 就是DNS 樹狀結構上的一個標識的點。一個 zone 包含了那些相鄰的域名樹結構的部分,并具有此部分的全部信息,并且它是真正授權的。它包含了這個節點下的所有域名,但不包括其它域里已經制定的。每個樹狀結構里的節點,在上級域中都有一個或多個 NS 記錄。它們是和這個域中的 NS 記錄相同的。例如,有一個 domain 叫 example.com,它可以包含 host.aaa.example.com 和host.bbb.example.com 這些名字,但是它的 zone 文件中卻只有 2 個 zone 的記錄aaa.example.com 和 bbb.example.com。zone 就是一個一級的 domain,也可以是一個多級domain 的一部分。這個 domain 中的其它 zone,可以指向其它的域名服務器。DNS 樹型結構中的每個名字都是一個 domain,當然它也可以是一個沒有子域的、最末端的節點。每個子域(subdomain)也是一個 domain,每個 domain 其實也是一個子域(subdomain),當然最上面的 root 節點除外。

域名服務器的類型

一個 DNS 服務器可以同時作為多個域的主域名服務器輔域名服務器,也可以只作為主,或只作為輔,或者做任何域的授權服務器而只使用自己的 cache 來提供查詢解析。Master服務器也經常叫做 primary,slave 服務器也經常叫做 secondary。所有的服務器都會將數據保存在緩存(cache)中,直到針對這些數據的 TTL(Time To Live)值過期。

主域名服務器

primary master server 是一個 domain 信息的最根本的來源。它是所有輔域名服務器進行域傳輸的源。主域名服務器是從本地硬盤文件中讀取域的數據的。

輔域名服務器(次級域名服務器)

次級服務器(slave server或secondary server)使用一個叫做域轉輸的復制過程,調入其它服務器中域的內容。通常情況下,數據是直接從主服務器上傳輸過來的,但也可能是從本地磁盤上的 cache 中讀到的。輔域名服務器可以提供必需的冗余服務。所有的輔域名服務器都應該寫在這個域的 NS 記錄中。

隱藏服務器(stealth server)

stealth server 可以針對一個域的查詢返回授權的記錄,但是它并沒有列在這個域的 NS記錄里。Stealth 服務器可以用來針對一個域進行集中分發,這樣可以不用在遠程服務器上手工編輯這個域的信息了。在這種方式中,一個域的 master 文件在 stealth server 上存儲的位置,經常叫做“hidden primary”配置。Stealth 服務器也可以將域文件在本地做一個拷貝,從而可以在所有官方的域名服務器都不能訪問的情況下,也能更快地讀取域的記錄。

高速緩存域名服務器(caching only server)

緩存服務器可以將它收到的信息存儲下來,并再將其提供給其它的用戶進行查詢,直到這些信息過期。它的配置中沒有任何本地的授權域的配置信息。它可以響應用戶的請求,并詢問其它授權的域名服務器,從而得到回答用戶請求的信息。

轉發服務器(forwarding server)

一臺緩存名服務器本身不能進行完全的遞歸查詢。相反,它能從緩存向其它的緩存服務器轉發一部分或是所有不能滿足的查詢,一般被稱作轉發服務器。可能會有一個或多個轉發服務器,它們會按照順序進行請求,直到全部窮盡或者請求得到回答為止。轉發服務器一般用于用戶不希望站點內的服務器直接和外部服務器通訊的情況下。一個特定的情形是許多 DNS 服務器和一個網絡防火墻。服務器不能透過防火墻傳送信息,它就會轉發給可以傳送信息的服務器,那臺服務器就會代表內部服務器詢問因特網 DNS 服務器。使用轉發功能的另一個好處是中心服務器得到了所有用戶都可以利用的更加完全的信息緩沖。

解析過程

域名解析總體可分為兩大步驟:
  • 本機向本地域名服務器發出一個DNS請求報文,報文里攜帶需要查詢的域名;
  • 本地域名服務器向本機回應一個DNS響應報文,里面包含域名對應的IP地址。而此步又包含了很多小的步驟。
  • 本地服務器向上解析的時候,有兩個不同的行為需要注意:
    • 遞歸查詢:本機向本地域名服務器發出一次查詢請求,就靜待最終的結果。如果本地域名服務器無法解析,自己會以DNS客戶機的身份向其它域名服務器查詢,直到得到最終的IP地址告訴本機。
    • 迭代查詢:本地域名服務器向根域名服務器查詢,根域名服務器告訴它下一步到哪里去查詢,然后它再去查,每次它都是以客戶機的身份去各個服務器查詢。
    以dig解析 alibaba.com為例(更詳細的過程可以加+trace。)
    1$ dig alibaba.com

    此解析過程包含六段信息:第一段包含 請求和回應的簡略信息

    • 第一行為dig的版本信息和需要解析的域名。
    • 第二行為dig設置的全局選項。前兩行輸出可以通過使用+nocmd選項來消除,但前提是它是命令行上的第一個參數(甚至在您查詢的主機之前)。
    • 第三行表示已經獲取到結果(無論是否解析到)。
    • 第四行和第五行為獲取結果中的簡略信息
      • opcode ,status 和 會話標識
      • flags、query數、answer數、authority數、additional數
    第二段為請求時的附加域和Queries域信息

    第三段為回應時的回應域alibaba.com.為需要解析的域名300為此記錄的TTLIN為此記錄的CLASSA為此記錄的類型106.11.208.151和?106.11.223.101為此域名對應的IP

    第四段為回應時的授權域表明alibaba.com此域名所屬的域名服務器

    第五段為回應時的附加域表明域名服務器的A記錄

    第六段是DNS服務器的一些傳輸信息第一行為解析花費的時間第二行為本地域名服務器及端口號第四行為信息長度:UDP length - UDP header length

    DNS報文格式

    報文頭

    會話標識:DNS報文的ID標識,對于請求報文和其對應的應答報文,這個字段是相同的,通過它可以區分DNS應答報文是哪個請求的響應標志:標志位總長 16 個位,也就是兩個字符。有相應值的位標記為 1 ,沒有的則標記為 0 。最后這 16 個二進制的位通過進制轉換即可變成十六進制的
    • QR 1bit
      • 0?為客戶端請求包
      • 1?為服務器響應包
    • Opcode 4bits
      • 0000?為普通的 DNS 請求
      • 0001?為 rDNS 請求
      • 0002?為服務器狀態
      • 0003?無
      • 0004?為通知 (Notify)
      • 0005?為更新 (Update)
    • 0006 - 0015?保留
    • AA 1bit
      • 0?為應答服務器不是該域名的權威解析服務器
      • 1?為應答服務器是該域名的權威解析服務器
    • TC 1bit
      • 0?為報文未截斷
      • 1?為報文過長被截斷 (只返回了前 512 個字節)
    • RD 1bit
      • 0?為不期望進行遞歸查詢
      • 1?為期望進行遞歸查詢 (從域名服務器進行遞歸查詢)
    • RA 1bit
      • 0?為應答服務器不支持遞歸查詢
      • 1?為應答服務器支持遞歸查詢
    • Z 1bit保留位
    • AD 1bit
      • 0?為應答服務器未驗證了該查詢相關的 DNSSEC 數字簽名
      • 1?為應答服務器已經驗證了該查詢相關的 DNSSEC 數字簽名
    • CD 1bit
      • 0?為服務器已經進行了相關 DNSSEC 數字簽名的驗證
      • 1?為服務器并未進行相關 DNSSEC 數字簽名的驗證
    • Rcode 4bits十進制
      • 0000?為正常
      • 0001?為格式錯誤 (NS 無法解析這個請求)
      • 0002?為服務器錯誤 (NS 有問題所以無法進行這個請求)
      • 0003?為名稱錯誤 (請求中的地址并不存在)
      • 0004?為未實施查詢 (NS 服務器不支持這種查詢)
      • 0005?為拒絕 (由于策略原因拒絕執行這個錯誤)
      • 0006?為域名出現了但是它不該出現
      • 0007?為集合 RR 存在但是他不該存在
      • 0008?為集合 RR 不存在但是他應該存在
      • 0009?為服務器并不是這個區域的權威服務器
      • 0010?為該名稱并不包含在區域中
      • 0011 - 0015?保留
      • 0016?為錯誤的 OPT 版本或者 TSIG 簽名無效
      • 0017?為無法識別的密鑰
      • 0018?為簽名不在時間范圍內
      • 0019?為錯誤的 TKEY 模式
      • 0020?為重復的密鑰名稱
      • 0021?為該算法不支持
      • 0022?為錯誤的截斷
      • 0023 - 3840?保留
      • 3841 - 4095?私人使用
      • 4096 - 65534?保留
      • 65535?RFC 6195

    數量字段:

    Questions、Answer RRs、Authority RRs、Additional RRs 各自表示后面的四個區域的數目。Questions表示查詢問題區域節的數量,Answers表示回答區域的數量,Authoritative namesversers表示授權區域的數量,Additional recoreds表示附加區域的數量。

    RECORD域

    Queries域

    查詢名長度不固定,且不使用填充字節,一般該字段表示的就是需要查詢的域名(如果是反向查詢,則為IP,反向查詢即由IP地址反查域名),一般的格式如下圖所示。

    查詢類型:

    類型助記符說明
    1A由域名獲得IPv4地址
    2NS查詢域名服務器
    5CNAME查詢規范名稱
    6SOA開始授權
    11WKS熟知服務
    12PTR把IP地址轉換成域名
    13HINFO主機信息
    15MX郵件交換
    28AAAA由域名獲得IPv6地址
    252AXFR傳送整個區的請求
    255ANY

    對所有記錄的請求

    查詢類

    定義有下述?CLASS?助記符和值:

    助記符值含義備注
    IN1the Internet/互聯網
    CS2the CSNET class/CSNET 類被廢棄,僅在某些被廢棄的 RFCs 中用于舉例
    CH3the CHAOS class/CHAOS 類
    HS4Hesiod [Dyer 87]

    備注:CHAOS 和 Hesiod 請參考?DNS classes

    DNS Resource Records

    RR的定義來自 rfc1035 中 3.2 RR definitions。所有的RR都有如下所示的相同的頂層格式:

    1234567891011121314151617181920 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| |/ // NAME /| |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| TYPE |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| CLASS |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| TTL || |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| RDLENGTH |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|/ RDATA // /+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    字段格式和描述
    NAME所有者名稱(owner name),例如,這個資源記錄匹配的節點的名稱
    TYPE包含 RR TYPE 代碼之一的 2 個八位字節(octets)
    CLASS包含 RR CLASS 代碼之一的 2 個八位字節(octets)
    TTL32位有符號整數,指定在再次咨詢信息源之前此資源記錄可以被緩存的時間間隔。零值被解釋為該 RR 僅能用于正在進行的流程,不應當被緩存。例如,總是將零 TTL 分配給 SOA 記錄,以便禁止緩存。零值也可以用于極短暫的數據。
    RDLENGTH無符號 16 位整數,指定以八位字節計的 RDATA 字段的長度。
    RDATA可變長度的八位字節字符串,用來描述資源。這個信息的格式取決于資源記錄的 TYPE 和 CLASS 。

    TYPE 值域

    TYPE 字段用于資源記錄。注意,這些類型是 QTYPE 的子集。

    TYPE值含義備注
    A1a host address/主機地址
    NS2an authoritative name server/權威名稱服務器
    MD3a mail destination/郵件目的地被廢棄,使用 MX
    MF4a mail forwarder/郵件轉發器被廢棄,使用 MX
    CNAME5the canonical name for an alias/別名的正則名稱
    SOA6a marks the start of a zone of authority/標記權威區域的開始
    MB7a mailbox domain name/郵箱域名EXPERIMENTAL
    MG8a mail group member/郵件組成員EXPERIMENTAL
    MR9a mail rename domain name/郵件重新命名域名EXPERIMENTAL
    NULL10a null RREXPERIMENTAL
    WKS11a well known service description/眾所周知的服務描述
    PTR12a domain name pointer/域名指針
    HINFO13host information/主機信息
    MINFO14mailbox or mail list information/郵箱或郵件列表信息
    MX15mail exchange/郵件交換
    TXT16text strings/文本字符串
    SRV33service and protocol/服務和協議在rfc2052中引入
    QTYPE 值域QTYPE 字段出現在查詢的 question 部分。QTYPE 是 TYPE 的超集,因此所有 TYPE 是合 法的 QTYPE。此外,定義有下述 QTYPE:QTYPE值含義備注
    AXFR252A request for a transfer of an entire zone/請求傳送整個區域
    MAILB253A request for mailbox-related records (MB, MG or MR)/請求相關郵箱記錄(MB、MG 或 MR)
    MAILA254A request for mail agent RRs/請求郵件代理 RR被廢棄,參閱 MX
    *255A request for all records/請求所有記錄
    1234560 類型0用作SIG RR的特殊指示器。在其他情況下,不得分配普通用途1 - 127 此范圍內的剩余TYPE由IETF Consensus分配給數據類型128 - 255 此范圍內的剩余TYPE由IETF共識分配給Q和Meta TYPE256 - 32767 由IETF共識分配給 Q或Meta TYPE32768 - 65279 所需規范見[RFC 2434]65280 - 65535 私人使用

    OPT(OPTion)RR,編號41,在[RFC 2671]中規定。其主要目的是擴展各種DNS字段的有效字段大小,包括RCODE,標簽類型,標志位和RDATA大小。特別是,對于識別它的解析器和服務器,它將RCODE字段從4位擴展到12位。

    QCLASS 值域QCLASS 字段出現在查詢的 question 部分。QCLASS 值是 CLASS 值的超集;每一個 CLASS 都是合法的 CLASS。除了 CLASS 值以外,定義有下述 QCLASS:QCLASS值含義備注
    *255any class/任何類

    報文示例

    請求報文

    請求報文中主要Queries域比較主要,標識此請求的目的。

    回應報文

    回應報文比請求報文多了三個域:
    • Answers對請求的回應。此報文回應兩條A記錄。
    • Authoritative nameservers域名所屬的NS。此報文表明alibaba.com有兩條NS。
    • Additional recordsNS對應的記錄。此報文表明Authoritative nameservers中的NS有4條A記錄(每個NS兩條)。

    診斷工具

    dig(Domain Information Groper)域信息搜索器(dig)是一種用于從域名系統服務器那里收集信息的命令行工具。搜索有兩種模式:針對一條請求的簡單交互式模式和執行多查詢的批模式。所有的查詢選項都可以通過命令行上來完成。
    12dig [@服務器]域[查詢-類型] [查詢-類 [+查詢-選項] [-dig-選項] [%注釋]
    通常采用以下形式:
    1dig @服務器 域 查詢類型 查詢類 (dig @server domain query-type query-class)

    host

    Host功能利用一個命令行界面,提供查詢因特網主機名的功能。在默認狀態下,他只將對主機名和IP地址進行轉換,但是此項功能可以通過選項的使用得到拓展。

    1host [-aCdlrTwv] [-c class] [-N ndots] [-t type] [-W timeout] [-R retries] hostname [server]
    Nslookup是一個向因特網域名服務器發送請求的程序。Nslookup有兩種模式:交互式和非交互式。交互式允許向名服務器查詢多個主機和域或者打印出在一個域中的主機列表。非交互式模式用來顯示一個主機或域的名字或被請求的信息。
    1nslookup [-option…][host-to -find]-[server]
    當不使用參數(使用缺省的域名服務器),或第一個參數是”-”且第二個參數是一臺DNS的主機名或IP地址話,nslookup就會進入交互模式。非交互模式是在第一個參數為要查詢的域名或IP地址時進入的。也可以配置第二個參數,來選定請求發送的域名服務器。由于神秘的用戶界面和經常性的不一致行為,不建議使用 nsloopup,而應使用dig。使用maven構建的工程的實踐心得Java 線程同步(Synchronized)Java垃圾收集器一網打盡, ZGC 和 Shenandoah 聽說過嗎動圖幫你理解【Java垃圾收集機制】一文搞懂 JVM 架構和運行時數據區 (內存區域)為什么你的 Spring Task 定時任務沒有定時執行?搞java開發,看懂JVM的GC日志真的很重要一次容器化springboot程序OOM問題探險Java 應用性能調優的一些實踐可視化界面在線生成JVM參數我就知道你“在看”

    總結

    以上是生活随笔為你收集整理的dns解析过程_DNS原理总结及其解析过程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。