跳至主要内容

[網際網路] 認識網址與網域名稱(Domain Name, URL, DNS)

keywords: domain, subdomain, ICANN, TLD, DNS, URL

非原創文章,內容擷取自:

認識網址

Imgur

# 主機名.次級網域名稱.頂級網域名稱.根網域名稱
# host.sld.tld.root
www.google.com.root

一般的網址長這樣:http://www.youtube.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

  • 通訊協定(protocol):又稱為 scheme,一般最常見的是 httphttps ,其他還有 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 中的 idname大小寫不能更改

認識網域名稱(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 欄位通常就是託管商。

Imgur

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 反查網域名稱

其他可用的還有 whoisnslookup 等工具指令。

對於 DNS 伺服器而言

DNS 系統由內容伺服器和快取伺服器(Full service reserver)組成。當電腦或伺服器提出名稱解析的要求後,電腦或伺服器會透過內建的 Stub resolver(解析器) 將名稱解析的請求傳送給快取伺服器,若在快取伺服器中找不到資料,則會向內容伺服器請求名稱解析,解析完的結果在送回快取伺服器,在回傳給電腦。

為了解決 DNS 可能的追蹤、欺騙和竄改,在 Mozilla 中引入了兩項新功能來解決這個問題-可信遞回解析器(TRR ,Trusted Recursive Resolver)和基於 HTTPS 的 DNS(DoH,DNS over HTTPS)

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 地址查詢網域名稱。

參考