日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DNS 流程说明以及相关问题的解析

發布時間:2024/10/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DNS 流程说明以及相关问题的解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、流程

流程圖如下

如圖所示,大致就是:瀏覽器輸入地址,然后瀏覽器這個進程去調操作系統某個庫里的 gethostbyname 函數(例如,Linux GNU glibc 標準庫的 gethostbyname 函數),然后呢這個函數通過網卡給 DNS 服務器發 UDP 請求,接收結果,然后將結果給返回給瀏覽器。

這張圖其實已經講明白大致的流程,但是細節上可能有些差異。 例如

  • 我們在用 chrome 瀏覽器的時候,其實會先去瀏覽器的 dns 緩存里頭查詢,DNS 緩存中沒有,再去調用 gethostbyname 函數。
  • gethostbyname 函數在試圖進行 DNS 解析之前首先檢查域名是否在本地 Hosts 里,如果沒找到再去 DNS 服務器上查。

不過,看到這里!請回憶下這兩道面試題?

現在,會回答了么?

什么,你還不懂怎么答?把文章拉到開頭。從頭看過。 不過呢,需要補充說明一下,DNS中也有一個地方用到了 TCP 協議。那就是區域傳送

DNS 的規范規定了 2 種類型的 DNS 服務器,一個叫主 DNS 服務器,一個叫輔助 DNS 服務器。在一個區中主 DNS 服務器從自己本機的數據文件中讀取該區的 DNS 數據信息,而輔助 DNS 服務器則從區的主DNS 服務器中讀取該區的 DNS 數據信息。當一個輔助 DNS 服務器啟動時,它需要與主 DNS 服務器通信,并加載數據信息,這就叫做區傳送(zone transfer)。 這種情況下,使用TCP協議。

講到這里。其實面試官是可以深入追問的,如下所示

針對第一問,為什么域名解析用UDP協議?

因為 UDP 快啊!UDP 的 DNS 協議只要一個請求、一個應答就好了。而使用基于 TCP 的 DNS 協議要三次握手、發送數據以及應答、四次揮手。但是 UDP 協議傳輸內容不能超過 512 字節。不過客戶端向DNS 服務器查詢域名,一般返回的內容都不超過 512 字節,用 UDP 傳輸即可。

針對第二問,為什么區域傳送用 TCP 協議?

因為 TCP 協議可靠性好啊!你要從主 DNS 上復制內容啊,你用不可靠的 UDP ? 因為 TCP 協議傳輸的內容大啊,你用最大只能傳 512 字節的 UDP 協議?萬一同步的數據大于 512 字節,你怎么辦?

二、原理

現在,講最后一塊 DNS 解析域名的原理!這塊是重中之重! 先介紹 linux 下一個 dig 命令,以顯示解析域名的過程。 為了便于說明,我們來 dig 一下天貓的過程

dig www.tmall.com

結果如下圖所示

莫方,看不懂沒事。 現在我們來讀重點的兩段。第一段代表請求參數如下圖所示

這段為查詢內容。 DNS 的查詢參數一般有三個

(1)域名:服務器、郵件服務器(郵件地址中 @ 后面的部分)的名稱。

(2)Class:在設置 DNS 方案時,互聯網之外的網絡也考慮到了,而 Class 就是用來識別網絡的,不過現在只有互聯網,所以它的值永遠都是代表互聯網的 IN 。

(3)記錄類型:標識域名對應何種類型的記錄。

  • 類型為 A,表示域名對應的 IP 地址。
  • 類型為 MX 時,表示域名對應的是郵件服務器。
  • 類型為 PTR,表示根據 IP 地址反查域名。
  • 類型為 CNAME,表示查詢域名相關別名。

當然,你這個時候要問我一個問題啦(注意上圖紅框)

煙哥,我輸入的明明是 http://www.tmall.com 可是命令里解析的地址是 www.tmall.com. 啊,多了一個 . 的符號啊?這個 . 符號是什么意思呢?

于是乎,又扯了一道經典面試題

OK,好,要講明白這個問題。我們要先把域名的結構講清楚! www.tmall.com 對應的真正的域名為 www.tmall.com.。末尾的. 稱為根域名,因為每個域名都有根域名,因此我們通常省略。

根域名的下一級,叫做"頂級域名"(top-level domain,縮寫為 TLD),比如 .com、.net;

再下一級叫做"次級域名"(second-level domain,縮寫為 SLD ),比如 www.tmall.com 里面的 .tmall,這一級域名是用戶可以注冊的;

再下一級是主機名(host),比如 www.tmall.com 里面的 www,又稱為"三級域名",這是用戶在自己的域里面為服務器分配的名稱,是用戶可以任意分配的。

那么解析流程就是分級查詢

(1)先在本機的 DNS 里頭查,如果有就直接返回了。本機 DNS 就是下面這個東東

(2)本機 DNS 里頭發現沒有,就去根服務器里查。根服務器發現這個域名是屬于 com 域,因此根域 DNS 服務器會返回它所管理的 com 域中的 DNS 服務器的 IP 地址,意思是“雖然我不知道你要查的那個域名的地址,但你可以去 com 域問問看”

(3)本機的 DNS 接到又會向 com 域的 DNS 服務器發送查詢消息。com 域中也沒有 www.tmall.com 這個域名的信息,和剛才一樣,com 域服務器會返回它下面的 tmall.com 域的 DNS 服務器的 IP 地址。

以此類推,只要重復前面的步驟,就可以順藤摸瓜找到目標 DNS 服務器。

ps:溫馨提醒,dig trace www.tmall.com 可以看到解析過程。有興趣的讀者,自己實驗一下。

扯了那么多東西,我們來看第二段內容,也就是響應體的部分! 如下所示

很明顯,第一行就是說 www.tmall.com 有一個別名是 www.tmall.com.danuoyi.tbcache.com。后面幾行就是這個 www.tmall.com.danuoyi.tbcache.com 地址的真實 IP。

為什么天貓要設一個別名到 http://www.tmall.com.danuoyi.tbcache.com 地址呢? 于是乎,又一道經典面試題出現

說句實在話,我當初第一眼,見到這題的時候,我覺得應該是方便 cdn 配置。 回到我們的例子,如果煙哥的猜測正確,www.tmall.com.danuoyi.tbcache.com 這個地址,應該是淘寶的一個 cdn 地址。 因此,我特意去查了域名備案記錄。如下圖所示

果然,就是一個淘寶的cdn環境。

那么這么配有什么好處呢?

唉,這題當思考題,快過來探討留言!

?

轉載于:https://zhuanlan.zhihu.com/p/79350395

?

(SAW:Game Over!)

總結

以上是生活随笔為你收集整理的DNS 流程说明以及相关问题的解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。