dns解析过程_DNS原理总结及其解析过程
點擊上方藍(lán)色字體,關(guān)注我們
前言
域名系統(tǒng)(英語:Domain Name System,縮寫:DNS)是互聯(lián)網(wǎng)的一項服務(wù)。它作為將域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,使人更方便地訪問互聯(lián)網(wǎng)。DNS使用TCP和UDP端口53。當(dāng)前,對于每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符。
體系結(jié)構(gòu)
DNS 是一個分布式數(shù)據(jù)庫。它允許對整個數(shù)據(jù)庫的各個部分進(jìn)行本地控制;同時整個網(wǎng)絡(luò)也能通過?客戶-服務(wù)器?方式訪問每個部分的數(shù)據(jù),借助備份和緩存機制,DNS 將更強壯和足夠的性能。DNS 數(shù)據(jù)庫的結(jié)構(gòu)如圖1所示,就像一棵倒掛著的樹。
根域名服務(wù)器
根域名服務(wù)器(英語:root name server)是互聯(lián)網(wǎng)域名解析系統(tǒng)(DNS)中最高級別的域名服務(wù)器,負(fù)責(zé)返回頂級域的權(quán)威域名服務(wù)器地址。它們是互聯(lián)網(wǎng)基礎(chǔ)設(shè)施中的重要部分,因為所有域名解析操作均離不開它們。由于DNS和某些協(xié)議(未分片的用戶數(shù)據(jù)報協(xié)議(UDP)數(shù)據(jù)包在IPv4內(nèi)的最大有效大小為512字節(jié))的共同限制,根域名服務(wù)器地址的數(shù)量被限制為13個。幸運的是,采用任播技術(shù)架設(shè)鏡像服務(wù)器可解決該問題,并使得實際運行的根域名服務(wù)器數(shù)量大大增加。截至2017年11月,全球共有800臺根域名服務(wù)器在運行。| 12 | DNS 根域名服務(wù)器并不真的只有 13 臺,而是 13 個 IP,對應(yīng)了 A-M 13 個編號,借由任播(Anycast)技術(shù),編號相同的根服務(wù)器使用同一個IP(類似一個集群)。 |
頂級域
頂級域(或頂級域名;英語:Top-level Domain;英文縮寫:TLD)是互聯(lián)網(wǎng)DNS等級之中的最高級的域,它保存于DNS根域的名字空間中。頂級域名是域名的最后一個部分,即域名最后一點之后的字母,例如在example.com這個域名中,頂級域是.com(或.COM),大小寫視為相同。頂級域主要分4類:- 國家頂級域國家和地區(qū)頂級域名(Country code top-level domain,英語:ccTLD),簡稱國家頂級域,又譯國碼域名、頂級國碼域名、國碼頂級域名,或頂級國碼域名,是用兩字母的國家或地區(qū)名縮寫代稱的頂級域,其域名的指定及分配,政治因素考量凌駕在技術(shù)和商業(yè)因素之上。這些頂級域均由兩個字母組成,大部分使用?ISO 3166-1標(biāo)準(zhǔn)。
- 通用頂級域通用頂級域主要由.com、.info、.net及.org等域名組成。同時 .biz、.name及.pro亦可視作“通用”性質(zhì),但這些域名指定為“限制”級別,規(guī)定申請者須提供資格證明。
- 基礎(chǔ)建設(shè)頂級域.arpa,過去曾包括在“通用頂級域”內(nèi).arpa是互聯(lián)網(wǎng)域名系統(tǒng)上一個專門用于互聯(lián)網(wǎng)基礎(chǔ)設(shè)施配置的頂級域。其名稱最初是縮寫自高級研究計劃局(Advanced Research Projects Agency,ARPA),也就是現(xiàn)在互聯(lián)網(wǎng)的雛形網(wǎng)絡(luò)ARPANET的主管部門。現(xiàn)在其標(biāo)準(zhǔn)名稱對應(yīng)為“地址路由參數(shù)域(Address and Routing Parameter Area)”。直到2015年,它是IANA頂級域分類中的一個分類,基礎(chǔ)設(shè)施頂級域(infrastructure top-level domain)內(nèi)的唯一頂級域。現(xiàn)在其有兩個二級域名,“in-addr.arpa”和“ip6.arpa”,用于對應(yīng)IPv4和IPv6的DNS反向查詢功能。
- 測試頂級域例如繁體中文的http://例子.測試/及簡體的http://例子.測試/
區(qū)和域的不同
整個的域名空間可以根據(jù)組織劃分或管理分類,組織成一個樹狀結(jié)構(gòu)。樹上的每個節(jié)點叫做?domain(域),就是一個標(biāo)示。一個 domain 的名字就是從 root 開始,到當(dāng)前節(jié)點的所有 domain 標(biāo)志的集合。從書寫的結(jié)構(gòu)上看,就是從右到左依次用”.”來區(qū)分開。這樣域名的標(biāo)志才能夠唯一。而整個的域名空間被分成的多個區(qū)域,叫?zone。它開始于一個頂級 domain,一直到一個子 domain 或是其它 domain 的開始。zone 通常表示管理界限的劃分。實際上,zone 就是DNS 樹狀結(jié)構(gòu)上的一個標(biāo)識的點。一個 zone 包含了那些相鄰的域名樹結(jié)構(gòu)的部分,并具有此部分的全部信息,并且它是真正授權(quán)的。它包含了這個節(jié)點下的所有域名,但不包括其它域里已經(jīng)制定的。每個樹狀結(jié)構(gòu)里的節(jié)點,在上級域中都有一個或多個 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,可以指向其它的域名服務(wù)器。DNS 樹型結(jié)構(gòu)中的每個名字都是一個 domain,當(dāng)然它也可以是一個沒有子域的、最末端的節(jié)點。每個子域(subdomain)也是一個 domain,每個 domain 其實也是一個子域(subdomain),當(dāng)然最上面的 root 節(jié)點除外。域名服務(wù)器的類型
一個 DNS 服務(wù)器可以同時作為多個域的主域名服務(wù)器和輔域名服務(wù)器,也可以只作為主,或只作為輔,或者做任何域的授權(quán)服務(wù)器而只使用自己的 cache 來提供查詢解析。Master服務(wù)器也經(jīng)常叫做 primary,slave 服務(wù)器也經(jīng)常叫做 secondary。所有的服務(wù)器都會將數(shù)據(jù)保存在緩存(cache)中,直到針對這些數(shù)據(jù)的 TTL(Time To Live)值過期。主域名服務(wù)器
primary master server 是一個 domain 信息的最根本的來源。它是所有輔域名服務(wù)器進(jìn)行域傳輸?shù)脑础V饔蛎?wù)器是從本地硬盤文件中讀取域的數(shù)據(jù)的。輔域名服務(wù)器(次級域名服務(wù)器)
次級服務(wù)器(slave server或secondary server)使用一個叫做域轉(zhuǎn)輸?shù)膹?fù)制過程,調(diào)入其它服務(wù)器中域的內(nèi)容。通常情況下,數(shù)據(jù)是直接從主服務(wù)器上傳輸過來的,但也可能是從本地磁盤上的 cache 中讀到的。輔域名服務(wù)器可以提供必需的冗余服務(wù)。所有的輔域名服務(wù)器都應(yīng)該寫在這個域的 NS 記錄中。隱藏服務(wù)器(stealth server)
stealth server 可以針對一個域的查詢返回授權(quán)的記錄,但是它并沒有列在這個域的 NS記錄里。Stealth 服務(wù)器可以用來針對一個域進(jìn)行集中分發(fā),這樣可以不用在遠(yuǎn)程服務(wù)器上手工編輯這個域的信息了。在這種方式中,一個域的 master 文件在 stealth server 上存儲的位置,經(jīng)常叫做“hidden primary”配置。Stealth 服務(wù)器也可以將域文件在本地做一個拷貝,從而可以在所有官方的域名服務(wù)器都不能訪問的情況下,也能更快地讀取域的記錄。高速緩存域名服務(wù)器(caching only server)
緩存服務(wù)器可以將它收到的信息存儲下來,并再將其提供給其它的用戶進(jìn)行查詢,直到這些信息過期。它的配置中沒有任何本地的授權(quán)域的配置信息。它可以響應(yīng)用戶的請求,并詢問其它授權(quán)的域名服務(wù)器,從而得到回答用戶請求的信息。轉(zhuǎn)發(fā)服務(wù)器(forwarding server)
一臺緩存名服務(wù)器本身不能進(jìn)行完全的遞歸查詢。相反,它能從緩存向其它的緩存服務(wù)器轉(zhuǎn)發(fā)一部分或是所有不能滿足的查詢,一般被稱作轉(zhuǎn)發(fā)服務(wù)器。可能會有一個或多個轉(zhuǎn)發(fā)服務(wù)器,它們會按照順序進(jìn)行請求,直到全部窮盡或者請求得到回答為止。轉(zhuǎn)發(fā)服務(wù)器一般用于用戶不希望站點內(nèi)的服務(wù)器直接和外部服務(wù)器通訊的情況下。一個特定的情形是許多 DNS 服務(wù)器和一個網(wǎng)絡(luò)防火墻。服務(wù)器不能透過防火墻傳送信息,它就會轉(zhuǎn)發(fā)給可以傳送信息的服務(wù)器,那臺服務(wù)器就會代表內(nèi)部服務(wù)器詢問因特網(wǎng) DNS 服務(wù)器。使用轉(zhuǎn)發(fā)功能的另一個好處是中心服務(wù)器得到了所有用戶都可以利用的更加完全的信息緩沖。解析過程
域名解析總體可分為兩大步驟:- 遞歸查詢:本機向本地域名服務(wù)器發(fā)出一次查詢請求,就靜待最終的結(jié)果。如果本地域名服務(wù)器無法解析,自己會以DNS客戶機的身份向其它域名服務(wù)器查詢,直到得到最終的IP地址告訴本機。
- 迭代查詢:本地域名服務(wù)器向根域名服務(wù)器查詢,根域名服務(wù)器告訴它下一步到哪里去查詢,然后它再去查,每次它都是以客戶機的身份去各個服務(wù)器查詢。
| 1 | $ dig alibaba.com |
- 第一行為dig的版本信息和需要解析的域名。
- 第二行為dig設(shè)置的全局選項。前兩行輸出可以通過使用+nocmd選項來消除,但前提是它是命令行上的第一個參數(shù)(甚至在您查詢的主機之前)。
- 第三行表示已經(jīng)獲取到結(jié)果(無論是否解析到)。
- 第四行和第五行為獲取結(jié)果中的簡略信息
- opcode ,status 和 會話標(biāo)識
- flags、query數(shù)、answer數(shù)、authority數(shù)、additional數(shù)
DNS報文格式
報文頭
會話標(biāo)識:DNS報文的ID標(biāo)識,對于請求報文和其對應(yīng)的應(yīng)答報文,這個字段是相同的,通過它可以區(qū)分DNS應(yīng)答報文是哪個請求的響應(yīng)標(biāo)志:標(biāo)志位總長 16 個位,也就是兩個字符。有相應(yīng)值的位標(biāo)記為 1 ,沒有的則標(biāo)記為 0 。最后這 16 個二進(jìn)制的位通過進(jìn)制轉(zhuǎn)換即可變成十六進(jìn)制的- QR 1bit
- 0?為客戶端請求包
- 1?為服務(wù)器響應(yīng)包
- Opcode 4bits
- 0000?為普通的 DNS 請求
- 0001?為 rDNS 請求
- 0002?為服務(wù)器狀態(tài)
- 0003?無
- 0004?為通知 (Notify)
- 0005?為更新 (Update)
- 0006 - 0015?保留
- AA 1bit
- 0?為應(yīng)答服務(wù)器不是該域名的權(quán)威解析服務(wù)器
- 1?為應(yīng)答服務(wù)器是該域名的權(quán)威解析服務(wù)器
- TC 1bit
- 0?為報文未截斷
- 1?為報文過長被截斷 (只返回了前 512 個字節(jié))
- RD 1bit
- 0?為不期望進(jìn)行遞歸查詢
- 1?為期望進(jìn)行遞歸查詢 (從域名服務(wù)器進(jìn)行遞歸查詢)
- RA 1bit
- 0?為應(yīng)答服務(wù)器不支持遞歸查詢
- 1?為應(yīng)答服務(wù)器支持遞歸查詢
- Z 1bit保留位
- AD 1bit
- 0?為應(yīng)答服務(wù)器未驗證了該查詢相關(guān)的 DNSSEC 數(shù)字簽名
- 1?為應(yīng)答服務(wù)器已經(jīng)驗證了該查詢相關(guān)的 DNSSEC 數(shù)字簽名
- CD 1bit
- 0?為服務(wù)器已經(jīng)進(jìn)行了相關(guān) DNSSEC 數(shù)字簽名的驗證
- 1?為服務(wù)器并未進(jìn)行相關(guān) DNSSEC 數(shù)字簽名的驗證
- Rcode 4bits十進(jìn)制
- 0000?為正常
- 0001?為格式錯誤 (NS 無法解析這個請求)
- 0002?為服務(wù)器錯誤 (NS 有問題所以無法進(jìn)行這個請求)
- 0003?為名稱錯誤 (請求中的地址并不存在)
- 0004?為未實施查詢 (NS 服務(wù)器不支持這種查詢)
- 0005?為拒絕 (由于策略原因拒絕執(zhí)行這個錯誤)
- 0006?為域名出現(xiàn)了但是它不該出現(xiàn)
- 0007?為集合 RR 存在但是他不該存在
- 0008?為集合 RR 不存在但是他應(yīng)該存在
- 0009?為服務(wù)器并不是這個區(qū)域的權(quán)威服務(wù)器
- 0010?為該名稱并不包含在區(qū)域中
- 0011 - 0015?保留
- 0016?為錯誤的 OPT 版本或者 TSIG 簽名無效
- 0017?為無法識別的密鑰
- 0018?為簽名不在時間范圍內(nèi)
- 0019?為錯誤的 TKEY 模式
- 0020?為重復(fù)的密鑰名稱
- 0021?為該算法不支持
- 0022?為錯誤的截斷
- 0023 - 3840?保留
- 3841 - 4095?私人使用
- 4096 - 65534?保留
- 65535?RFC 6195
數(shù)量字段:
Questions、Answer RRs、Authority RRs、Additional RRs 各自表示后面的四個區(qū)域的數(shù)目。Questions表示查詢問題區(qū)域節(jié)的數(shù)量,Answers表示回答區(qū)域的數(shù)量,Authoritative namesversers表示授權(quán)區(qū)域的數(shù)量,Additional recoreds表示附加區(qū)域的數(shù)量。RECORD域
Queries域
查詢名長度不固定,且不使用填充字節(jié),一般該字段表示的就是需要查詢的域名(如果是反向查詢,則為IP,反向查詢即由IP地址反查域名),一般的格式如下圖所示。查詢類型:
| 1 | A | 由域名獲得IPv4地址 |
| 2 | NS | 查詢域名服務(wù)器 |
| 5 | CNAME | 查詢規(guī)范名稱 |
| 6 | SOA | 開始授權(quán) |
| 11 | WKS | 熟知服務(wù) |
| 12 | PTR | 把IP地址轉(zhuǎn)換成域名 |
| 13 | HINFO | 主機信息 |
| 15 | MX | 郵件交換 |
| 28 | AAAA | 由域名獲得IPv6地址 |
| 252 | AXFR | 傳送整個區(qū)的請求 |
| 255 | ANY | 對所有記錄的請求 |
查詢類
定義有下述?CLASS?助記符和值:
| IN | 1 | the Internet/互聯(lián)網(wǎng) | |
| CS | 2 | the CSNET class/CSNET 類 | 被廢棄,僅在某些被廢棄的 RFCs 中用于舉例 |
| CH | 3 | the CHAOS class/CHAOS 類 | |
| HS | 4 | Hesiod [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),例如,這個資源記錄匹配的節(jié)點的名稱 |
| TYPE | 包含 RR TYPE 代碼之一的 2 個八位字節(jié)(octets) |
| CLASS | 包含 RR CLASS 代碼之一的 2 個八位字節(jié)(octets) |
| TTL | 32位有符號整數(shù),指定在再次咨詢信息源之前此資源記錄可以被緩存的時間間隔。零值被解釋為該 RR 僅能用于正在進(jìn)行的流程,不應(yīng)當(dāng)被緩存。例如,總是將零 TTL 分配給 SOA 記錄,以便禁止緩存。零值也可以用于極短暫的數(shù)據(jù)。 |
| RDLENGTH | 無符號 16 位整數(shù),指定以八位字節(jié)計的 RDATA 字段的長度。 |
| RDATA | 可變長度的八位字節(jié)字符串,用來描述資源。這個信息的格式取決于資源記錄的 TYPE 和 CLASS 。 |
TYPE 值域
TYPE 字段用于資源記錄。注意,這些類型是 QTYPE 的子集。
| A | 1 | a host address/主機地址 | |
| NS | 2 | an authoritative name server/權(quán)威名稱服務(wù)器 | |
| MD | 3 | a mail destination/郵件目的地 | 被廢棄,使用 MX |
| MF | 4 | a mail forwarder/郵件轉(zhuǎn)發(fā)器 | 被廢棄,使用 MX |
| CNAME | 5 | the canonical name for an alias/別名的正則名稱 | |
| SOA | 6 | a marks the start of a zone of authority/標(biāo)記權(quán)威區(qū)域的開始 | |
| MB | 7 | a mailbox domain name/郵箱域名 | EXPERIMENTAL |
| MG | 8 | a mail group member/郵件組成員 | EXPERIMENTAL |
| MR | 9 | a mail rename domain name/郵件重新命名域名 | EXPERIMENTAL |
| NULL | 10 | a null RR | EXPERIMENTAL |
| WKS | 11 | a well known service description/眾所周知的服務(wù)描述 | |
| PTR | 12 | a domain name pointer/域名指針 | |
| HINFO | 13 | host information/主機信息 | |
| MINFO | 14 | mailbox or mail list information/郵箱或郵件列表信息 | |
| MX | 15 | mail exchange/郵件交換 | |
| TXT | 16 | text strings/文本字符串 | |
| SRV | 33 | service and protocol/服務(wù)和協(xié)議 | 在rfc2052中引入 |
| AXFR | 252 | A request for a transfer of an entire zone/請求傳送整個區(qū)域 | |
| MAILB | 253 | A request for mailbox-related records (MB, MG or MR)/請求相關(guān)郵箱記錄(MB、MG 或 MR) | |
| MAILA | 254 | A request for mail agent RRs/請求郵件代理 RR | 被廢棄,參閱 MX |
| * | 255 | A request for all records/請求所有記錄 |
| 123456 | 0 類型0用作SIG RR的特殊指示器。在其他情況下,不得分配普通用途1 - 127 此范圍內(nèi)的剩余TYPE由IETF Consensus分配給數(shù)據(jù)類型128 - 255 此范圍內(nèi)的剩余TYPE由IETF共識分配給Q和Meta TYPE256 - 32767 由IETF共識分配給 Q或Meta TYPE32768 - 65279 所需規(guī)范見[RFC 2434]65280 - 65535 私人使用 |
OPT(OPTion)RR,編號41,在[RFC 2671]中規(guī)定。其主要目的是擴展各種DNS字段的有效字段大小,包括RCODE,標(biāo)簽類型,標(biāo)志位和RDATA大小。特別是,對于識別它的解析器和服務(wù)器,它將RCODE字段從4位擴展到12位。
QCLASS 值域QCLASS 字段出現(xiàn)在查詢的 question 部分。QCLASS 值是 CLASS 值的超集;每一個 CLASS 都是合法的 CLASS。除了 CLASS 值以外,定義有下述 QCLASS:| * | 255 | any class/任何類 |
報文示例
請求報文
請求報文中主要Queries域比較主要,標(biāo)識此請求的目的。
回應(yīng)報文
回應(yīng)報文比請求報文多了三個域:- Answers對請求的回應(yīng)。此報文回應(yīng)兩條A記錄。
- Authoritative nameservers域名所屬的NS。此報文表明alibaba.com有兩條NS。
- Additional recordsNS對應(yīng)的記錄。此報文表明Authoritative nameservers中的NS有4條A記錄(每個NS兩條)。
診斷工具
dig(Domain Information Groper)域信息搜索器(dig)是一種用于從域名系統(tǒng)服務(wù)器那里收集信息的命令行工具。搜索有兩種模式:針對一條請求的簡單交互式模式和執(zhí)行多查詢的批模式。所有的查詢選項都可以通過命令行上來完成。| 12 | dig [@服務(wù)器]域[查詢-類型] [查詢-類 [+查詢-選項] [-dig-選項] [%注釋] |
| 1 | dig @服務(wù)器 域 查詢類型 查詢類 (dig @server domain query-type query-class) |
host
Host功能利用一個命令行界面,提供查詢因特網(wǎng)主機名的功能。在默認(rèn)狀態(tài)下,他只將對主機名和IP地址進(jìn)行轉(zhuǎn)換,但是此項功能可以通過選項的使用得到拓展。
| 1 | host [-aCdlrTwv] [-c class] [-N ndots] [-t type] [-W timeout] [-R retries] hostname [server] |
| 1 | nslookup [-option…][host-to -find]-[server] |
總結(jié)
以上是生活随笔為你收集整理的dns解析过程_DNS原理总结及其解析过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dnf剑魂buff等级上限_DNF:传说
- 下一篇: directplay需要安装吗_燃气报警