偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

萬(wàn)字長(zhǎng)文爆肝 DNS 協(xié)議!

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
試想一個(gè)問(wèn)題,我們?nèi)祟惪梢杂卸嗌俜N識(shí)別自己的方式?可以通過(guò)身份證來(lái)識(shí)別,可以通過(guò)社??ㄌ?hào)來(lái)識(shí)別,也可以通過(guò)駕駛證來(lái)識(shí)別,盡管我們有多種識(shí)別方式,但在特定的環(huán)境下,某種識(shí)別方法可能比另一種方法更為適合。

[[376851]]

試想一個(gè)問(wèn)題,我們?nèi)祟惪梢杂卸嗌俜N識(shí)別自己的方式?可以通過(guò)身份證來(lái)識(shí)別,可以通過(guò)社保卡號(hào)來(lái)識(shí)別,也可以通過(guò)駕駛證來(lái)識(shí)別,盡管我們有多種識(shí)別方式,但在特定的環(huán)境下,某種識(shí)別方法可能比另一種方法更為適合。因特網(wǎng)上的主機(jī)和人類一樣,可以使用多種識(shí)別方式進(jìn)行標(biāo)識(shí)?;ヂ?lián)網(wǎng)上主機(jī)的一種標(biāo)識(shí)方法是使用它的 主機(jī)名(hostname) ,如 www.facebook.com、 www.google.com 等。但是這是我們?nèi)祟惖挠洃浄绞?,路由器不?huì)這么理解,路由器喜歡定長(zhǎng)的、有層次結(jié)構(gòu)的 IP地址。

IP 地址現(xiàn)在簡(jiǎn)單表述一下,就是一個(gè)由 4 字節(jié)組成,并有著嚴(yán)格的層次結(jié)構(gòu)。例如 121.7.106.83 這樣一個(gè) IP 地址,其中的每個(gè)字節(jié)都可以用 . 進(jìn)行分割,表示了 0 - 255 的十進(jìn)制數(shù)字。

然而,路由器喜歡的是 IP 地址進(jìn)行解析,我們?nèi)祟悈s便于記憶的是網(wǎng)址,那么路由器如何把 IP 地址解析為我們熟悉的網(wǎng)址地址呢?這時(shí)候就需要 DNS 出現(xiàn)了。

DNS 的全稱是 Domain Name System,DNS ,它是一個(gè)由分層的 DNS 服務(wù)器(DNS server)實(shí)現(xiàn)的分布式數(shù)據(jù)庫(kù);它還是一個(gè)使得主機(jī)能夠查詢分布式數(shù)據(jù)庫(kù)的應(yīng)用層協(xié)議。DNS 服務(wù)器通常是運(yùn)行 BIND(Berkeley Internet Name Domain) 軟件的 UNIX 機(jī)器。DNS 協(xié)議運(yùn)行在 UDP 之上,使用 53 端口。

DNS 基本概述

與 HTTP、FTP 和 SMTP 一樣,DNS 協(xié)議也是應(yīng)用層的協(xié)議,DNS 使用客戶-服務(wù)器模式運(yùn)行在通信的端系統(tǒng)之間,在通信的端系統(tǒng)之間通過(guò)下面的端到端運(yùn)輸協(xié)議來(lái)傳送 DNS 報(bào)文。但是 DNS 不是一個(gè)直接和用戶打交道的應(yīng)用。DNS 是為因特網(wǎng)上的用戶應(yīng)用程序以及其他軟件提供一種核心功能。

DNS 通常不是一門(mén)獨(dú)立的協(xié)議,它通常為其他應(yīng)用層協(xié)議所使用,這些協(xié)議包括 HTTP、SMTP 和 FTP,將用戶提供的主機(jī)名解析為 IP 地址。

下面根據(jù)一個(gè)示例來(lái)描述一下這個(gè) DNS 解析過(guò)程,這個(gè)和你輸入網(wǎng)址后,瀏覽器做了什么操作有異曲同工之處

你在瀏覽器鍵入 www.someschool.edu/index.html 時(shí)會(huì)發(fā)生什么現(xiàn)象?為了使用戶主機(jī)能夠?qū)⒁粋€(gè) HTTP 請(qǐng)求報(bào)文發(fā)送到 Web 服務(wù)器 www.someschool.edu ,會(huì)經(jīng)歷如下操作

  • 同一臺(tái)用戶主機(jī)上運(yùn)行著 DNS 應(yīng)用的客戶端
  • 瀏覽器從上述 URL 中抽取出主機(jī)名 www.someschool.edu ,并將這臺(tái)主機(jī)名傳給 DNS 應(yīng)用的客戶端
  • DNS 客戶向 DNS 服務(wù)器發(fā)送一個(gè)包含主機(jī)名的請(qǐng)求。
  • DNS 客戶最終會(huì)收到一份回答報(bào)文,其中包含該目標(biāo)主機(jī)的 IP 地址
  • 一旦瀏覽器收到目標(biāo)主機(jī)的 IP 地址后,它就能夠向位于該 IP 地址 80 端口的 HTTP 服務(wù)器進(jìn)程發(fā)起一個(gè) TCP 連接。

除了提供 IP 地址到主機(jī)名的轉(zhuǎn)換,DNS 還提供了下面幾種重要的服務(wù)

  • 主機(jī)別名(host aliasing),有著復(fù)雜的主機(jī)名的主機(jī)能夠擁有一個(gè)或多個(gè)其他別名,比如說(shuō)一臺(tái)名為 relay1.west-coast.enterprise.com 的主機(jī),同時(shí)會(huì)擁有 enterprise.com 和 www.enterprise.com 的兩個(gè)主機(jī)別名,在這種情況下,relay1.west-coast.enterprise.com 也稱為 規(guī)范主機(jī)名,而主機(jī)別名要比規(guī)范主機(jī)名更加容易記憶。應(yīng)用程序可以調(diào)用 DNS 來(lái)獲得主機(jī)別名對(duì)應(yīng)的規(guī)范主機(jī)名以及主機(jī)的 IP地址。
  • 郵件服務(wù)器別名(mail server aliasing),同樣的,電子郵件的應(yīng)用程序也可以調(diào)用 DNS 對(duì)提供的主機(jī)名進(jìn)行解析。
  • 負(fù)載分配(load distribution),DNS 也用于冗余的服務(wù)器之間進(jìn)行負(fù)載分配。繁忙的站點(diǎn)例如 cnn.com 被冗余分布在多臺(tái)服務(wù)器上,每臺(tái)服務(wù)器運(yùn)行在不同的端系統(tǒng)之間,每個(gè)都有著不同的 IP 地址。由于這些冗余的 Web 服務(wù)器,一個(gè) IP 地址集合因此與同一個(gè)規(guī)范主機(jī)名聯(lián)系。DNS 數(shù)據(jù)庫(kù)中存儲(chǔ)著這些 IP 地址的集合。由于客戶端每次都會(huì)發(fā)起 HTTP 請(qǐng)求,所以 DNS 就會(huì)在所有這些冗余的 Web 服務(wù)器之間循環(huán)分配了負(fù)載。

DNS 工作概述

假設(shè)運(yùn)行在用戶主機(jī)上的某些應(yīng)用程序(如 Web 瀏覽器或郵件閱讀器) 需要將主機(jī)名轉(zhuǎn)換為 IP 地址。這些應(yīng)用程序?qū)⒄{(diào)用 DNS 的客戶端,并指明需要被轉(zhuǎn)換的主機(jī)名。用戶主機(jī)上的 DNS 收到后,會(huì)使用 UDP 通過(guò) 53 端口向網(wǎng)絡(luò)上發(fā)送一個(gè) DNS 查詢報(bào)文,經(jīng)過(guò)一段時(shí)間后,用戶主機(jī)上的 DNS 會(huì)收到一個(gè)主機(jī)名對(duì)應(yīng)的 DNS 回答報(bào)文。因此,從用戶主機(jī)的角度來(lái)看,DNS 就像是一個(gè)黑盒子,其內(nèi)部的操作你無(wú)法看到。但是實(shí)際上,實(shí)現(xiàn) DNS 這個(gè)服務(wù)的黑盒子非常復(fù)雜,它由分布于全球的大量 DNS 服務(wù)器以及定義了 DNS 服務(wù)器與查詢主機(jī)通信方式的應(yīng)用層協(xié)議組成。

DNS 最早的設(shè)計(jì)是只有一臺(tái) DNS 服務(wù)器。這臺(tái)服務(wù)器會(huì)包含所有的 DNS 映射。這是一種集中式的設(shè)計(jì),這種設(shè)計(jì)并不適用于當(dāng)今的互聯(lián)網(wǎng),因?yàn)榛ヂ?lián)網(wǎng)有著數(shù)量巨大并且持續(xù)增長(zhǎng)的主機(jī),這種集中式的設(shè)計(jì)會(huì)存在以下幾個(gè)問(wèn)題

  • 單點(diǎn)故障(a single point of failure),如果 DNS 服務(wù)器崩潰,那么整個(gè)網(wǎng)絡(luò)隨之癱瘓。
  • 通信容量(traaffic volume),單個(gè) DNS 服務(wù)器不得不處理所有的 DNS 查詢,這種查詢級(jí)別可能是上百萬(wàn)上千萬(wàn)級(jí)
  • 遠(yuǎn)距離集中式數(shù)據(jù)庫(kù)(distant centralized database),單個(gè) DNS 服務(wù)器不可能 鄰近 所有的用戶,假設(shè)在美國(guó)的 DNS 服務(wù)器不可能臨近讓澳大利亞的查詢使用,其中查詢請(qǐng)求勢(shì)必會(huì)經(jīng)過(guò)低速和擁堵的鏈路,造成嚴(yán)重的時(shí)延。
  • 維護(hù)(maintenance),維護(hù)成本巨大,而且還需要頻繁更新。

所以 DNS 不可能集中式設(shè)計(jì),它完全沒(méi)有可擴(kuò)展能力,因此采用分布式設(shè)計(jì),所以這種設(shè)計(jì)的特點(diǎn)如下

分布式、層次數(shù)據(jù)庫(kù)

首先分布式設(shè)計(jì)首先解決的問(wèn)題就是 DNS 服務(wù)器的擴(kuò)展性問(wèn)題,因此 DNS 使用了大量的 DNS 服務(wù)器,它們的組織模式一般是層次方式,并且分布在全世界范圍內(nèi)。沒(méi)有一臺(tái) DNS 服務(wù)器能夠擁有因特網(wǎng)上所有主機(jī)的映射。相反,這些映射分布在所有的 DNS 服務(wù)器上。

大致來(lái)說(shuō)有三種 DNS 服務(wù)器:根 DNS 服務(wù)器、 頂級(jí)域(Top-Level Domain, TLD) DNS 服務(wù)器 和 權(quán)威 DNS 服務(wù)器 。這些服務(wù)器的層次模型如下圖所示

假設(shè)現(xiàn)在一個(gè) DNS 客戶端想要知道 www.amazon.com 的 IP 地址,那么上面的域名服務(wù)器是如何解析的呢?首先,客戶端會(huì)先和根服務(wù)器之一進(jìn)行關(guān)聯(lián),它將返回頂級(jí)域名 com 的 TLD 服務(wù)器的 IP 地址。該客戶則與這些 TLD 服務(wù)器之一聯(lián)系,它將為 amazon.com 返回權(quán)威服務(wù)器的 IP 地址。最后,該客戶與 amazom.com 權(quán)威服務(wù)器之一聯(lián)系,它為 www.amazom.com 返回其 IP 地址。

DNS 層次結(jié)構(gòu)

我們現(xiàn)在來(lái)討論一下上面域名服務(wù)器的層次系統(tǒng)

  • 根 DNS 服務(wù)器 ,有 400 多個(gè)根域名服務(wù)器遍及全世界,這些根域名服務(wù)器由 13 個(gè)不同的組織管理。根域名服務(wù)器的清單和組織機(jī)構(gòu)可以在 https://root-servers.org/ 中找到,根域名服務(wù)器提供 TLD 服務(wù)器的 IP 地址。
  • 頂級(jí)域 DNS 服務(wù)器,對(duì)于每個(gè)頂級(jí)域名比如 com、org、net、edu 和 gov 和所有的國(guó)家級(jí)域名 uk、fr、ca 和 jp 都有 TLD 服務(wù)器或服務(wù)器集群。所有的頂級(jí)域列表參見(jiàn) https://tld-list.com/ 。TDL 服務(wù)器提供了權(quán)威 DNS 服務(wù)器的 IP 地址。
  • 權(quán)威 DNS 服務(wù)器,在因特網(wǎng)上具有公共可訪問(wèn)的主機(jī),如 Web 服務(wù)器和郵件服務(wù)器,這些主機(jī)的組織機(jī)構(gòu)必須提供可供訪問(wèn)的 DNS 記錄,這些記錄將這些主機(jī)的名字映射為 IP 地址。一個(gè)組織機(jī)構(gòu)的權(quán)威 DNS 服務(wù)器收藏了這些 DNS 記錄。

DNS 查詢步驟

下面我們描述一下 DNS 的查詢步驟,從 DNS 解析 IP 再到 DNS 返回的一系列流程。

注意:通常情況下 DNS 會(huì)將查找的信息緩存在瀏覽器或者計(jì)算機(jī)本地中,如果有相同的請(qǐng)求到來(lái)時(shí),就不再會(huì)進(jìn)行 DNS 查找,而會(huì)直接返回結(jié)果。

通常情況下,DNS 的查找會(huì)經(jīng)歷下面這些步驟

  1. 用戶在瀏覽器中輸入網(wǎng)址 www.example.com 并點(diǎn)擊回車后,查詢會(huì)進(jìn)入網(wǎng)絡(luò),并且由 DNS 解析器進(jìn)行接收。
  2. DNS 解析器會(huì)向根域名發(fā)起查詢請(qǐng)求,要求返回頂級(jí)域名的地址。
  3. 根 DNS 服務(wù)器會(huì)注意到請(qǐng)求地址的前綴并向 DNS 解析器返回 com 的頂級(jí)域名服務(wù)器(TLD) 的 IP 地址列表。
  4. 然后,DNS 解析器會(huì)向 TLD 服務(wù)器發(fā)送查詢報(bào)文
  5. TLD 服務(wù)器接收請(qǐng)求后,會(huì)根據(jù)域名的地址把權(quán)威 DNS 服務(wù)器的 IP 地址返回給 DNS 解析器。
  6. 最后,DNS 解析器將查詢直接發(fā)送到權(quán)威 DNS 服務(wù)器
  7. 權(quán)威 DNS 服務(wù)器將 IP 地址返回給 DNS 解析器
  8. DNS 解析器將會(huì)使用 IP 地址響應(yīng) Web 瀏覽器

一旦 DNS 查找的步驟返回了 example.com 的 IP 地址,瀏覽器就可以請(qǐng)求網(wǎng)頁(yè)了。

整個(gè)流程如下圖所示

DNS 解析器

進(jìn)行 DNS 查詢的主機(jī)和軟件叫做 DNS 解析器,用戶所使用的工作站和個(gè)人電腦都屬于解析器。一個(gè)解析器要至少注冊(cè)一個(gè)以上域名服務(wù)器的 IP 地址。DNS 解析器是 DNS 查找的第一站,其負(fù)責(zé)與發(fā)出初始請(qǐng)求的客戶端打交道。解析器啟動(dòng)查詢序列,最終使 URL 轉(zhuǎn)換為必要的 IP 地址。

DNS 遞歸查詢和 DNS 遞歸解析器不同,該查詢是指向需要解析該查詢的 DNS 解析器發(fā)出請(qǐng)求。DNS 遞歸解析器是一種計(jì)算機(jī),其接受遞歸查詢并通過(guò)發(fā)出必要的請(qǐng)求來(lái)處理響應(yīng)。

DNS 查詢類型

DNS 查找中會(huì)出現(xiàn)三種類型的查詢。通過(guò)組合使用這些查詢,優(yōu)化的 DNS 解析過(guò)程可縮短傳輸距離。在理想情況下,可以使用緩存的記錄數(shù)據(jù),從而使 DNS 域名服務(wù)器能夠直接使用非遞歸查詢。

遞歸查詢:在遞歸查詢中,DNS 客戶端要求 DNS 服務(wù)器(一般為 DNS 遞歸解析器)將使用所請(qǐng)求的資源記錄響應(yīng)客戶端,或者如果解析器無(wú)法找到該記錄,則返回錯(cuò)誤消息。

迭代查詢:在迭代查詢中,如果所查詢的 DNS 服務(wù)器與查詢名稱不匹配,則其將返回對(duì)較低級(jí)別域名空間具有權(quán)威性的 DNS 服務(wù)器的引用。然后,DNS 客戶端將對(duì)引用地址進(jìn)行查詢。此過(guò)程繼續(xù)使用查詢鏈中的其他 DNS 服務(wù)器,直至發(fā)生錯(cuò)誤或超時(shí)為止。

非遞歸查詢:當(dāng) DNS 解析器客戶端查詢 DNS 服務(wù)器以獲取其有權(quán)訪問(wèn)的記錄時(shí)通常會(huì)進(jìn)行此查詢,因?yàn)槠鋵?duì)該記錄具有權(quán)威性,或者該記錄存在于其緩存內(nèi)。DNS 服務(wù)器通常會(huì)緩存 DNS 記錄,查詢到來(lái)后能夠直接返回緩存結(jié)果,以防止更多帶寬消耗和上游服務(wù)器上的負(fù)載。

DNS 緩存

DNS 緩存(DNS caching) 有時(shí)也叫做 DNS 解析器緩存,它是由操作系統(tǒng)維護(hù)的臨時(shí)數(shù)據(jù)庫(kù),它包含有最近的網(wǎng)站和其他 Internet 域的訪問(wèn)記錄。也就是說(shuō), DNS 緩存只是計(jì)算機(jī)為了滿足快速的響應(yīng)速度而把已加載過(guò)的資源緩存起來(lái),再次訪問(wèn)時(shí)可以直接快速引用的一項(xiàng)技術(shù)和手段。那么 DNS 的緩存是如何工作的呢?

DNS 緩存的工作流程

在瀏覽器向外部發(fā)出請(qǐng)求之前,計(jì)算機(jī)會(huì)攔截每個(gè)請(qǐng)求并在 DNS 緩存數(shù)據(jù)庫(kù)中查找域名,該數(shù)據(jù)庫(kù)包含有最近的域名列表,以及 DNS 首次發(fā)出請(qǐng)求時(shí) DNS 為它們計(jì)算的地址。

DNS 緩存方式

DNS 數(shù)據(jù)可緩存到各種不同的位置上,每個(gè)位置均將存儲(chǔ) DNS 記錄,它的生存時(shí)間由 TTL(DNS 字段) 來(lái)決定。

瀏覽器緩存

現(xiàn)如今的 Web 瀏覽器設(shè)計(jì)默認(rèn)將 DNS 記錄緩存一段時(shí)間。因?yàn)樵娇拷?Web 瀏覽器進(jìn)行 DNS 緩存,為檢查緩存并向 IP 地址發(fā)出請(qǐng)求的次數(shù)就越少。發(fā)出對(duì) DNS 記錄的請(qǐng)求時(shí),瀏覽器緩存是針對(duì)所請(qǐng)求的記錄而檢查的第一個(gè)位置。

在 chrome 瀏覽器中,你可以使用 chrome://net-internals/#dns 查看 DNS 緩存的狀態(tài)。這是基于 Windows 下查詢的,我的 Mac 電腦輸入上面 url 后無(wú)法查看 DNS ,只能 clear host cache,我也不知道為啥,可能是哪里設(shè)置的原因?

操作系統(tǒng)內(nèi)核緩存

在瀏覽器緩存查詢后,會(huì)進(jìn)行操作系統(tǒng)級(jí) DNS 解析器的查詢,操作系統(tǒng)級(jí) DNS 解析器是 DNS 查詢離開(kāi)你的計(jì)算機(jī)前的第二站,也是本地查詢的最后一個(gè)步驟。

DNS 報(bào)文

共同實(shí)現(xiàn) DNS 分布式數(shù)據(jù)庫(kù)的所有 DNS 服務(wù)器存儲(chǔ)了資源記錄(Resource Record, RR),RR 提供了主機(jī)名到 IP 地址的映射。每個(gè) DNS 回答報(bào)文中會(huì)包含一條或多條資源記錄。RR 記錄用于回復(fù)客戶端查詢。

資源記錄是一個(gè)包含了下列字段的 4 元組

  1. (Name, Value, Type, TTL) 

RR 會(huì)有不同的類型,下面是不同類型的 RR 匯總表

DNS RR 類型 解釋
A 記錄 IPv4 主機(jī)記錄,用于將域名映射到 IPv4 地址
AAAA 記錄 IPv6 主機(jī)記錄,用于將域名映射到 IPv6 地址
CNAME 記錄 別名記錄,用于映射 DNS 域名的別名
MX 記錄 郵件交換器,用于將 DNS 域名映射到郵件服務(wù)器
PTR 記錄 指針,用于反向查找(IP地址到域名解析)
SRV 記錄 SRV記錄,用于映射可用服務(wù)。

DNS 有兩種報(bào)文,一種是查詢報(bào)文,一種是響應(yīng)報(bào)文,并且這兩種報(bào)文有著相同的格式,下面是 DNS 的報(bào)文格式

上圖顯示了 DNS 的報(bào)文格式,其中事務(wù) ID、標(biāo)志、問(wèn)題數(shù)量、回答資源記錄數(shù)、權(quán)威名稱服務(wù)器計(jì)數(shù)、附加資源記錄數(shù)這六個(gè)字段是 DNS 的報(bào)文段首部,報(bào)文段首部一共有 12 個(gè)字節(jié)。

報(bào)文段首部

報(bào)文段首部是 DNS 報(bào)文的基礎(chǔ)結(jié)構(gòu)部分,下面我們對(duì)報(bào)文段首部中的每個(gè)字節(jié)進(jìn)行描述

  • 事務(wù) ID: 事務(wù) ID 占用 2 個(gè)字節(jié)。它是 DNS 的標(biāo)識(shí),又叫做 標(biāo)識(shí)符,對(duì)于請(qǐng)求報(bào)文和響應(yīng)報(bào)文來(lái)說(shuō),這個(gè)字段的值是一樣的,通過(guò)標(biāo)識(shí)符可以區(qū)分 DNS 應(yīng)答報(bào)文是對(duì)哪個(gè)請(qǐng)求進(jìn)行響應(yīng)的。
  • 標(biāo)志:標(biāo)志字段占用 2 個(gè)字節(jié)。標(biāo)志字段有很多,而且也比較重要,下面列出來(lái)了所有的標(biāo)志字段。

每個(gè)字段的含義如下

  • QR(Response): 1 bit 的 QR 標(biāo)識(shí)報(bào)文是查詢報(bào)文還是響應(yīng)報(bào)文,查詢報(bào)文時(shí) QR = 0,響應(yīng)報(bào)文時(shí) QR = 1。
  • OpCode: 4 bit 的 OpCode 表示操作碼,其中,0 表示標(biāo)準(zhǔn)查詢,1 表示反向查詢,2 表示服務(wù)器狀態(tài)請(qǐng)求。
  • AA(Authoritative): 1 bit 的 AA 代表授權(quán)應(yīng)答,這個(gè) AA 只在響應(yīng)報(bào)文中有效,值為 1 時(shí),表示名稱服務(wù)器是權(quán)威服務(wù)器;值為 0 時(shí),表示不是權(quán)威服務(wù)器。
  • TC(Truncated): 截?cái)鄻?biāo)志位,值為 1 時(shí),表示響應(yīng)已超過(guò) 512 字節(jié)并且已經(jīng)被截?cái)?,只返回?512 個(gè)字節(jié)。
  • RD(Recursion Desired): 這個(gè)字段是期望遞歸字段,該字段在查詢中設(shè)置,并在響應(yīng)中返回。該標(biāo)志告訴名稱服務(wù)器必須處理這個(gè)查詢,這種方式被稱為一個(gè)遞歸查詢。如果該位為 0,且被請(qǐng)求的名稱服務(wù)器沒(méi)有一個(gè)授權(quán)回答,它將返回一個(gè)能解答該查詢的其他名稱服務(wù)器列表。這種方式被稱為迭代查詢。
  • RA(Recursion Available): 可用遞歸字段,這個(gè)字段只出現(xiàn)在響應(yīng)報(bào)文中。當(dāng)值為 1 時(shí),表示服務(wù)器支持遞歸查詢。
  • zero: 保留字段,在所有的請(qǐng)求和應(yīng)答報(bào)文中,它的值必須為 0。
  • AD: 這個(gè)字段表示信息是否是已授權(quán)。
  • CD: 這個(gè)字段表示是否禁用安全檢查。
  • rcode(Reply code):這個(gè)字段是返回碼字段,表示響應(yīng)的差錯(cuò)狀態(tài)。當(dāng)值為 0 時(shí),表示沒(méi)有錯(cuò)誤;當(dāng)值為 1 時(shí),表示報(bào)文格式錯(cuò)誤(Format error),服務(wù)器不能理解請(qǐng)求的報(bào)文;當(dāng)值為 2 時(shí),表示域名服務(wù)器失敗(Server failure),因?yàn)榉?wù)器的原因?qū)е聸](méi)辦法處理這個(gè)請(qǐng)求;當(dāng)值為 3 時(shí),表示名字錯(cuò)誤(Name Error),只有對(duì)授權(quán)域名解析服務(wù)器有意義,指出解析的域名不存在;當(dāng)值為 4 時(shí),表示查詢類型不支持(Not Implemented),即域名服務(wù)器不支持查詢類型;當(dāng)值為 5 時(shí),表示拒絕(Refused),一般是服務(wù)器由于設(shè)置的策略拒絕給出應(yīng)答,如服務(wù)器不希望對(duì)某些請(qǐng)求者給出應(yīng)答。

相信讀者跟我一樣,只看這些字段沒(méi)什么意思,下面我們就通過(guò)抓包的方式,看一下具體的 DNS 報(bào)文。

現(xiàn)在我們可以看一下具體的 DNS 報(bào)文,通過(guò) query 可知這是一個(gè)請(qǐng)求報(bào)文,這個(gè)報(bào)文的標(biāo)識(shí)符是 0xcd28,它的標(biāo)志如下

  • QR = 0 實(shí)錘了這就是一個(gè)請(qǐng)求。
  • 然后是四個(gè)字節(jié)的 OpCode,它的值是 0,表示這是一個(gè)標(biāo)準(zhǔn)查詢。
  • 因?yàn)檫@是一個(gè)查詢請(qǐng)求,所以沒(méi)有 AA 字段出現(xiàn)。
  • 然后是截?cái)鄻?biāo)志位 Truncated,表示沒(méi)有被截?cái)唷?/li>
  • 緊隨其后的 RD = 1,表示希望得到遞歸回答。
  • 請(qǐng)求報(bào)文中沒(méi)有 RA 字段出現(xiàn)。
  • 然后是保留字段 zero。
  • 緊隨其后的 0 表示未經(jīng)身份驗(yàn)證的數(shù)據(jù)是不可接受的。
  • 沒(méi)有 rcode 字段的值

然后我們看一下響應(yīng)報(bào)文

可以看到,標(biāo)志位也是 0xcd28,可以說(shuō)明這就是上面查詢請(qǐng)求的響應(yīng)。

查詢請(qǐng)求已經(jīng)解釋過(guò)的報(bào)文我們這里就不再說(shuō)明了,現(xiàn)在只解釋一下請(qǐng)求報(bào)文中沒(méi)有的內(nèi)容

  • 緊隨在 OpCode 后面的 AA 字段已經(jīng)出現(xiàn)了,它的值為 0 ,表示不是權(quán)威 DNS 服務(wù)器的響應(yīng)
  • 最后是 rcode 字段的響應(yīng),值為 0 時(shí),表示沒(méi)有錯(cuò)誤。

問(wèn)題區(qū)域

問(wèn)題區(qū)域通常指報(bào)文格式中查詢問(wèn)題的區(qū)域部分。這部分用來(lái)顯示 DNS 查詢請(qǐng)求的問(wèn)題,包括查詢類型和查詢類

這部分中每個(gè)字段的含義如下

  • 查詢名:指定要查詢的域名,有時(shí)候也是 IP 地址,用于反向查詢。
  • 查詢類型:DNS 查詢請(qǐng)求的資源類型,通常查詢類型為 A 類型,表示由域名獲取對(duì)應(yīng)的 IP 地址。
  • 查詢類:地址類型,通常為互聯(lián)網(wǎng)地址,值為 1 。
  • 同樣的,我們?cè)偈褂?wireshark 查看一下問(wèn)題區(qū)域

可以看到,這是對(duì) mobile-gtalk.l.google.com 發(fā)起的 DNS 查詢請(qǐng)求,查詢類型是 A,那么得到的響應(yīng)類型應(yīng)該也是 A

如上圖所示,響應(yīng)類型是 A ,查詢類的值通常是 1、254 和 255,分別表示互聯(lián)網(wǎng)類、沒(méi)有此類和所有類,這些是我們感興趣的值,其他值通常不用于 TCP/IP 網(wǎng)絡(luò)。

資源記錄部分

資源記錄部分是 DNS 報(bào)文的最后三個(gè)字段,包括回答問(wèn)題區(qū)域、權(quán)威名稱服務(wù)器記錄、附加信息區(qū)域,這三個(gè)字段均采用一種稱為資源記錄的格式,如下圖所示

資源記錄部分的字段含義如下

  • 域名:DNS 請(qǐng)求的域名。
  • 類型:資源記錄的類型,與問(wèn)題部分中的查詢類型值是一樣的。
  • 類:地址類型、與問(wèn)題中的查詢類值一樣的。
  • 生存時(shí)間:以秒為單位,表示資源記錄的生命周期。
  • 資源數(shù)據(jù)長(zhǎng)度:資源數(shù)據(jù)的長(zhǎng)度。
  • 資源數(shù)據(jù):表示按查詢段要求返回的相關(guān)資源記錄的數(shù)據(jù)。

資源記錄部分只有在 DNS 響應(yīng)包中才會(huì)出現(xiàn)。下面我們就來(lái)通過(guò)響應(yīng)報(bào)文看一下具體的字段示例

其中,域名的值是 mobile-gtalk.l.google.com ,類型是 A,類是 1,生存時(shí)間是 5 秒,數(shù)據(jù)長(zhǎng)度是 4 字節(jié),資源數(shù)據(jù)表示的地址是 63.233.189.188。

SOA 記錄

如果是權(quán)威 DNS 服務(wù)器的響應(yīng)的話,會(huì)顯示記錄存儲(chǔ)有關(guān)區(qū)域的重要信息,這種信息就是 SOA 記錄。所有 的DNS 區(qū)域都需要一個(gè) SOA 記錄才能符合 IETF 標(biāo)準(zhǔn)。SOA 記錄對(duì)于區(qū)域傳輸也很重要。

SOA 記錄除具有 DNS 解析器響應(yīng)的字段外,還具有一些額外的字段,如下

具體字段含義

  • PNAME:即 Primary Name Server,這是區(qū)域的主要名稱服務(wù)器的名稱。
  • RNAME:即 Responsible authority's mailbox,RNAME 代表管理員的電子郵件地址,@ 用 . 來(lái)表示,也就是說(shuō) admin.example.com 等同于 admin@example.com。
  • 序列號(hào):即 Serial Number ,區(qū)域序列號(hào)是該區(qū)域的唯一標(biāo)識(shí)符。
  • 刷新間隔:即 Refresh Interval,在請(qǐng)求主服務(wù)器提供 SOA 記錄以查看其是否已更新之前,輔助服務(wù)器應(yīng)等待的時(shí)間(以秒為單位)。
  • 重試間隔:服務(wù)器應(yīng)等待無(wú)響應(yīng)的主要名稱服務(wù)器再次請(qǐng)求更新的時(shí)間。
  • 過(guò)期限制:如果輔助服務(wù)器在這段時(shí)間內(nèi)沒(méi)有收到主服務(wù)器的響應(yīng),則應(yīng)停止響應(yīng)對(duì)該區(qū)域的查詢。

上面提到了主要名稱服務(wù)器和服務(wù)名稱服務(wù)器,他們之間的關(guān)系如下

這塊我們主要解釋了 RR 類型為 A(IPv4) 和 SOA 的記錄,除此之外還有很多類型,這篇文章就不再詳細(xì)介紹了,讀者朋友們可以閱讀 《TCP/IP 卷一 協(xié)議》和 cloudflare 的官網(wǎng) https://www.cloudflare.com/learning/dns/dns-records/ 查閱,值得一提的是,cloudflare 是一個(gè)學(xué)習(xí)網(wǎng)絡(luò)協(xié)議非常好的網(wǎng)站。

DNS 安全

幾乎所有的網(wǎng)絡(luò)請(qǐng)求都會(huì)經(jīng)過(guò) DNS 查詢,而且 DNS 和許多其他的 Internet 協(xié)議一樣,系統(tǒng)設(shè)計(jì)時(shí)并未考慮到安全性,并且存在一些設(shè)計(jì)限制,這為 DNS 攻擊創(chuàng)造了機(jī)會(huì)。

DNS 攻擊主要有下面這幾種方式

  • 第一種是 Dos 攻擊,這種攻擊的主要形式是使重要的 DNS 服務(wù)器比如 TLD 服務(wù)器或者根域名服務(wù)器過(guò)載,從而無(wú)法響應(yīng)權(quán)威服務(wù)器的請(qǐng)求,使 DNS 查詢不起作用。
  • 第二種攻擊形式是 DNS 欺騙,通過(guò)改變 DNS 資源內(nèi)容,比如偽裝一個(gè)官方的 DNS 服務(wù)器,回復(fù)假的資源記錄,從而導(dǎo)致主機(jī)在嘗試與另一臺(tái)機(jī)器連接時(shí),連接至錯(cuò)誤的 IP 地址。
  • 第三種攻擊形式是 DNS 隧道,這種攻擊使用其他網(wǎng)絡(luò)協(xié)議通過(guò) DNS 查詢和響應(yīng)建立隧道。攻擊者可以使用 SSH、TCP 或者 HTTP 將惡意軟件或者被盜信息傳遞到 DNS 查詢中,這種方式使防火墻無(wú)法檢測(cè)到,從而形成 DNS 攻擊。
  • 第四種攻擊形式是 DNS 劫持,在 DNS 劫持中,攻擊者將查詢重定向到其他域名服務(wù)器。這可以通過(guò)惡意軟件或未經(jīng)授權(quán)的 DNS 服務(wù)器修改來(lái)完成。盡管結(jié)果類似于 DNS 欺騙,但這是完全不同的攻擊,因?yàn)樗哪繕?biāo)是名稱服務(wù)器上網(wǎng)站的 DNS 記錄,而不是解析程序的緩存。
  • 第五章攻擊形式是 DDoS 攻擊,也叫做分布式拒絕服務(wù)帶寬洪泛攻擊,這種攻擊形式相當(dāng)于是 Dos 攻擊的升級(jí)版

那么該如何防御 DNS 攻擊呢?

防御 DNS 威脅的最廣為人知的方法之一就是采用 DNSSEC 協(xié)議。

DNSSEC

DNSSEC 又叫做 DNS 安全擴(kuò)展,DNSSEC 通過(guò)對(duì)數(shù)據(jù)進(jìn)行數(shù)字簽名來(lái)保護(hù)其有效性,從而防止受到攻擊。它是由 IETF 提供的一系列 DNS 安全認(rèn)證的機(jī)制。DNSSEC 不會(huì)對(duì)數(shù)據(jù)進(jìn)行加密,它只會(huì)驗(yàn)證你所訪問(wèn)的站點(diǎn)地址是否有效。

DNS 防火墻

有一些攻擊是針對(duì)服務(wù)器進(jìn)行的,這就需要 DNS 防火墻的登場(chǎng)了,DNS 防火墻是一種可以為 DNS 服務(wù)器提供許多安全和性能服務(wù)的工具。DNS 防火墻位于用戶的 DNS 解析器和他們嘗試訪問(wèn)的網(wǎng)站或服務(wù)的權(quán)威名稱服務(wù)器之間。防火墻提供 限速訪問(wèn),以關(guān)閉試圖淹沒(méi)服務(wù)器的攻擊者。如果服務(wù)器確實(shí)由于攻擊或任何其他原因而導(dǎo)致停機(jī),則 DNS 防火墻可以通過(guò)提供來(lái)自緩存的 DNS 響應(yīng)來(lái)使操作員的站點(diǎn)或服務(wù)正常運(yùn)行。

除了上述兩種防御手段外,本身 DNS 區(qū)域的運(yùn)營(yíng)商就會(huì)采取進(jìn)步一措施保護(hù) DNS 服務(wù)器,比如配置 DNS 基礎(chǔ)架構(gòu),來(lái)防止 DDoS 攻擊。

更多關(guān)于 DNS 的攻擊和防御就是網(wǎng)絡(luò)安全的主題,這篇文章就不再詳細(xì)介紹了。

總結(jié)

這篇文章我用較多的字?jǐn)?shù)為你介紹了 DNS 的基本概述,DNS 的工作機(jī)制,DNS 的查詢方式,DNS 的緩存機(jī)制,我們還通過(guò) WireShark 抓包帶你認(rèn)識(shí)了一下 DNS 的報(bào)文,最后我為你介紹了 DNS 的攻擊手段和防御方式。

這是一篇入門(mén) DNS 較全的文章,花了我一周多的時(shí)間來(lái)寫(xiě)這篇文章,這篇文章了解清楚后,基本上 DNS 的大部分問(wèn)題你應(yīng)該都能夠回答,面試我估計(jì)也穩(wěn)了。

如果這篇文章寫(xiě)的還不錯(cuò),希望讀者朋友們可以不吝給出四連:點(diǎn)贊、在看、留言、分享,記住這次一定哦!

本文轉(zhuǎn)載自微信公眾號(hào)「 程序員cxuan」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系 程序員cxuan公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 程序員cxuan
相關(guān)推薦

2021-10-18 11:58:56

負(fù)載均衡虛擬機(jī)

2022-09-06 08:02:40

死鎖順序鎖輪詢鎖

2022-09-14 09:01:55

shell可視化

2020-07-15 08:57:40

HTTPSTCP協(xié)議

2020-11-16 10:47:14

FreeRTOS應(yīng)用嵌入式

2020-07-09 07:54:35

ThreadPoolE線程池

2022-10-10 08:35:17

kafka工作機(jī)制消息發(fā)送

2024-03-07 18:11:39

Golang采集鏈接

2022-07-19 16:03:14

KubernetesLinux

2023-06-12 08:49:12

RocketMQ消費(fèi)邏輯

2024-05-10 12:59:58

PyTorch人工智能

2022-09-08 10:14:29

人臉識(shí)別算法

2021-08-26 05:02:50

分布式設(shè)計(jì)

2022-07-15 16:31:49

Postman測(cè)試

2024-01-05 08:30:26

自動(dòng)駕駛算法

2024-01-11 09:53:31

面試C++

2021-06-04 07:27:24

sourcemap前端技術(shù)

2022-04-25 10:56:33

前端優(yōu)化性能

2022-02-15 18:45:35

Linux進(jìn)程調(diào)度器

2023-10-19 13:47:58

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)