DNS (Domain Name System,網域名稱系統)是網際網路這龐大系統中相當重要的一個環節,試想一下,當你想要連上Google 搜尋資料時,輸入的不是www.google.com.tw 而是142.251.43.3,這串數字就已經夠難記了,更別說還有上千萬個網站,一般人不可能記得住這些數字,而正是有了DNS 我們才能夠這麼輕鬆的連上各個網站。
網域名稱(Domain Name),可簡稱為網域或域名,它的作用是把IP 位址轉換成一般人看得懂的文字,也就是一串由「ASCII字元」和「點」組成的網址。
以Google 的域名www.google.com.tw為例,將域名用點分割並由右至左閱讀,每個部份都有其特殊的資訊。
頂級域
頂級域 (Top Level Domain,TLD) 又分成兩類,國碼頂級域和通用頂級域。
了解完頂級域後,可以看出www.google.com.tw 的tw 和com 分別代表國碼頂級域和通用頂級域。
二級域
二級域 (Second Level Domain,SLD),在辨識完頂級域後就是二級域,如www.google.com.tw 中的google 就是二級域,zh.wikipedia.org 中的wikipedia 也是二級域。
子域名
子域名 (Subdomain),是比二級域更左側的域名,通常是www,也有像zh.wikipedia.org是zh。
國際化域名 (Internationalized Domain Name,IDN),是指部分或完全使用特殊文字或非拉丁字母組成的域名,包含中文、俄語、阿拉伯語等。
在DNS 中,國際化域名使用Punycode 撰寫並以ASCII 字串儲存。
DNS (Domain Name System,網域名稱系統,又稱域名系統),DNS 是網際網路運作中的一個環節,它是能夠將域名和IP 位址相互對應的一個分散式資料庫系統,使用TCP/UDP 埠53,限制每一級域名最大長度63個字元,域名總長度不可超過253個字元。
要使用DNS 伺服器才能夠使用DNS,DNS 伺服器中預先登記了網域名稱與IP 位址,並記錄各種資訊。而資源紀錄便是記錄在DNS 伺服器中的資訊,常見的紀錄類型有:
| 代碼 | 內容 |
|---|---|
| A | 對應主機名稱的IP 位址 |
| AAAA | 對應主機名稱的IPv6 位址 |
| CNAME | 對應主機名稱和其別名 |
| MX | 對應網域名稱的電子郵件伺服器 |
| NS | 管理網域名稱的DNS 伺服器 |
| PTR | 對應IP 位址的主機名稱 |
世界上的域名有上億個,沒有任何一台DNS 伺服器能儲存所有的域名,資料都是分散在世界各地的DNS 伺服器上,而它們的結構就類似於電腦的目錄樹結構,最頂端的是一個根(root)目錄,旗下分為好幾個基本類別名稱。
而DNS 查詢的方式有兩種,遞迴和迭代:
遞迴查詢
在遞迴查詢中,客戶端向本地DNS 伺服器發送查詢請求後,若本地DNS 伺服器沒有相關域名的快取資料,會以DNS 客戶的身分向其他DNS 伺服器發送查詢請求,若其他DNS 伺服器也沒有相關域名的快取資料,也會以DNS 客戶的身分向其他DNS 伺服器發送查詢請求,直到返回最終結果,執行步驟如下:
迭代查詢
與遞迴查詢不同,迭代查詢時,其他DNS 伺服器不會代替本地DNS 伺服器發送查詢請求,而是回傳下一級域伺服器的IP 位址,讓本地DNS 伺服器向其他DNS 伺服器發送請求,執行步驟如下:
看完艱澀複雜的IP 協議後,在看到域名系統就覺得和藹可親許多,如果只是後端工程師的話,其實大概了解域名系統的概念就可以了,其他就先有個印象,如果遇到再複習會比較快~~
Domain name - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
What is a domain name? | Domain name vs. URL | Cloudflare
DNS - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
What is DNS? | How DNS works | Cloudflare