DNS從理論觀念到具體實踐溫故(軟體層面)

 
https://digitalvarys.com/how-dns-works/
DNS(Domain Name System,網域名稱系統)作為可以將域名和IP位址相互對映的一個分布式資料庫,能使人更方便存取網際網路,而不用去記住冗長且難記憶IP地址數字串。
(備註:「網域」也就是網域名稱Domain Name的簡稱,和網址不太一樣,一個網址只會有一個網頁,而一個網域底下則包含很多的網址。)


DNS分為 正反向解析
所謂正向解析就是將domain name轉換成IP Address
而反向解析也就是將IP Address 轉換成domain name


Domain Name有區分不同部分,域名主要是由子網域(Sub Domain)、主(次級)網域(SLD,Second Level Domain)和頂級網域 (TLD,Top Level Domain)組成

其中次級網域+頂級網域形成所謂的「Domain 根(主)網域」,也就是Root Domain
因此有在GoDaddy貨Bluehost等虛擬主機購買域名時候,就很像是「google.com」整個組成一個網域名稱,通常這兩個part可自行於申請域名時候自己命名,也會影響SEO及辨識度好壞。

域名就很像店家招牌,每組域名都必須獨一無二,不可存有相同網站使用同一個主網域。
此外域名是具有效期限的,到期後若要再用則必須付費續申請。
當然也有免費域名但

https://www.flickr.com/photos/bloggingbookshelf/

1.通用頂級域名(Generic Top-Level Domains,gTLDs):
.com(商業用途)
.org(非營利組織)
.net(網路基礎設施)
.edu(教育機構)
.gov(政府機構)
.mil(軍事機構)

2.國家頂級域名(Country Code Top-Level Domains,ccTLDs):
.cn(中國)
.us(美國)
.jp(日本)
.uk(英國)
.de(德國)
.au(澳大利亞)

3.新通用頂級域名(New Generic Top-Level Domains,New gTLDs):
.shop(購物)
.club(俱樂部)
.tech(科技)
.blog(博客)
.online(在線)


次級網域(Second-Level Domain, SLD)
指域名的二級部分,即主域名之下的部分(一小部分常見的次級網域類型)
  1. 商業/商標網域:例如example.com、apple.com。
  2. 教育機構網域:例如harvard.edu、mit.edu。
  3. 政府機構網域:例如gov.uk、whitehouse.gov。
  4. 非營利組織網域:例如unicef.org、redcross.org。
  5. 地理位置網域:例如tokyo.jp、london.co.uk。
  6. 行業專用網域:例如banking.com、realestate.net。
  7. 人名網域:例如johnsmith.com、maryjones.net。
  8. 新領域名稱(New gTLDs):這是在域名系統中引入的新的頂級域名,如 .shop、.club、.tech 等。

其中域名伺服器又有劃分不同等級


DNS運作過程:
首先,當你在瀏覽器中輸入一個網址時,電腦會先檢查本地快取是否已經存有該網址的IP地址。如果有存有的話,電腦會直接返回這個IP地址。

如果本地快取中沒有該網址的IP地址,電腦會向本地DNS伺服器發送請求,這個DNS伺服器通常由你的網路服務提供商(ISP)提供。它會檢查是否有該網址的快取記錄,如果有,就會直接返回給電腦,否則進行下一步。

如果本地DNS伺服器沒有該網址的解析記錄,它會向根伺服器查詢,獲取該網址頂級域名的解析地址。

本地DNS伺服器再向頂級域名伺服器查詢,獲取該網址授權的域名伺服器的解析地址


本地DNS伺服器再向授權的域名伺服器查詢,獲取該網址的IP地址。
一旦找到了IP地址,本地DNS伺服器會將它保存在本地快取中,並將該IP地址返回給電腦,以便你可以訪問該網站。

PS:
本地host文件會維護一個資料庫文件會計載domain name 對應的 IP地址
Linux: /etc/hosts
Windows:C:windows/system32/drivers/etc/hosts
(預設hosts文件優先層級比DNS遠端解析來的高,是可調整/etc/nsswitch.conf來更改優先級的。)

nsswitch.conf(name service switch configuration,名字服務切換配置)文件
位於/etc目錄下,由它規範透過哪些途徑以及按什麼順序查找特定類型的資訊,還可指定某個方法奏效或失效時系統將採取什麼動作。



當中需透過Domain Name Server
需透過一些協定實踐的軟體工具
於Linux上常使用的有 bind (Berkeley Internet Name Domain),  Dnsmasq , PowerDNS
此協定
需依賴於TCP (默認port:53)或是 UDP(默認port:53)協定
通常用UDP 端口號53居多,因為效率較高。






















Ref:
https://blog.51cto.com/u_13794952/5558190
https://welly.tw/serp-rank-optimization/subdomain-introduction-and-settings
https://codingbeginner01.com/what-is-domain/
https://www.design-hu.com/web-news/domain.html
https://www.net-chinese.com.tw/nc/index.php/MenuLink/Index/AboutDomainName
https://digitalvarys.com/how-dns-works/
https://threat.media/definition/what-is-an-iterative-dns-query/
https://ithelp.ithome.com.tw/articles/10253390
https://blog.csdn.net/carefree2005/article/details/111799473

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header