主頁 > 企業開發 > DNS 是如何影響你沖浪速度的?網路干貨

DNS 是如何影響你沖浪速度的?網路干貨

2023-02-03 07:15:06 企業開發

“在日常上網程序中,出于好記的原因,人們更喜歡在瀏覽器中輸入網站的域名?,而不是 IP 地址,比如想要訪問百度,則會輸入 www.baidu.com,而不是 202.108.22.5(或者百度網站的其他 IP),”

本文詳細介紹了 DNS 相關知識,包括 DNS 作業原理、如何提升域名決議速度、以及 DNS 記錄與報文等內容,

 1. 域名與域名服務器?

在日常上網程序中,出于好記的原因,人們更喜歡在瀏覽器中輸入網站的域名?,而不是 IP 地址,比如想要訪問百度,則會輸入 www.baidu.com,而不是 202.108.22.5(或者百度網站的其他 IP),

然而計算機網路通信中所識別的標識并不是域名?,而是 IP 地址,因為其可以提供主機在互聯網中的位置資訊,而且是定長的,路由器等設備更容易處理,

為了折中人類和計算機不同的偏好,就出現了 DNS(Domain Name System,域名系統),其主要任務是根據域名查出對應的 IP 地址,

下面先介紹一下域名和域名服務器,之后再介紹 DNS 的作業原理,

域名由若干個英文字串組成(不區分大小寫),各字串之間用點號『.』分隔連接,其中越靠右的表示域名級別越高,

舉個例子,百度的域名為 www.baidu.com,其中 com 是頂級域名(一級域名),baidu 是二級域名,www 是三級域名,


域名服務器(也稱為 DNS 服務器)負責存盤域名和 IP 地址的映射關系,當我們需要獲取某個域名對應的 IP 地址時,只需要從域名服務器中查詢即可,

 

 

 

由于域名非常非常多,如果都存放在一臺域名服務器中,那么不僅查詢速度慢,服務器壓力大,而且難以保證服務的可靠性,因此,DNS 采用了分布式的設計方案,大量的域名服務器之間通過?層次方式組織,分布在全世界范圍內,

一般而言,域名服務器可以分為以下四類:

  • 根域名服務器:最高層級的域名服務器,因特網上一共有 13 個根域名服務器(以英文字母 A 到 M 依序命名,格式為[a~m].root-servers.net),每個根域名服務器都知道所有頂級域名服務器的 IP 地址,比如知道負責 com 域的頂級域名服務器的 IP 地址,
  • 頂級域名服務器:對于每個頂級域名,如 com、org、edu 等,都有對應的頂級域名服務器,頂級域名服務器知道其所管理的所有權威域名服務器的 IP 地址,比如負責 com 域的頂級域名服務器知道負責 baidu.com 域的權威域名服務器的 IP 地址,
  • 權威域名服務器:一個網站需要將其域名和 IP 地址注冊到相應的權威域名服務器中,比如網站 www.baidu.com 的域名和 IP 地址就存盤在負責 baidu.com 域的權威域名服務器中,
  • 本地域名服務器:本地域名服務器不屬于上述域名服務器的層次結構,但是它對域名系統非常重要,每個 ISP(如一個大學、一個公司)都有一個本地域名服務器(也叫默認域名服務器),具體在下一節中介紹,

 

 

 

技術薪資:底薪20K-100K+績效(最高底薪50%)

???????微信:HRdajisi
???????釘釘:馬新宇 9455510168
???????telegram:@youmiboss @HRdajisi
???????谷歌郵箱: [email protected]
???????Skype: live:.cid.d850fdc83f05e44a

????【安卓開發工程師】底薪+績效為最高底薪50%
????【IOS開發工程師】底薪+績效為最高底薪50%
????【運維開發工程師】底薪+績效為最高底薪50%??
????【UI設計師】底薪+績效為最高底薪50%??
????【前端react工程師】底薪+績效為最高底薪50%
????【后端go工程師】底薪+績效為最高底薪50%??
????【運維工程師】底薪+績效為最高底薪50%??
????【測驗工程師】底薪+績效為最高底薪50%
????【網路工程師CCIE/HCIE】底薪+績效為最高底薪50%??
????【網路安全工程師】底薪+績效為最高底薪50%
????【運維安全工程師】底薪+績效為最高底薪50%
????【資料中間件研發架構師】底薪+績效為最高底薪50%
????【游戲逆向開發工程師】底薪+績效為最高底薪50%
????【IT資產管理】運維方向底薪+績效為最高底薪50%
????【視頻剪輯創意設計師】底薪+績效為最高底薪50%
????【CDN 基礎架構研發】底薪+績效為最高底薪50%??
????【CDN 基礎架構(專家)】底薪+績效為最高底薪50%

????【DBA】(中_高_專家)底薪+績效為最高底薪50%??
????【GO開發工程師】底薪+績效為最高底薪50%??
????【大資料】(初_中_高)(架構師_專家)
????【JAVA轉GO/轉大資料/轉DBA】公司支持
????【PHP轉GO/轉大資料/轉DBA】公司支持
????【Python轉GO/轉大資料/轉DBA】公司支持
????【NET轉GO/轉大資料/轉DBA】公司支持
????【C++轉GO/轉大資料/轉DBA】公司支持
????【C#轉GO/轉大資料/轉DBA】公司支持

2. 域名決議流程?

知道了域名和域名服務器的基礎知識后,我們來了解一下域名決議的具體流程,以輸入百度域名為例,看看我們的主機是如何得到 www.baidu.com 的 IP 地址的,

  1. 請求主機向本地域名服務器發送 DNS 查詢報文,詢問 www.baidu.com 的 IP 地址是什么;
  2. 本地域名服務器轉發此查詢報文到根域名服務器;
  3. 根域名服務器發現要查詢的頂級域名為 com,于是向本地域名服務器發送回應報文,報文中封裝了負責 com 域的頂級域名服務器的 IP 地址串列;
  4. 本地域名服務器收到根域名服務器回應的報文后,選擇其中一個頂級域名服務器的 IP 地址,并向其發送查詢報文;
  5. 頂級域名服務器發現要查詢的二級域名為 baidu,于是向本地域名服務器發送回應報文,報文中封裝了負責baidu.com 域的權威域名服務器的 IP 地址串列;
  6. 本地域名服務器收到頂級域名服務器回應的報文后,選擇其中一個權威域名服務器的 IP 地址,并向其發送查詢報文;
  7. 權威域名服務器通過查詢資料庫,找到 www.baidau.com 的 IP 地址,并將此資訊封裝為一個回應報文,發送給本地域名服務器;
  8. 本地域名服務器將回應報文發送給原請求主機,我們的主機就知道了百度的 IP 地址,DNS 查詢程序結束,

在此程序中,請求主機與本地域名服務器之間的互動稱為遞回查詢?,而本地域名服務器與域名服務器層次結構中相關服務器的互動稱為迭代查詢,

請求主機是如何知道本地域名服務器的 IP 地址的?

當用戶插上網線或者連上 WIFI 后,電腦會通過 DHCP 協議分配一個 IP 地址,與此同時,也會獲取到本地域名服務器的 IP 地址!

本地域名服務器是如何知道根域名服務器的 IP 地址的?

因特網上一共有 13 個根域名服務器,它們的 IP 地址是固定不變的,因此被集成在了作業系統中,每臺電腦都知道!

為了決議出百度域名的 IP 地址,一共發送了 8 份 DNS 報文,用戶本來只是想和百度的服務器進行互動,卻耗費了大量的時間進行域名決議,如果每次都這樣搞,豈不是得慢死?因此就需要有一些提升域名決議速度的方式,

3.  提升域名決議速度?

(1)TCP or UDP

我們都知道,TCP 相較于 UDP 更可靠,但是速度更慢,

 

 

 

DNS 應該采用哪個傳輸層協議呢?

  • 如果采用 TCP 協議,不僅需要三次握手建立連接,而且需要進行擁塞控制等,那么域名決議速度將慢成龜速,不利于用戶體驗,
  • 如果采用 UDP 協議,萬一丟包了怎么辦?如果決議不出來 IP,怎么訪問目標網站?不利于用戶體驗,

實際上,DNS 主要使用 UDP,在特殊情況下,也會使用 TCP,埠號都是 53,

一般情況下,DNS 報文都比較小,只需要一個包就能承載所有資訊,既然只有一個包,就無需考慮哪個包未送達,直接重發一個包即可,因此無需使用 TCP 那樣復雜的協議,直接使用 UDP 協議,DNS 協議自己處理超時和重傳問題,以提供可靠性服務,

當然有的時候 DNS 報文比較大,比如回應報文中可能一個域名包含有很多 IP 記錄,當服務器回應時,會將報文中的 TC 標志位設定為 1,表示回應長度超過了 512 位元組,此報文僅僅回傳前 512 位元組,當我們的主機收到回應后,就會使用 TCP 協議重發原來的查詢請求,以獲取完整報文,

此外,為了防止本地域名服務器(主域名服務器)宕機而導致無法對域名進行決議,本機還需要設定一個輔助域名服務器,當主域名服務器宕機后,由輔助域名服務器繼續提供域名決議的服務,輔助域名服務器會定時(通常是每隔 3小時)向主服務器發送查詢請求以實作同步,此時傳輸資料較多,因而使用 TCP 協議,

(2)DNS 快取

即使采用 UDP 協議,但是如果每次都需要從根服務器開始一層一層的查詢,仍然很慢,且處于層級結構中的域名服務器將會接收到大量的請求,處理速度進一步降低!

為了提升域名決議速度并減輕域名服務器的壓力,DNS 廣泛使用了快取技術,

當用戶訪問了某個網站后,本地域名服務器會將決議出的域名和 IP 地址的映射關系快取一定時間,在快取過期前,用戶再訪問相同網站時,本地域名服務器就可以直接回傳查詢結果,而無需再去詢問根域名服務器、頂級域名服務器等,這樣就能大大減少傳輸的 DNS 報文數量!

實際上,不僅在本地域名服務器中設定了高度快取,用戶主機也有快取,對于 Windows 電腦,可以通過命令ipconfig/displaydns查詢當前 DNS 快取,比如當我訪問了百度后,本機就會快取以下資訊:

 

 

 

快取雖然提升了 DNS 決議速度,但并不能保證一致性,因為一個網站的域名和 IP 地址的映射關系并不是永久不變的,可能快取的決議結果已失效,因而 DNS 快取時間不能設定太大!

Windows 電腦也可以通過命令ipconfig/flushdns清空本機快取,

(3)切換本地域名服務器

前面提到,在進行域名決議時,主機會向本地域名服務器發起遞回查詢,如果本地域名服務器的性能較差,或者未正確配置快取,那么我們上網的速度將會變得非常慢,因此選擇一個好的本地域名服務器將有助于提升沖浪速度!

默認情況下,本機在聯網時會通過 DHCP 協議自動獲得一個 DNS 服務器地址,那么如果此服務器性能不好,該如何更換呢?

以 Windows 為例,可以通過控制面板?—>網路和 Internet?—>網路連接?—>Internet 協議版本4(TCP/IPv4)修改本地域名服務器的 IP 地址,

 

 

 

互聯網上常見的公共 DNS 服務器的 IP 地址如下:

 

首選 DNS 服務器地址

備用 DNS 服務器地址

阿里

223.5.5.5

223.6.6.6

騰訊

119.29.29.29

182.254.116.116

百度

180.76.76.76

114.114.114.114

谷歌

8.8.8.8

8.8.4.4

114DNS

114.114.114.114

114.114.115.115


?一般情況下,自動獲取的本地域名服務器與主機位于同一個子網中,速度都挺快的,但是如果在上網程序中,發現打開網頁的速度很慢,也可以嘗試使用上面的公共 DNS 服務器,說不定速度會有所改善,

4. DNS 記錄和報文?

實際上,域名服務器中保存并不僅僅是域名和 IP 地址,而是保存了一個資源記錄(Resource Record,RR),

一個資源記錄包含四部分內容,分別是 Name,Value,Type,TTL,

TTL 指的是記錄的生存時間,以秒為單位,它決定了快取此記錄的過期時間,

Name 和 Value 的含義隨著 Type 的不同而不同,舉幾個常見例子:

  • 當 Type = A 時(A 是 Address 縮寫,也可用編號 1 表示),Name 表示域名,Value 表示對應的 IP 地址,如(www.example.com,93.184.216.34,A,86400),
  • 當 Type = NS 時(NS 是 Name Server 縮寫,也可用編號 2 表示),Name 表示一個域,Value 為負責該域決議的域名服務器的域名,如(baidu.com,ns1.baidu.com,NS,172800),此記錄用于沿著層級結構查詢鏈來路由 DNS 查詢,

如果一臺域名服務器是用于某特定域名的權威域名服務器,那么其將會有一條包含該域名的 A 記錄,

如果一臺域名服務器不是用于某特定域名的權威域名服務器,那么其將包含一條 NS 記錄,該記錄用來指定該域名由哪個域名服務器來進行決議;除此之外,它還將包含一條 A 記錄,該記錄提供了在 NS 記錄中 Value 欄位中的域名服務器的 IP 地址,

接下來介紹一下 DNS 報文的具體內容,DNS 報文分為兩類:查詢報文和回答報文,二者有著相同的格式,如下圖所示:

 

 

  • 事務 ID:用于標識 DNS 查詢的識別符號,查詢報文和其對應的回答報文有著相同的事務 ID,因此通過它可以區分 DNS 回答報文是對哪個請求進行回應的,
  • 標志:此欄位中含有若干標志,比如有一個『QR』標志位用于指出此報文是查詢報文(0)還是回答報文(1),再比如有一個『TC』標志位用于指出此報文長度是否大于 512 位元組,
  • 問題數:對應于下面查詢問題的數量(支持同時查詢多個域名,通常為一個),
  • 回答資源記錄數:對應于下面回答問題相關資源記錄的數量(一個域名可能有多個 IP 對應,那么將會有多個回答記錄),
  • 權威資源記錄數:對應于下面權威域名服務器相關資源記錄的數量,
  • 附加資源記錄數:對應于下面附加資訊相關資源記錄的數量,
  • 查詢問題:此區域為查詢內容,包含查詢域名和查詢型別(如  www.example.com,A),
  • 回答問題:此區域為查詢結果,包含一到多條資源記錄(如 www.example.com,93.184.216.34, A,300),
  • 權威域名服務器:此區域為其他權威域名服務器的記錄,即含有指向權威域名服務器的資源記錄,用以繼續決議程序,(如 baidu.com,ns1.baidu.com,NS,172800),
  • 附加資訊:此區域為其他有幫助的資訊,比如提供權威域名服務器所對應的 IP 地址,

最后,使用 Wireshark 抓一個 DNS 查詢報文和回答報文:

查詢報文:

 

 回答報文:

 

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/542904.html

標籤:訊息安全

上一篇:antd 3.x升4.x踩坑之路~

下一篇:DNS 是如何影響你沖浪速度的?網路干貨

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more