暢談DNS功能變數名稱解析

来源:https://www.cnblogs.com/liugp/archive/2022/06/18/16388960.html
-Advertisement-
Play Games

一、功能變數名稱系統概述 功能變數名稱系統DNS(Domain Name System)是網際網路使用的命名系統,用來把便於人們使用的機器名字轉換成為IP地址。功能變數名稱系統其實就是名字系統。為什麼不叫“名字”而叫“功能變數名稱”呢?這是因為在這種網際網路的命名系統中使用了許多的“域(domain)”,因此就出現了“功能變數名稱”這個名詞。 ...


目錄

一、功能變數名稱系統概述

功能變數名稱系統DNS(Domain Name System)是網際網路使用的命名系統,用來把便於人們使用的機器名字轉換成為IP地址。功能變數名稱系統其實就是名字系統。為什麼不叫“名字”而叫“功能變數名稱”呢?這是因為在這種網際網路的命名系統中使用了許多的“域(domain)”,因此就出現了“功能變數名稱”這個名詞。“功能變數名稱系統”明確地指明這種系統是應用在網際網路中。

二、常見的資源記錄類型

資源記錄類型 解釋
A記錄:地址記錄(Address) 將功能變數名稱FQND(Fully Qualified Domain Name:全限定功能變數名稱)映射到IP 正向解析。“優先順序”中的數字越小表示級別越高優先順序相同時,表示輪循,可以達到負載均衡的目的,但需要服務商支持。
CNAME記錄:別名記錄,正式名記錄(Canonical Name) 將A記錄指向的功能變數名稱指向另外一個功能變數名稱;A記錄優先於CNAME記錄。即如果一個主機地址同時存在A記錄和CNAME記錄,則CNAME記錄不生效。
NS記錄:功能變數名稱服務記錄(Name Service) 解析伺服器記錄。用來表明由哪台伺服器對該功能變數名稱進行解析。這裡的NS記錄只對子功能變數名稱生效。“優先順序”中的數字越小表示級別越高NS記錄優先於A記錄。即,如果一個主機地址同時存在NS記錄和A記錄,則A記錄不生效。這裡的NS記錄只對子功能變數名稱生效。
MX記錄:郵件交換器(Mail Exchanger) 郵件交換器記錄,用於告知郵件伺服器進程將郵件發送到指定的另一臺郵件伺服器。“優先順序”中的數字越小表示級別越高優先順序相同時,表示輪循,可以達到負載均衡的目的,但需要服務商支持。
SOA記錄:起始授權記錄(Start Of Authority) 指出當前區域內誰是 主DNS伺服器
AAAA記錄:(Ipv6)地址記錄(Address) 把功能變數名稱解析成IPv6地址。(FQDN–>IPv6) ;一個ipv4是32位,假設用A表示,那麼128位長度的IPv6就用AAAA來表示.
PTR記錄:指針(Pointer),反向解析 這個一個比較特殊。從IP到FQDN的解析。

三、IP地址分類

類別 解釋
A類IP地址 一個A類IP地址由1位元組的網路地址和3位元組主機地址組成,網路地址的最高位必須是“0”, 地址範圍從1.0.0.0 ~126.0.0.0。可用的A類網路有126個,每個網路能容納1億多個主機。
B類IP地址 一個B類IP地址由2個位元組的網路地址和2個位元組的主機地址組成,網路地址的最高位必須是“10”,地址範圍從128.0.0.0~191.255.255.255。可用的B類網路有16382個,每個網路能容納6萬多個主機 。
C類IP地址 一個C類IP地址由3位元組的網路地址和1位元組的主機地址組成,網路地址的最高位必須是“110”。範圍從192.0.0.0~223.255.255.255。C類網路可達209萬餘個,每個網路能容納254個主機。
D類地址用於多點廣播(Multicast) D類IP地址第一個位元組以“lll0”開始,它是一個專門保留的地址。它並不指向特定的網路,目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次定址一組電腦,它標識共用同一協議的一組電腦。224.0.0.0到239.255.255.255用於多點廣播 。
E類 E類IP地址 以“llll0”開始,為將來使用保留。240.0.0.0到255.255.255.254,255.255.255.255用於廣播地址。全零(“0.0.0.0”)地址對應於當前主機。全“1”的IP地址(“255.255.255.255”)是當前子網的廣播地址
註意:數字0和 127不作為A類地址,數字127保留給內部回送函數,而數字0則表示該地址是本地宿主機,不能傳送。

四、DNS查詢常用工具使用(dig、nslookup)

4.1、dig簡單使用

4.1.1、簡介

dig是一個在類Unix命令行模式下查詢DNS包括NS記錄,A記錄,MX記錄等相關信息的工具。

4.1.2、dig 命令預設的輸出信息可以分為 5 個部分。

  • 第一部分顯示 dig 命令的版本和輸入的參數。
  • 第二部分顯示服務返回的一些技術詳情,比較重要的是 status。如果 status 的值為 NOERROR 則說明本次查詢成功結束。
  • 第三部分中的 "QUESTION SECTION" 顯示我們要查詢的功能變數名稱。
  • 第四部分的 "ANSWER SECTION" 是查詢到的結果。
  • 第五部分則是本次查詢的一些統計信息,比如用了多長時間,查詢了哪個 DNS 伺服器,在什麼時間進行的查詢等等。
    4.1.2、簡單使用
    1)查詢CName記錄
$ dig qq.com CNAME

2)從指定的 DNS 伺服器上查詢

$ dig qq.com CNAME @8.8.8.8

如果不指定 DNS 伺服器,dig 會依次使用 /etc/resolv.conf 里的地址作為 DNS 伺服器
3)控制顯示結果,只顯示DNS解析處理的ip地址

$ dig +short qq.com

4)跟蹤整個查詢過程

$ dig +trace qq.com

5)查詢域的MX記錄

$ dig qq.com MX

6)查詢域的TTL記錄

$ dig qq.com TTL

7)僅查詢答案部分

$ dig qq.com +nocomments +noquestion +noauthority +noadditional +nostats

8)反向查詢

dig -x 8.8.8.8 +short
4.2、nslookup

4.2.1、簡介

nslookup用於查詢DNS的記錄,查詢功能變數名稱解析是否正常,在網路故障時用來診斷網路問題

4.2.2、簡單使用
1)直接查詢

命令格式:nslookup domain[dns-server]
$ nslookup www.163.com

2)查詢其它記錄(以CNAME為例,查詢其它記錄也一樣)

命令格式:nslookup -qt=type domain[dns-server]
type:
    A -->地址記錄
    AAAA   -->地址記錄
    AFSDB Andrew    -->文件系統資料庫伺服器記錄
    ATMA -->ATM地址記錄
    CNAME   -->別名記錄
    HINHO  -->硬體配置記錄,包括CPU、操作系統信息 
    ISDN   -->功能變數名稱對應的ISDN號碼
    MB   -->存放指定郵箱的伺服器
    MG    -->郵件組記錄
    MINFO   -->郵件組和郵箱的信息記錄
    MR   -->改名的郵箱記錄
    MX   -->郵件伺服器記錄
    NS  --> 名字伺服器記錄
    PTR    ->反向記錄
    RP    -->負責人記錄
    RT  -->路由穿透記錄
    SRV    -->TCP伺服器信息記錄
    TXT   -->功能變數名稱對應的文本信息
    X25  -->功能變數名稱對應的X.25地址記錄
$ nslookup -qt=CNAME www.163.com

五、功能變數名稱到IP地址的解析過程

linux DNS解析優先順序配置

$ grep -C3 hosts /etc/nsswitch.conf

fiels:優先順序最高,查/etc/hosts文件
dns:查dns功能變數名稱伺服器,對應的dns配置文件/etc/resolv.conf
myhostname:/etc/hosts和dns都解析不到IP時,myhostname就起作用了,它可以把hostname,解析成自己範圍內的IP地址,因此就可以ping通了。

可以通過下麵命令查看hostname對應的IP:

$ getent ahosts `hostname`
$ ping `hostname`

最好在/etc/hosts文件中配置hostname跟本機ip映射


  • 第①步:瀏覽器會檢查緩存中有沒有這個功能變數名稱對應的解析過的IP地址,如果緩存中有,這個解析過程就將結束。
  • 第②步:如果用戶的瀏覽器緩存中沒有,瀏覽器會查找操作系統緩存中是否有這個功能變數名稱對應的DNS解析結果。其實操作系統也會有一個功能變數名稱解析的過程,在Windows中可以通過C:\Windows\System32\drivers\etc\hosts文件來設置,Linux可以通過/etc/hosts來設置,你可以將任何功能變數名稱解析到任何能夠訪問的IP地址。如果你在這裡指定了一個功能變數名稱對應的IP地址,那麼瀏覽器會首先使用這個IP地址。
  • 第③步:如何、怎麼知道功能變數名稱伺服器呢?在我們的網路配置中都會有"DNS伺服器地址"這一項,這個地址就用於解決前面所說的如果兩個過程無法解析時要怎麼辦,操作系統會把這個功能變數名稱發送給這裡設置的LDNS(即本地區的功能變數名稱伺服器)。這個DNS通常都提供給你本地互聯網接入的一個DNS解析服務,在Windows下可以通過ipconfig
    /all
    查詢這個地址,如下圖所示。

在Linux下可以通過/etc/resolv.conf如下方式查詢配置的DNS Server,如下圖所示:

大約80%的功能變數名稱解析都到這裡就已經完成了,所以LDNS主要承擔了功能變數名稱的解析工作。

  • 第④步:如果LDNS仍然沒有命中,就直接到Root Server功能變數名稱伺服器請求解析。
  • 第⑤步:根功能變數名稱伺服器返回給本地功能變數名稱伺服器一個所查詢域的主功能變數名稱伺服器(gTLD Server)地址。gTLD是國際頂級功能變數名稱伺服器,如.com、.cn、.org等,全球只有13台左右。
  • 第⑥步:本地功能變數名稱伺服器(Local DNS Server)再向上一步返回的gTLD伺服器發送請求。
  • 第⑦步:接受請求的gTLD伺服器查找並返回此功能變數名稱對應的Name Server功能變數名稱伺服器的地址,這個Name Server通常就是你註冊的功能變數名稱伺服器,例如你在某個功能變數名稱服務提供商申請的功能變數名稱,那麼這個功能變數名稱解析任務就由這個功能變數名稱提供商的伺服器來完成。
  • 第⑧步:Name Server功能變數名稱伺服器會查詢存儲的功能變數名稱和IP的映射關係表,正常情況下都根據功能變數名稱得到目標IP記錄,連同一個TTL值返回給DNS Server功能變數名稱伺服器。
  • 第⑨步:返回該功能變數名稱對應的IP和TTL值,Local DNS Server會緩存這個功能變數名稱和IP的對應關係,緩存的時間由TTL值控制。
  • 第⑩步:把解析的結果返回給用戶,用戶根據TTL值緩存在本地系統緩存中,功能變數名稱解析過程結束。
    在實際的DNS解析過程中,可能還不止這10個步驟,如Name Server也可能有多級,或者有一個GTM來負載均衡控制,這都有可能會影響功能變數名稱解析的過程。

六、常用DNS地址

114.114.114.114:是國內移動、電信和聯dao通通用的DNS,解析成功率相對來說更高,國內用戶使用的比較多,速度相對快、穩定,是國內用戶上網常用的DNS。
8.8.8.8:是GOOGLE公司提供的DNS,該地址是全球通用的,相對來說,更適合國外以及訪問國外網站的用戶使用。
114.114.114.114:公共DNS伺服器IPv4地址
180.76.76.76:百度公bai共DNS伺服器IPv4地址
223.5.5.5:阿裡公共DNS伺服器IPv4地址

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天分享一篇文章,是關於如何使用 Manim 這個工具 Python 工具庫來製作視頻的。 據我所知,目前應該是沒有專門的書籍和教程來介紹這個工具的。至於教程,不同版本的Manim有一部分文檔,其中 Manim社區 版的文檔相對而言要完善些。 本次僅介紹 Manim 中 文本 的使用,使用的版本為 ...
  • 程式員都知道寫代碼是一件低調又枯燥的事情,一天到晚盯著電腦屏幕看。怎麼能讓寫代碼變成一件酷炫的事情,那就從裝扮編輯器開始。 安裝了這些插件,保證同事看到後,都會問你。 兄弟,你安裝了什麼插件,讓我也裝一下。 1. 先換個漂亮主題 Vuesion Theme Idea編輯器的界麵灰矇矇的,有點性冷淡的 ...
  • 一、題目 描述 給定一個僅包含0和1的n*n二維矩陣,請計算二維矩陣的最大值。 計算規則如下 1、每行元素按下標順序組成一個二進位數(下標越大約排在低位),二進位數的值就是該行的值,矩陣各行之和為矩陣的值 2、允許通過向左或向右整體迴圈移動每個元素來改變元素在行中的位置 比如:[1,0,1,1,1] ...
  • 做下記錄, 首先插入一個dataGridView控制項,兩個button按鈕(導入數據,導出數據),一個ComboBox(獲取列標題使用),一個textbox(輸入關鍵字),一個定位按鈕(定位使用) 1,導入數據(NPOI) 1 2 private void daoRuShuJu_cmd_Click( ...
  • 最近在看 C++ 的方法和類模板,我就在想 C# 中也是有這個概念的,不過叫法不一樣,人家叫模板,我們叫泛型,哈哈,有點意思,這一篇我們來聊聊它們底層是怎麼玩的? 一:C++ 中的模板玩法 畢竟 C++ 是相容 C 語言,而 C 是過程式的玩法,所以 C++ 就出現了兩種模板類型,分別為:函數模板 ...
  • 一、CDN是什麼? CDN的全稱是Content Delivery Network,即內容分髮網絡。其目的是通過在現有的Internet中增加一層新的CACHE(緩存)層,將網站的內容發佈到最接近用戶的網路”邊緣“的節點,使用戶可以就近取得所需的內容(就近原則),提高用戶訪問網站的響應速度。從技術上 ...
  • Air105 有 1 個 Timer 單元,包含 8 個獨立定時器: Timer0 到 Time7, 8 個定時器中斷源獨立,每個定時器單獨占 1 個中斷源, 使用 PCLK 時鐘頻率作為定時器計時鐘源, 定時器採用向下計數方式. 每個 Timer 單元定時器都支持 PWM 模式, PWM 模式最高... ...
  • #一、防火牆配置 前言:電腦的防火牆配置保證了別的主機無法訪問本機非開放埠 1、防火牆介紹 Linux預設防火牆是開啟的,而且所以的埠對外都是不可訪問的,該策略保證了電腦的安全 但同時也帶來了問題如:其他電腦無法訪問本機上項目開啟的埠號 在Linux上安裝Tomcat,Tomcat軟體需 ...
一周排行
    -Advertisement-
    Play Games
  • 經常看到有群友調侃“為什麼搞Java的總在學習JVM調優?那是因為Java爛!我們.NET就不需要搞這些!”真的是這樣嗎?今天我就用一個案例來分析一下。 昨天,一位學生問了我一個問題:他建了一個預設的ASP.NET Core Web API的項目,也就是那個WeatherForecast的預設項目模 ...
  • 很多軟體工程師都認為MD5是一種加密演算法,然而這種觀點是不對的。作為一個 1992 年第一次被公開的演算法,到今天為止已經被髮現了一些致命的漏洞。本文討論MD5在密碼保存方面的一些問題。 ...
  • Maven可以使我們在構建項目時需要用到很多第三方類jar包,如下一些常用jar包 而maven的出現可以讓我們避免手動導入jar包出現的某些問題,它可以自動下載那須所需要的jar包 我們只需要在創建的maven項目自動生成的pom.xml中輸入如下代碼 <dependencies> <!--ser ...
  • 來源:https://developer.aliyun.com/article/694020 非同步調用幾乎是處理高併發Web應用性能問題的萬金油,那麼什麼是“非同步調用”? “非同步調用”對應的是“同步調用”,同步調用指程式按照定義順序依次執行,每一行程式都必須等待上一行程式執行完成之後才能執行;非同步調 ...
  • 1.面向對象 面向對象編程是在面向過程編程的基礎上發展來的,它比面向過程編程具有更強的靈活性和擴展性,所以可以先瞭解下什麼是面向過程編程: 面向過程編程的核心是過程,就是分析出實現需求所需要的步驟,通過函數一步一步實現這些步驟,接著依次調用即可,再簡單理解就是程式 從上到下一步步執行,從頭到尾的解決 ...
  • 10瓶毒藥其中只有一瓶有毒至少需要幾隻老鼠可以找到有毒的那瓶 身似浮雲,心如飛絮,氣若游絲。 用二分查找和二進位位運算的思想都可以把死亡的老鼠降到最低。 其中,二進位位運算就是每一隻老鼠代表一個二進位0或1,0就代表老鼠存活,1代表老鼠死亡;根據數學運算 23 = 8、24 = 16,那麼至少需要四 ...
  • 一、Kafka存在哪些方面的優勢 1. 多生產者 可以無縫地支持多個生產者,不管客戶端在使用單個主題還是多個主題。 2. 多消費者 支持多個消費者從一個單獨的消息流上讀取數據,而且消費者之間互不影響。 3. 基於磁碟的數據存儲 支持消費者非實時地讀取消息,由於消息被提交到磁碟,根據設置的規則進行保存 ...
  • 大家好,我是陶朱公Boy。 前言 上一篇文章《關於狀態機的技術選型,最後一個真心好》我跟大家聊了一下關於”狀態機“的話題。從眾多技術選型中我也推薦了一款阿裡開源的狀態機—“cola-statemachine”。 於是就有小伙伴私信我,自己項目也考慮引入這款狀態機,但網上資料實在太少,能不能系統的介紹 ...
  • 使用腳本自動跑實驗(Ubuntu),將實驗結果記錄在文件中,併在實驗結束之後將結果通過郵件發送到郵箱,最後在windows端自動解析成excel表格。 ...
  • 話說在前面,我不是小黑子~ 我是超級大黑子😏 表弟大周末的跑來我家,沒事幹天天騷擾我,搞得我都不能跟小姐姐好好聊天了,於是為了打發表弟,我決定用Python做一個小游戲來消耗一下他的精力,我思來想去,決定把他變成小黑子,於是做了一個坤坤打籃球的游戲,沒想到他還挺愛玩的~ 終於解放了,於是我把游戲寫 ...