網域名稱系統(Domain Name System, DNS)
/ DNS spelled out: D-N-S /
人記得的是名字;電腦靠號碼遞送。你輸入像 www.example.com 這樣的名字,但搬運你封包的路由器只懂得數字形式的 IP 位址,例如 93.184.216.34。必須有人把你記得的名字翻譯成網路需要的號碼。網域名稱系統(DNS)就是那個翻譯員——常被形容成網際網路的電話簿:你查一個名字,它回給你一個位址。正是它讓你能輸入好記的名字,而不必為每個造訪的網站背一串數字。
但 DNS 不是一本擺在某處的大電話簿——它是一個全球分散、階層式的資料庫,每秒被查詢數十億次,並靠大量快取維繫運作。沒有任何單一機器能回答全世界的查詢,所以整個名稱空間被切成一棵樹,資料分散在許多各自獨立的伺服器上。一次查詢沿著樹往下走:要解析 www.example.com,解析器先問根伺服器(它知道 .com 住在哪),再問 .com 伺服器(它知道 example.com 的伺服器在哪),最後問 example.com 自己的授權伺服器(它終於回傳位址)。多數情況下答案早已快取在附近,所以你根本看不到這趟走訪。
為什麼重要:幾乎每個網際網路動作都從一次 DNS 查詢開始——開網頁、寄電子郵件、載入 App——所以 DNS 是地球上使用最頻繁的系統之一,而它一旦故障,網際網路有一大塊看起來也跟著壞掉。要誠實面對它的限制:傳統 DNS 預設既不認證也不加密,所以答案可能被偽造或被窺看,這正是後來出現 DNSSEC(簽署答案)以及 DNS over HTTPS/DNS over TLS(私密、加密的查詢)的原因。
你點了一個新聞網站的書籤。在任何頁面載入之前,你的電腦先問一個 DNS 解析器,意思等於:www.example.com 的 IP 位址是什麼?解析器回傳 93.184.216.34,瀏覽器這才向那個數字位址開啟連線。
輸入名字、輸出位址——幾乎每次連線之前都會發生的查詢。
DNS 不等於網頁。網頁(HTTP)只是無數使用名稱的東西之一;電子郵件、App、更新也都依賴 DNS。而且 DNS 只把名稱解析成位址——它本身並不抓取網頁內容。