跳至主要内容

[網際網路] 認識網址與網域名稱(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 地址查詢網域名稱。

參考