DNS的幾個基本概念:


一. 根域


就是所謂的“.”,其實我們的網址www.baidu.com在配置當中應該是www.baidu.com.(最后有一點),一般我們在瀏覽器里輸入時會省略后面的點,而這也已經成為了習慣。

根域服務器我們知道有13臺,但是這是錯誤的觀點。

根域服務器只是具有13個IP地址,但機器數量卻不是13臺,因為這些IP地址借助了任播的技術,所以我們可以在全球設立這些IP的鏡像站點,你訪問到的這個IP并不是唯一的那臺主機。

具體的鏡像分布可以參考維基百科。這些主機的內容都是一樣的

二. 域的劃分

根域下來就是頂級域或者叫一級域,

有兩種劃分方式,一種互聯網剛興起時的按照行業性質劃分的com.,net.等,一種是按國家劃分的如cn.,jp.,等。

具體多少你可以自己去查,我們這里不關心。

每個域都會有域名服務器,也叫權威域名服務器。

Baidu.com就是一個頂級域名,而www.baidu.com卻不是頂級域名,他是在baidu.com 這個域里的一叫做www的主機。

一級域之后還有二級域,三級域,只要我買了一個頂級域,并且我搭建了自己BIND服務器(或者其他軟件搭建的)注冊到互聯網中,那么我就可以隨意在前面多加幾個域了(當然長度是有限制的)。

比如a.www.baidu.com,在這個網址中,www.baidu.com變成了一個二級域而不是一臺主機,主機名是a。

三. 域名服務器

能提供域名解析的服務器,上面的記錄類型可以是A(address)記錄,NS記錄(name server),MX(mail),CNAME等。

(詳解參見博客:域名解析中A記錄、CNAME、MX記錄、NS記錄的區別和聯系)

A記錄是什么意思呢,就是記錄一個IP地址和一個主機名字,比如我這個域名服務器所在的域test.baidu.com,我們知道這是一個二級的域名,然后我在里面有一條A記錄,記錄了主機為a的IP,查到了就返回給你了。

如果我現在要想baidu.com這個域名服務器查詢a.test.baidu.com,那么這個頂級域名服務器就會發現你請求的這個網址在test.baidu.com這個域中,我這里記錄了這個二級域的域名服務器test.baidu.com的NS的IP。我返回給你這個地址你再去查主機為a的主機把。

這些域內的域名服務器都稱為權威服務器,直接提供DNS查詢服務。(這些服務器可不會做遞歸哦)

四.解析過程

那么我們的DNS是怎么解析一個域名的呢?


1.現在我有一臺計算機,通過ISP接入了互聯網,那么ISP就會給我分配一個DNS服務器,這個DNS服務器不是權威服務器,而是相當于一個代理的dns解析服務器,他會幫你迭代權威服務器返回的應答,然后把最終查到IP返回給你。

2.現在的我計算機要向這臺ISPDNS發起請求查詢www.baidu.com這個域名了,(經網友提醒:這里其實準確來說不是ISPDNS,而應該是用戶自己電腦網絡設置里的DNS,并不一定是ISPDNS。比如也有可能你手工設置了8.8.8.8)

3.ISPDNS拿到請求后,先檢查一下自己的緩存中有沒有這個地址,有的話就直接返回。這個時候拿到的ip地址,會被標記為非權威服務器的應答

4.如果緩存中沒有的話,ISPDNS會從配置文件里面讀取13個根域名服務器的地址(這些地址是不變的,直接在BIND的配置文件中),

5.然后像其中一臺發起請求。

6.根服務器拿到這個請求后,知道他是com.這個頂級域名下的,所以就會返回com域中的NS記錄,一般來說是13臺主機名和IP。

7.然后ISPDNS向其中一臺再次發起請求,com域的服務器發現你這請求是baidu.com這個域的,我一查發現了這個域的NS,那我就返回給你,你再去查。

(目前百度有4臺baidu.com的頂級域名服務器)。

8.ISPDNS不厭其煩的再次向baidu.com這個域的權威服務器發起請求,baidu.com收到之后,查了下有www的這臺主機,就把這個IP返回給你了,

9.然后ISPDNS拿到了之后,將其返回給了客戶端,并且把這個保存在高速緩存中。



下面我們來用 nslookup 這個工具詳細來說一下解析步驟:


從上圖我們可以看到:

????????? 第一行Server是:DNS服務器的主機名--210.32.32.1

????????? 第二行Address是: 它的IP地址--210.32.32.1#53

????????? 下面的Name是:解析的URL--??? www.jsjzx.com

????????? Address是:解析出來的IP--112.121.162.168


但是也有像百度這樣的DNS比較復雜的解析:

你會發現百度有一個cname = www.a.shifen.com? 的別名。

這是怎么一個過程呢?

我們用dig工具來跟蹤一下把(linux系統自帶有)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Dig工具會在本地計算機做迭代,然后記錄查詢的過程。


第一步是向我這臺機器的ISPDNS獲取到根域服務區的13個IP和主機名[b-j].root-servers.net.。

第二步是向其中的一臺根域服務器(Servername就是末行小括號里面的)發送www.baidu.com的查詢請求,他返回了com.頂級域的服務器IP(未顯示)和名稱,

第三步,便向com.域的一臺服務器192.33.4.12請求,www.baidu.com,他返回了baidu.com域的服務器IP(未顯示)和名稱,百度有四臺頂級域的服務器

???? 【此處可以用dig @192.33.4.12 www.baidu.com查看返回的百度頂級域名服務器IP地址】。


第四步呢,向百度的頂級域服務器(202.108.22.220)請求www.baidu.com,他發現這個www有個別名,而不是一臺主機,別名是www.a.shifen.com。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

按照一般的邏輯,當dns請求到別名的時候,查詢會終止,而是重新發起查詢別名的請求,所以此處應該返回的是www.a.shifen.com而已。

但是為什么返回a.shifen.com的這個域的NS呢?

我們可以嘗試下面的這個命令:dig +trace? shifen.com 看看有什么結果。。。。。。。。


你會發現第三步時shifen.com這個頂級域的域名服務器和baidu.com這個域的域名服務器是同一臺主機(即:dns.baidu.com)!


當我拿到www.baidu.com的別名www.a.shifen.com的時候,我本來需要重新到com域查找shifen.com域的NS,但是因為這兩個域在同一臺NS上,所以直接向本機發起了,

shifen.com域發現請求的www.a.shifen.com是屬于a.shifen.com這個域的,

于是就把a.shifen.com的這個NS和IP返回,讓我到a.shifen.com這個域的域名服務器上查詢www.a.shifen.com。

于是我便從ns X .a.shifen.com中一臺拿到了一條A記錄,最終的最終也便是www.baidu.com的IP地址了.【此處也可以用dig +trace www.a.shifen.com】跟蹤一下

用一個圖來說明一下(圖中第三步的全世界只有13臺是錯誤的)


以下內容為在虛擬機中搭建local dns服務器得到的實驗數據,糾正上述結論

在上面的分析中,我們用dig工具進行了追蹤,但是dig沒有繼續追蹤當我們從baidu.com拿到cname和ns2.a.shifen.com的IP之后的事情。

我們就所以然的下結論認為local dns會向ns2.a.shifen.com請求www.a.shifenc.om。

其實這個想法是錯誤,在自己的本地搭建一個local dns,抓取整個解析過程中是所有包,看看就明白拉。

實際的結果是雖然dns.baidu.com返回了a.shifen.com域的服務器地址和IP,

但是local dns并不是直接向上述返回的IP請求www.a.shifen.com,而是再一次去請求com域,得到shifen.com域的服務器(也就是baidu.com的那四臺),

然后又請求www.a.shifen.com,返回a.shifen.com的域的服務器,最后才是去請求www.a.shifen.com,

雖然上面已經返回了IP,但是實驗的結果就是再走一遍shifen.com域的查詢。


上圖就是localdns在解析www.baidu.com的抓包全過程。藍色那條就是在收到cname和響應的a.shifen.com的域名服務器IP地址之后,繼續向com域請求shifen.com。

下表是這些機器的管理單位、設置地點及最新的IP地址:

字母
IPv4地址
IPv6地址
自治系統編號(AS-number)
舊名稱
運作單位
設置地點
#數量(全球性/地區性)
軟件
A
198.41.0.4
2001:503:ba3e::2:30
AS19836
ns.internic.net
VeriSign
以任播技術分散設置于多處
6/0
BIND
B
192.228.79.201
(2004年1月起生效,舊IP地址為128.9.0.107)
2001:478:65::53 (not in root zone yet)
none
ns1.isi.edu
南加州大學信息科學研究所
(Information Sciences Institute, University of Southern California)
美國加州馬里納戴爾雷伊
(Marina del Rey)
0/1
BIND
C
192.33.4.12
2001:500:2::C
AS2149
c.psi.net
Cogent Communications
以任播技術分散設置于多處
6/0
BIND
D
199.7.91.13(2013年起生效,舊IP地址為128.8.10.90)
2001:500:2::D
AS27
terp.umd.edu
馬里蘭大學學院市分校
(University of Maryland, College Park)
美國馬里蘭州大學公園市
(College Park)
1/0
BIND
E
192.203.230.10
?
AS297
ns.nasa.gov
NASA
美國加州山景城
(Mountain View)
1/0
BIND
F
192.5.5.241
2001:500:2f::f
AS3557
ns.isc.org
互聯網系統協會
(Internet Systems Consortium)
以任播技術分散設置于多處
2/47
BIND
G
192.112.36.4
?
AS5927
ns.nic.ddn.mil
美國國防部國防信息系統局
(Defense Information Systems Agency)
以任播技術分散設置于多處
6/0
BIND
H
128.63.2.53
2001:500:1::803f:235
AS13
aos.arl.army.mil
美國國防部陸軍研究所
(U.S. Army Research Lab)
美國馬里蘭州阿伯丁(Aberdeen)
1/0
NSD
I
192.36.148.17
2001:7fe::53
AS29216
nic.nordu.net
瑞典奧托諾米嘉公司(Autonomica)
以任播技術分散設置于多處
36
BIND
J
192.58.128.30
(2002年11月起生效,舊IP地址為198.41.0.10)
2001:503:c27::2:30
AS26415
?
VeriSign
以任播技術分散設置于多處
63/7
BIND
K
193.0.14.129
2001:7fd::1
AS25152
?
荷蘭RIPE NCC
以任播技術分散設置于多處
5/13
NSD
L
199.7.83.42
(2007年11月起生效,舊IP地址為198.32.64.12)
2001:500:3::42
AS20144
?
ICANN
以任播技術分散設置于多處
37/1
NSD
M
202.12.27.33
2001:dc3::35
AS7500
?
日本WIDE Project
以任播技術分散設置于多處
5/1
BIND
中國大陸地區內只有6組根服務器鏡像(F,I(3臺),J,L),在少數極端情況下(比如全球互聯網出現大面積癱瘓、或者中國互聯網國際出口堵塞),至少能保證國內的站點由國內的域名服務器來解析。雖然國外的用戶連接到我國的網絡會出現問題,但是我國可以自己解決中國境內的域名解析問題,保證國內網絡正常使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387987.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387987.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387987.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

廢水處理計算書 excel_廢水監測數據是匿名的嗎?

廢水處理計算書 excelOur collective flushes help track and respond to Covid-19 and so much more. Your body waste contains harvestable compounds that can reveal your illnesses and diseases, consumption habits, and cosmetic use. Researchers gain insights from…

文件在線預覽 圖片 PDF Excel Word

1、前端實現pdf文件在線預覽功能 方式一、pdf文件理論上可以在瀏覽器直接打開預覽但是需要打開新頁面。在僅僅是預覽pdf文件且UI要求不高的情況下可以直接通過a標簽href屬性實現預覽 <a href"文檔地址"></a> 2、word、xls、ppt文件在線預覽功能 word、pp…

數據科學還是計算機科學_您應該擁有數據科學博客的3個原因

數據科學還是計算機科學“Start a Blog to cement the things you learn. When you teach what you’ve learned in the form of a blog you can see the gaps in your knowledge and fill them in” — My Manager (2019)“創建一個博客以鞏固您所學到的東西。 當您以博客的形…

D3.js 加標簽

條形圖還可以配上實際的數值,我們通過文本元素添加數據值。 svg.selectAll("text").data(dataset).enter().append("text").text(function(d){return d;}) 通過 x 和 y 值來定位文本元素。 .attr("text-anchor", "middle").attr("…

oppo5.0以上機器(親測有效)激活Xposed框架的教程

對于喜歡玩手機的朋友而言&#xff0c;常常會用到xposed框架以及種類繁多功能強大的模塊&#xff0c;對于5.0以下的系統版本&#xff0c;只要手機能獲得ROOT權限&#xff0c;安裝和激活xposed框架是異常簡便的&#xff0c;但隨著系統版本的迭代&#xff0c;5.0以后的系統&#…

和matlab一樣的輕量級

Python&#xff08;英國發音&#xff1a;/?pa?θ?n/ 美國發音&#xff1a;/?pa?θɑ?n/&#xff09;, 是一種面向對象、解釋型計算機程序設計語言&#xff0c;由Guido van Rossum于1989年發明&#xff0c;第一個公開發行版發行于1991年。Python是純粹的自由軟件&#xff…

熊貓分發_流利的熊貓

熊貓分發Let’s uncover the practical details of Pandas’ Series, DataFrame, and Panel讓我們揭露Pandas系列&#xff0c;DataFrame和Panel的實用細節 Note to the Readers: Paying attention to comments in examples would be more helpful than going through the theo…

redis tomcat session

本機ip為192.168.1.101 1、準備測試環境 兩個Tomcat 在Eclipse中新建2個Servers&#xff0c;指定對應的Tomcat&#xff0c;端口號錯開。 Tomcat1&#xff08;18005、18080、18009&#xff09; Tomcat2&#xff08;28005、28080、28009&#xff09; 一個Redis Redis下載官網&…

Fiddler抓包-只抓APP的請求

from:https://www.cnblogs.com/yoyoketang/p/6582437.html fiddler抓手機app的請求&#xff0c;估計大部分都會&#xff0c;但是如何只抓來自app的請求呢&#xff1f; 把來自pc的請求過濾掉&#xff0c;因為請求太多&#xff0c;這樣會找不到重要的信息了。 環境準備&#xff1…

技術分享 | 基于EOS的Dapp開發

區塊鏈技術是當前最能挑動社會輿論神經&#xff0c;激起資本欲望的現象級技術。去中心化的價值互聯&#xff0c;信用共識&#xff0c;新型組織構架&#xff0c;新的生產關系和智能合約&#xff0c;顛覆法幣的發行流通體系和記賬體系。這些新的技術都讓人充滿想象&#xff0c;充…

DOCKER windows 安裝Tomcat內容

DOCKER windows安裝 DOCKER windows安裝 1.下載程序包2. 設置環境變量3. 啟動DOCKERT4. 分析start.sh5. 利用SSH工具管理6. 下載鏡像 6.1 下載地址6.2 用FTP工具上傳tar包6.3 安裝6.4 查看鏡像6.5 運行 windows必須是64位的 1.下載程序包 安裝包 https://github.com/boot2doc…

python記錄日志_5分鐘內解釋日志記錄—使用Python演練

python記錄日志Making your code production-ready is not an easy task. There are so many things to consider, one of them being able to monitor the application’s flow. That’s where logging comes in — a simple tool to save some nerves and many, many hours.使…

理解 Linux 中 `ls` 的輸出

理解 Linux 中 ls 的輸出ls 的輸出會因各 Linux 版本變種而略有差異&#xff0c;這里只討論一般情況下的輸出。 下面是來自 man page 關于 ls 的描述&#xff1a; $ man ls ls - list directory contents 列出文件夾中的內容。 但一般我們會配合著 -l 參數使用&#xff0c;將輸…

鎖表的進程和語句,并殺掉

查看鎖表進程SQL語句1&#xff1a; select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object lo, dba_objects ao, v$session sess where ao.object_id lo.object_id and lo.session_id sess.sid; 查看鎖…

p值 t值 統計_非統計師的P值

p值 t值 統計Here is a summary of how I was taught to assess the p-value in hopes of helping some other non-statistician out there.這是關于如何教會我評估p值的摘要&#xff0c;希望可以幫助其他一些非統計學家。 P-value in Context上下文中的P值 Let’s start wit…

獲取對象屬性(key)

for…in方法Object.keysObject.getOwnPropertyNames關于對象的可枚舉性&#xff08;enumerable&#xff09; var obj {a: 1,b: 2 } Object.defineProperty(obj, c, {value: 3,enumerable: false }) 復制代碼enumerable設置為false&#xff0c;表示不可枚舉&#xff0c;for…in…

github免費空間玩法

GitHub 是一個用于使用Git版本控制系統的項目的基于互聯網的存取服務,GitHub于2008年2月運行。在2010年6月&#xff0c;GitHub宣布它現在已經提供可1百萬項目&#xff0c;可以說非常強大。 Github雖然是一個代碼倉庫&#xff0c;但是Github還免費為大家提供一個免費開源Github …

用php生成HTML文件的類

目的 用PHP生成HTML文檔, 支持標簽嵌套縮進, 支持標簽自定義屬性 起因 這個東西確實也是心血來潮寫的, 本來打算是輸出HTML片段用的, 但后來就干脆寫成了一個可以輸出完整HTML的功能; 我很滿意里邊的實現縮進的機制, 大家有用到的可以看看p.s. 現在都是真正的前后端分離了(vue,…

在Markdown中輸入數學公式

寫在前面 最近想要把一些數學和編程方面的筆記記錄成電子筆記&#xff0c;因為修改、插入新內容等比較方便。這里記一下在Markdown中輸入數學公式的方法。 基礎知識 公式與文本的區別 公式輸入和文本輸入屬于不同的模式&#xff0c;公式中無法通過空格來控制空白&#xff0c;通…

如何不部署Keras / TensorFlow模型

While the most articles about deep learning are focusing at the modeling part, there are also few about how to deploy such models to production. Some of them say “production”, but they often simply use the un-optimized model and embed it into a Flask web…