-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5ecec4d
commit 7b792d8
Showing
1 changed file
with
86 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
--- | ||
layout: '@layouts/BlogPostLayout.astro' | ||
title: DNS知識要點:A Record、CNAME,購買網域及瀏覽器輸入網址後發生的網址解析 | ||
date: 2024-01-22 | ||
author: Allen Wang | ||
image: { src: 'https://i.imgur.com/4YGKvu8.jpg', alt: 'DNS' } | ||
description: 這篇會提及關於 DNS 這什麼以及它運作的流程,他與我們網站之間的關係,還有如何去做一些常見之設定 | ||
draft: false | ||
category: network science | ||
--- | ||
|
||
## 前言 | ||
|
||
瀏覽器應該是前端工程師最熟悉的工具,不過一直以來對於瀏覽器輸入網址後發生的事情沒有仔細研究過,剛好碰到之前自己買了個網域後又要做哪些設定等一連串的問題,趕緊來把這一塊不算技術但也算是必須知道的網路知識惡補一下,以下會談論到的部分重點,還有很多其他深入知識就不在此篇範圍內了 | ||
|
||
- 名詞定義 | ||
- DNS 運作概念 | ||
- DNS record | ||
- DNS 解析流程 | ||
- 購買網域後的實際應用案例 | ||
- 常見問題 | ||
|
||
## 名詞定義 | ||
|
||
網址跟網域(域名),很多人可能會把這兩個混回一談,實際上網域是網址的一部份 | ||
|
||
文章後續的 `NS = Namesever` | ||
|
||
## DNS 運作概念 | ||
|
||
Domain Name System 域名系統也就是管理與查詢網域對應 IP 的系統,透過一堆 DNS server 才能把網址轉換成 IP 進而獲取對應的資源,可以想像成電話簿一樣我們透過名稱來查詢對應的號碼,以下幾個 DNS server 類型後續會提到,先不要緊張喵過就好 | ||
|
||
- local DNS server : 電腦所設定的轉發查詢站點 | ||
- root NS : 其實網址後面有個被省略掉的 .root 存在,全球 13 台,用來分配 TLD NS 位置訊息 | ||
- TLD NS : 儲存該並分配特定 TLD 的 Authoritaive 位置信息 | ||
- Authoritaive NS : 特定 DNS 記錄的事實最終來源,在這邊獲取到 IP 返回 | ||
|
||
## DNS record | ||
|
||
有很多的紀錄,這邊僅提及應該是最重要的幾個 | ||
|
||
- A record | ||
- 紀錄 IPv4 的 IP 位址,將網域配對到這 IP 讓客戶端順利載入網站 | ||
- AAAA record | ||
- 紀錄 IPv6 的 IP 位址,其他都跟 A record 一樣 | ||
- CNAME | ||
- 將一個域名映射到另一個域名,最終還是最指向該域名的 IP,例如 B 指向 A,當 A 的 IP 改變後,B 仍可正常指向 A,不用重新設定對應 IP | ||
- NS | ||
- 指它的 DNS server 在哪裡的意思,一般域名供應商會提供可以直接託管,如果是將服務架在其他空間且需要這邊的憑證的話,就需要把 NS 指定到這個空間上,可能有多個 NS 伺服器的紀錄(某個故障時候的 DNS 查詢就會轉到另一個),絕對要有這個紀錄,否則網址無法順利被解析 | ||
|
||
## DNS 解析流程 | ||
|
||
瀏覽器輸入網址之後發生的就是一直查一直爽,配個圖比較清楚 | ||
|
||
 | ||
|
||
1. 查詢瀏覽器快取 | ||
2. 查詢電腦系統快取 | ||
3. 查詢網路路由器快取 | ||
4. 請求 local DNS server 查詢,如果沒有快取的話再轉發到 root NS | ||
5. 請求 root NS 查詢並獲取該 TLD NS 的地址訊息返回 | ||
6. 請求 TLD NS 查詢並獲取該 Authoritaive NS 的地址訊息返回 | ||
7. 請求 Authoritaive NS 查詢並獲取 IP 訊息返回,完成解析 | ||
|
||
以上在第五步才開始解析流程,前面都是使用快取信息(受 TTL 影響)提升速度,完成以上的傑西流程後才是我們所熟悉的發出 API 請求的交互動作 | ||
|
||
## 購買網域後的實際應用案例 | ||
|
||
有很多的網址供應商可以選擇,最有名的目前應該是 godaddy 跟 google domain,因為我也只用過這兩個 ; 購買很簡單魔法小卡嚕下去就是你的了,購買後需要做些什麼設定呢? | ||
|
||
最基本的就是這篇文章有講到的東西 NS、A Record、CNAME,這些都會在供應商後台的 DNS 設定頁面中設定,基本上設定好後就可以在瀏覽器輸入網址進入網站囉 | ||
|
||
Google Domain 的範例 | ||
|
||
 | ||
將我的網域 CNAME 指向部署在 Netlify 的網域上 | ||
|
||
 | ||
使用 Netlify 的 DNS server (你看有四個) | ||
|
||
## 補充小結 | ||
|
||
- 這些流程真的很難記大概所以有個概念就好,主要要知道一個概念讓我們在做設定時可以知道各種交互關係幫助釐清可能的問題在哪,再不行的話就像我一樣打電話問問 godaddy 的客服吧 | ||
- 網址上有沒有 www 有差別嗎 ? 基本上沒什麼影響,不過記得要把 www 開頭的 DNS 設定也設好(A、CNAME),這樣才不會有使用者有加 www 卻無法正確解析 | ||
- 我們買網域其實是選中某個 TLD 後在此之後定義一個 SLD 並且租用它的使用權,而其權重其實是從後面的 TLD 開始看起 | ||
- 關於 SSL 的部分,我們在設定好 DNS 後應該會碰到好不容易買的網域可以連線但是瀏覽器卻又會跳出這個網站不安全的訊息,這部分又是另一回事了,再另外帶一篇手動申請的內容 |