DNS根服務器里存了世界上所有的域名嗎?
DNS根服務器里并沒有存放世界上所有的域名。原因如下:
我們發消息、發郵件、看視頻、瀏覽網頁等等一系列的操作和快遞類似。
舉個例子:
瀏覽一個網頁時,在瀏覽器的地址欄輸入網址(域名),按下回車鍵,不到一秒鐘的時間,網站的內容就展現在了屏幕上了。
這個過程簡單點說就是電腦告訴網站的服務器:“我要網站的那些東西,趕緊發給我”。然后網站服務器按照要求,再把數據傳給電腦。
但在這樣一個簡單的流程中,電腦首先遇到的第一個問題:該怎么找到這個網站的服務器呢?01
這和寄快遞一樣,有了準確的地址,才能寄快遞到對方手上。
在互聯網上也是這樣,每臺設備(手機、電腦等)都需要一個地址才能找到目的地。這個地址就是IP地址,有了這個地址、電腦、手機這些設備就能找到對方。
目前IPV4地址已經枯竭了,所以現在在逐漸往IPV6地址開始過渡。
02
但在地址欄輸入的并非IP地址而是域名。域名就等于小區、學校、商店的名字,主要是為了便于大家記憶。
如果僅僅知道一個名字,是沒有辦法把快遞寄出去,還需要知道這個名字(域名)對應的是哪個省哪個市哪條街道多少號(IP地址)。所以我們按下回車鍵之后,要先通過DNS服務器查到這個域名對應的IP地址是多少。DNS服務器相當于一個查號臺,報一個企業的名字,查號臺就告訴我們對應的電話號碼和地址。
那電腦要在哪里找到DNS服務器呢?
在網絡屬性里面,咱們能看到。
聯網后電腦會自動獲取寬帶運營商DNS服務器的IP地址,也可以去自己指定的公共DNS服務器查詢。
所以按下回車鍵之后,電腦會根據域名找DNS服務器,查詢(解析)這個域名所對應的IP地址,如果能查到的話,DNS服務器就會把IP地址發回來,如果這臺DNS服務器查不到,它就會去問它上面的根域名服務器。
主機向本地域名服務器的查詢一般都是采用遞歸查詢。如果主機所詢問的本地域名服務器不知道被查詢域名的 IP 地址,那么本地域名服務器就以 DNS 客戶的身份,向其他根域名服務器繼續發出查詢請求報文。
本地域名服務器向根域名服務器的查詢通常是采用迭代查詢。當根域名服務器收到本地域名服務器的迭代查詢請求報文時,要么給出所要查詢的 IP 地址,要么告訴本地域名服務器:“你下一步應當向哪一個域名服務器進行查詢”。然后讓本地域名服務器進行后續的查詢。
根域名服務器全球只有13臺IPV4根服務器,但為了緩解壓力,也會鏡像出很多根域名服務器,所以加上鏡像出來的根域名服務器,全球大概有一千多臺。
13臺根服務器以任播技術在全球多個地點設立鏡像站,全部根服務器都是以同一份根域文件返回頂級域名權威服務器(包括通用頂級域和國家頂級域)。根域名服務器中雖然沒有每個域名的具體信息,但儲存了負責每個域(如:.com、.xyz、.cn、.ren、.top等)的解析的域名服務器的地址信息,如同通過北京電信你問不到廣州市某單位的電話號碼,但是北京電信可以告訴你去查020114。
每個本地域名服務器都維護一個高速緩存,存放最近用過的名字以及從何處獲得名字映射信息的記錄。
可大大減輕根域名服務器的負荷,使互聯網上的DNS查詢請求和回答報文的數量大為減少。為保持高速緩存中的內容正確,域名服務器應為每項內容設置計時器,并處理超過合理時間的項(例如,每個項目只存放兩天)。最后,終于問到了這個域名對應的IP地址是多少,就可以開始和網站的服務器進行聯系。
本地電腦和服務器聯系的過程(有點像寄快遞)“本地電腦要網站的數據”把這句話打包,同時在數據包上寫上IP地址。由電腦網卡轉給路由器,路由器通過網線轉給光貓,光貓通過光纖轉出去,再由其他的路由器轉下去,直到轉到目的地,而這個路由器就相當于快遞的轉運中心。
但這里就會有一個問題,去網站服務器的路有很多條,到底該怎么走呢?
這個時候,就要依靠MAC地址(可以想象成咱們的身份證號或者手機號)。
舉個例子:
網站服務器在廣州,請求數據包在成都路由器的時候,路由器會根據數據包的IP地址選擇一條最優的線路,下一站按這個MAC地址去找貴州的路由器。
數據包到了貴州,路由器同樣會根據數據包的IP地址選擇一條線路,同時把數據包的MAC地址改為下一個路由器的,直到數據包被轉到網站服務器的網卡上。
服務器,電腦等都運行了很多的程序,網卡要把這個數據包給誰呢?
這時網卡就要依靠端口來分發數據了。不同的程序都有不同的端口,網卡說,80端口的程序,有你的數據包,最后,網站服務器再根據要求把數據發到咱們電腦上,網頁就顯示在屏幕上了。
為什么有些網站怎么打開的速度很慢呢?這個就和咱們收快遞一樣,離發貨地越遠,需要的時間也就越長。
雖然數據都是通過電信號、光信號傳輸的,速度非常快,但同樣會受到物理因素的影響,所以要是離服務器的物理距離越遠,信號傳輸的時間自然也會越長,經過的路由也就越多,查詢并發數據包也需要時間,有時候還會把數據包搞丟,自然速度就慢了。
有的小伙伴會說京東的快遞是上午買,下午就能收到呢?
這是因為京東在各個地區都建了倉庫。在成都下單,就從成都倉庫發貨。在沈陽的下單,也從離他最近的沈陽倉庫發貨,速度自然要快很多。
同樣的,在網上也可以這樣搞(CDN)。舉個例子:
網站的主(源)服務器在廣州,為了提高全球小伙伴的訪問速度,所以在各個地區都建了服務器,這些服務器就像分身一樣,定時和廣州的主服務器同步數據,訪問該網站的時候,大家都去離自己最近的服務器獲取數據,這樣既提高了大家訪問的速度,又減輕了主服務器的壓力,同時還提高了安全性,這種就是咱們說的CDN(內容分發網絡)。
綜上所述DNS根服務器里并沒有存放世界上所有的域名,并且為了緩解壓力,根服務器會在全球各地設立鏡像站。
正常情況下,先查找本地的域名服務器,本地域名服務器沒有才會去根服務器查找。根服務器中雖然沒有每個域名的具體信息,但儲存了負責每個域中解析的域名服務器的地址信息,只需要沿著根域名服務器指向去查找就可以了。
以上個人淺見,歡迎批評指正。
認同我的看法,請點個贊再走,感謝!
喜歡我的,請關注我,再次感謝!