[網際網路] 認識網址與網域名稱(Domain Name, URL, DNS)
keywords: domain
, subdomain
, ICANN
, TLD
, DNS
, URL
非原創文章,內容擷取自:
- 根域名的知 識 @ 阮一峰的網路日誌
- DNS 原理入門 @ 阮一峰的網路日誌
- 網址 URL 英文大小寫是否有差別?
認識網址
# 主機名.次級網域名稱.頂級網域名稱.根網域名稱
# host.sld.tld.root
www.google.com.root
一般的網址長這樣:http://www.youtube.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
- 通訊協定(protocol):又稱為
scheme
,一般最常見的是http
或https
,其他還有ftp
等等。這個部分根據 RFC 可以不分大小寫,但正式的情況下還是會使用小寫。 - 第三層網域名稱:上述
www
這個部分,又稱子網域(subdomain)或主機名(host)。 - 第二層網域名稱(Second Level Domain, SLD):上述
youtube
的部分,又稱為網域名稱。 - 頂級網域(Top Level Domain, TLD):上述
.com
的部分,就是最高層級的網域。簡單說,就是網址的最後一個部分。 - 連接埠(port):預設是 80,所以可以不用填。
- 網頁路徑(Path):上述
/path/to/myfile.html
的部分,這個部分根據伺服器的作業系統有所不同,引此建議不要更改大小寫。 - 參數(parameters):上述
?key1=value&key2=value2
的部分,用來傳訊息給伺服器,大小寫不能任意更改。 - 錨點(anchor):上述
#SomewhereInTheDocument
的部分,可以對應到網頁 HTML 中的id
或name
,大小寫不能更改。
認識網域名稱(Domain Name)
對人類來說要記住一長串的 IP 位址非常不容易,因此創造了「網域名稱(Domain Name)」做為電腦在網路上的名字,而這個網域名稱在全世界是獨一無二的。
網域名稱由 ICANN(Internet Corporation for Assigned Names and Numbers)作為全世界網域的最高管理機構,由 ICANN 負責管理頂級網域名稱(Top Level Domain, TLD)。
根網域名稱
我們有時會看到網址的最後面多一個 .
,例如 www.example.com.
,這個 .
不是多打的,而是所有網域名稱的尾部實際上都有一個根網域名稱,也就是說,前面例子真正的網域名稱是 www.example.com.root
,簡寫成 www.example.com.
頂級網域名稱(Top Level Domain, TLD)
所謂頂級網域(TLD),就是最高層級的網域。簡單說,就是網址的最後一個部分。比如,網址 www.example.com
的頂級域名就是 .com
。
頂級網域的分類
它們可以分成兩類:
- 一般性頂級網域(general TLD, gTLD):比如
.com
、.net
、.edu
、.org
、.xxx
等等,共有 700 多個。 - 國別頂級網域(country-code TLD, ccTLD):代表不同的國家和地區,比如
.cn
(中國)、.io
(英屬印度洋領地)、.cc
(科科斯群島)、.tv
(圖瓦盧)等,共有 300 多個。
頂級網域的管理
ICANN 的政策是,每個頂級網域都找一個託管商(domain host),又稱註冊管理機構(Registry),該網域的所有事項都由託管商負責,ICANN 只與託管商聯繫。舉例來說,台灣的 .tw
是由台灣網路資訊中心(TWNIC)所管理;.com
和 .net
則是由美國的 Verisign 負責。
若要查詢網域代管商可以透過 ICANN 提供的 WHOIS LOOKUP 查詢(但有時會查不到),所以比較多人到 whois365 或在 terminal 中透過
whois
指令查詢。其中的 Registrar 欄位通常就是託管商。
DNS(Domain Name Service)
**DNS(Domain Name Service,網域名稱系統)可以做「名稱解析(Name Resolution )」**的服務,也就是可 以透過 IP 位址查詢網域名稱(反向解析),或透過網域名稱查詢 IP 位址(正向解析)。DNS 伺服器會透過 TCP 的 Port 53 進行「區域傳送(Zone transfer)」以進行資料複製的作業。
對於使用者而言
使用者的電腦一定需要知道 DNS 伺服器的 IP,如此才能再進一步查詢其他網址的 IP 為何,如此才能上網。而這個伺服器的 IP 可以是固定的,也可以由上網時的閘道器動態分配(DHCP 機制)。
瞭解本機 DNS 伺服器 IP 設定
一般常見的公用 DNS 伺服器如 Google 的 8.8.8.8
;中華電信的 168.95.192.1
, 168.95.1.1
。
若想檢視 MAC 上設定的 DNS 伺服器 IP ,可以透過以下指令查詢:
$ scutil --dns
一般 Linux 系統中,DNS 伺服器的 IP 地址保存在
/etc/resolv.conf
檔案。
瞭解 DNS 解析過程:dig
DNS 是透過分級查詢的方式:
- 先從「根網域名稱伺服器」查到「頂級網域名稱伺服器」的 NS 記錄和 A 記錄(IP 位址)。
- 從「頂級網域名稱伺服器」查到「次級網域名稱伺服器」的 NS 記錄和 A 記錄(IP 位址)。
- 從「次級網域名稱伺服器」查到「主機名」的 IP 地址。
使用終端機內建的 dig
工具即可瞭解整個 DNS 查詢過程:
$ dig www.google.com
$ dig +short www.google.com # 如果不想看這麼詳細的資訊
$ dig +trace math.stackexchange.com # 檢視整個查詢流程
$ dig -x
其他工具如 host
可以獲得更簡潔的資訊:
$ host www.google.com # 可查詢該網域 IP 位址
$ host 192.30.253.112 # 可用於 IP 反查網域名稱
其他可用的還有 whois
和 nslookup
等工具指令。
對於 DNS 伺服器而言
DNS 系統由內容伺服器和快取伺服器(Full service reserver)組成。當電腦或伺服器提出名稱解析的要求後,電腦或伺服器會透過內建的 Stub resolver(解析器) 將名稱解析的請求傳送給快取伺服器,若在快取伺服器中找不到資料,則會向內容伺服器請求名稱解析,解析完的結果在送回快取伺服器,在回傳給電腦。
為了解決 DNS 可能的追蹤、欺騙和竄改,在 Mozilla 中引入了兩項新功能來解決這個問題-**可信遞回解析器(TRR ,Trusted Recursive Resolver)**和基於 HTTPS 的 DNS(DoH,DNS over HTTPS)。
- DNS 原理入門 @ 阮一峰的網路日誌
- DNS 解析的過程與安全性可參考:A cartoon intro to DNS over HTTPS @ Mozilla Hacks
DNS 的記錄類型
網域名稱與 IP 之間對應的關係稱為記錄(record),常見的記錄如下:
- A:地址記錄(address),回傳網域名稱所對應的 IP 位址。若一個網域名稱對應到多個 A 記錄,表示這些 IP 位址都可以連到該主機。
- NS:網域名稱伺服器(Name Server),回傳保存下一級網域名稱信息的伺服器地址。只能設定網域名稱,不能設定 IP 位址。
- MX:郵件記錄(Mail eXchange),回傳接受電子郵件的伺服器位址。
- CNAME:正準名稱記錄(Canonical Name),回傳另一個網域名稱,用於網域名稱的內部跳轉,用戶並不會覺察。為了避免衝突,一旦設定 CNAME 之後就不能設定 A 記錄和 MX 記錄。
- PTR:指標記錄(Pointer Record),透過 IP 地址查詢網域名稱。
參考
- 根域名的知識 @ 阮一峰的網路日誌
- DNS 原理入門 @ 阮一峰的網路日誌
- MIS 一定要懂的 82 個網路技術知識 @ 旗標出版
- What is the difference between a URL, Domain, Subdomain, Hostname etc.? @ sistrix
- Top Level Domain @ sistrix
- 網址 URL 英文大小寫是否有差別?
- Identify your domain host @ Google Support