自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

域名系統(tǒng)的前世今生:一文讀懂互聯(lián)網(wǎng)的“門牌號”

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
幸運(yùn)的是,互聯(lián)網(wǎng)有許多好人,DNS 是互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施。惡意 DNS 并不常見,所以你在瀏覽互聯(lián)網(wǎng)時(shí)不需要過于擔(dān)心。

IP 協(xié)議的責(zé)任是網(wǎng)絡(luò)互聯(lián),它在 MAC 層之上運(yùn)行,使用 IP 地址將 MAC 地址轉(zhuǎn)換為四位數(shù),抽象出物理網(wǎng)卡的 MAC 地址,從而開發(fā)出許多“新玩法”。

例如,它被分為五種類型:A、B、C、D 和 E;公共和私有地址;子網(wǎng)掩碼分段。只要每個(gè)小網(wǎng)絡(luò)都同意 IP 地址的概念,無論它們在 MAC 層有多么不同,它們都可以訪問 TCP/IP 協(xié)議棧,并最終匯聚到整個(gè)互聯(lián)網(wǎng)中。

然而,隨著越來越多的計(jì)算機(jī)連接到互聯(lián)網(wǎng),IP 地址的缺點(diǎn)暴露出來。主要問題是它“不夠用戶友好”。盡管它比 MAC 地址的十六進(jìn)制數(shù)稍好,但仍然難以記住和輸入。

如何解決這個(gè)問題?

解決方案在于“以火攻火”,在 IP 地址之上添加另一層抽象,將數(shù)值 IP 地址轉(zhuǎn)換為更有意義且易于記住的名稱。這引入了一種字符串級別的新玩法。于是,DNS(域名系統(tǒng))應(yīng)運(yùn)而生。

域名的形式

域名是一個(gè)分層結(jié)構(gòu),由多個(gè)用‘.’分隔的單詞組成。最右邊的單詞是頂級域名,其次是二級域名,層級從右向左遞減。

最左邊的部分是主機(jī)名,通常用于指示主機(jī)的用途。例如,“www”表示 Web 服務(wù),“mail”表示郵件服務(wù)。不過,這并不是絕對的,關(guān)鍵是讓我們?nèi)菀子涀 ?/p>

域名不僅是 IP 地址的替代品,還有許多其他用途。

在像 Apache 和 Nginx 這樣的 Web 服務(wù)器中,域名可以用來識別虛擬主機(jī),并確定哪個(gè)虛擬主機(jī)提供外部服務(wù)。例如,在 Nginx 中可以使用 server_name 指令:

server {
    listen 80;                       
    server_name  time.geekbang.org;  
    ...
}

域名本質(zhì)上是一個(gè)命名空間系統(tǒng),使用多級域名來劃分不同的國家、地區(qū)、組織、公司和部門。每個(gè)域名都是唯一的,可以作為身份標(biāo)識。

例如,假設(shè)公司 A 有一個(gè)名叫 Garb 的人,公司 B 也有一個(gè)名叫 Joe 的人。他們可以分別稱為 “Garb.Company A” 和 “Joe.Company B”。即使公司 B 也有一個(gè)名叫 Garb 的人,他們也可以被標(biāo)記為 “Garb.Company B”,從而有效解決重復(fù)命名的問題。

由于這個(gè)特性,域名已擴(kuò)展到其他應(yīng)用領(lǐng)域。例如,Java 的包機(jī)制使用域名作為命名空間,但順序相反。如果極客時(shí)間要開發(fā)一個(gè) Java 應(yīng)用程序,其包名可能是 org.geekbang.time。

在 XML 中,URI 被用作命名空間,這間接涉及域名的使用。

域名解析

就像訪問主機(jī)需要將 IP 地址轉(zhuǎn)換為 MAC 地址一樣,域名也需要轉(zhuǎn)換為 IP 地址。這個(gè)過程稱為域名解析。

目前,全球有數(shù)十億個(gè)網(wǎng)站,數(shù)十億的互聯(lián)網(wǎng)用戶,每天在網(wǎng)絡(luò)上發(fā)生的 HTTP 流量是天文數(shù)字。大多數(shù)請求在訪問網(wǎng)站時(shí)是基于域名的,這使得 DNS 成為互聯(lián)網(wǎng)的一個(gè)重要基礎(chǔ)設(shè)施,必須確保穩(wěn)定、可靠、快速和高效的域名解析。

DNS 的核心系統(tǒng)是一個(gè)三層樹狀分布式服務(wù),對應(yīng)域名的結(jié)構(gòu):

  1. 根域名服務(wù)器:管理頂級域名服務(wù)器并返回諸如 com、net、cn 等服務(wù)器的 IP 地址;
  2. 頂級域名服務(wù)器:管理其各自域下的權(quán)威域名服務(wù)器;例如,com 頂級域名服務(wù)器可以返回 apple.com 服務(wù)器的 IP 地址;
  3. 權(quán)威域名服務(wù)器:管理其域下主機(jī)的 IP 地址;例如,apple.com 的權(quán)威域名服務(wù)器可以返回 www.apple.com 的 IP 地址。

圖片圖片

其中,根域名服務(wù)器至關(guān)重要。它必須是眾所周知的,否則對下層服務(wù)器的討論是不可能的。目前,全球共有 13 組根域名服務(wù)器,擁有數(shù)百個(gè)鏡像以確??稍L問性。

有了這個(gè)系統(tǒng),任何域名都可以在這個(gè)樹結(jié)構(gòu)中從上到下查詢。就像從右到左順序遍歷域名,最終獲得相應(yīng)的 IP 地址。

例如,如果你想訪問 www.apple.com,你需要進(jìn)行三次查詢:

  1. 訪問根域名服務(wù)器,它會提供 com 頂級域名服務(wù)器的地址。
  2. 訪問 com 頂級域名服務(wù)器,然后它會提供 apple.com 域名服務(wù)器的地址。
  3. 最后,訪問 apple.com 的域名服務(wù)器以獲得 www.apple.com 的地址。

盡管核心 DNS 系統(tǒng)是全球分布的,具有強(qiáng)大而穩(wěn)定的服務(wù)能力,但如果全世界的互聯(lián)網(wǎng)用戶都涌入這個(gè)系統(tǒng),即使不會因擁堵導(dǎo)致癱瘓,訪問速度也會變慢。

因此,除了核心 DNS 系統(tǒng)之外,還有兩種方法可以緩解域名解析的壓力并更快地獲得結(jié)果——主要通過緩存。

首先,許多大公司和網(wǎng)絡(luò)運(yùn)營商建立了自己的 DNS 服務(wù)器,作為用戶 DNS 查詢的代理,而不是直接通過核心 DNS 系統(tǒng)訪問。這些“野生”服務(wù)器稱為 “非權(quán)威名稱服務(wù)器” ,可以緩存以前的查詢結(jié)果,這樣如果記錄已經(jīng)存在,就不需要再次發(fā)送查詢,而是可以直接返回相應(yīng)的 IP 地址。

這些 DNS 服務(wù)器的數(shù)量遠(yuǎn)遠(yuǎn)超過核心系統(tǒng)中的服務(wù)器,而且大多數(shù)地理上靠近用戶。一些知名的 DNS 服務(wù)器包括 Google 的 8.8.8.8、Microsoft 的 4.2.2.1、CloudFlare 的 1.1.1.1。

其次,操作系統(tǒng)也會緩存 DNS 解析結(jié)果,這樣當(dāng)你再次在瀏覽器中輸入 www.apple.com 時(shí),不會回到更高層次查詢,而是直接從操作系統(tǒng)本地獲取其 IP 地址。

此外,操作系統(tǒng)中有一個(gè)特殊的主機(jī)映射文件,通常是一個(gè)可編輯的文本文件。在 Linux 中,它位于“/etc/hosts”,在 Windows 中,它位于 C:\WINDOWS\system32\drivers\etc\hosts。如果操作系統(tǒng)無法在緩存中找到 DNS 記錄,它會查找此文件。

有了上述野生 DNS 服務(wù)器、操作系統(tǒng)緩存和 hosts 文件,許多域名解析工作可以輕松地在本地或本地計(jì)算機(jī)上解決。這不僅方便了用戶,還減輕了各級 DNS 服務(wù)器的壓力,大大提高了效率。

下圖提供了當(dāng)前 DNS 架構(gòu)的一個(gè)相當(dāng)全面的表示。

111111111111

在 Nginx 中,有一個(gè)名為“resolver”的配置指令,用于配置 DNS 服務(wù)器。如果沒有它,Nginx 將無法查詢域名對應(yīng)的 IP,因此無法反向代理到外部網(wǎng)站。

resolver 8.8.8.8 valid=30s;  # 指定 Google's DNS,緩存 30 秒。

域名的新玩法

有了域名和穩(wěn)定的解析系統(tǒng),我們現(xiàn)在可以實(shí)現(xiàn)比僅使用 IP 地址更多的新玩法。

重定向

第一個(gè)也是最簡單的方法是重定向。因?yàn)橛蛎〈?IP 地址,外部服務(wù)可以保持相同的域名,而主機(jī)的 IP 地址可以自由更改。當(dāng)需要下線或遷移主機(jī)時(shí),可以更改 DNS 記錄以將域名指向另一臺機(jī)器。

例如,如果你有一個(gè)服務(wù)器為 buy.tv,需要臨時(shí)維護(hù)關(guān)機(jī),可以通知 DNS 服務(wù)器:“我的 buy.tv 域名地址已更改。以前是 1.2.3.4,現(xiàn)在是 5.6.7.8,請更新?!比缓?,DNS 將修改其內(nèi)部的 IP 映射關(guān)系,使得任何對 buy.tv 的請求不再發(fā)送到主機(jī) 1.2.3.4,而是由 5.6.7.8 處理,確保業(yè)務(wù)服務(wù)不間斷。

內(nèi)部 DNS

第二種方法涉及利用 bind9 或其他開源軟件設(shè)置內(nèi)部 DNS 作為名稱服務(wù)器,因?yàn)橛蛎敲臻g。這樣,我們可以對所有內(nèi)部開發(fā)的服務(wù)使用域名;例如,數(shù)據(jù)庫服務(wù)可以使用 mysql.inner.app,產(chǎn)品服務(wù)可以表示為 goods.inner.app。當(dāng)啟動網(wǎng)絡(luò)通信時(shí),不再需要硬編碼 IP 地址,而是可以直接使用域名,這也結(jié)合了第一種方法的優(yōu)點(diǎn)。

負(fù)載均衡

第三種方法結(jié)合了前兩種方法——基于域名實(shí)現(xiàn)負(fù)載均衡。

這有兩種方法可以實(shí)現(xiàn),可以結(jié)合使用:

  • 第一種方法是因?yàn)橛蛎馕隹梢苑祷囟鄠€(gè) IP 地址,所以一個(gè)域名可以對應(yīng)多臺主機(jī)??蛻舳私邮盏蕉鄠€(gè) IP 地址后,可以使用輪詢算法將請求順序發(fā)送到服務(wù)器,從而實(shí)現(xiàn)負(fù)載均衡。
  • 第二種方法是配置域名解析的內(nèi)部策略,返回離客戶端最近的主機(jī)或當(dāng)前服務(wù)質(zhì)量最好的主機(jī)。這樣,DNS 端將請求分配到不同的服務(wù)器,實(shí)現(xiàn)負(fù)載均衡。

上述所有內(nèi)容都是關(guān)于可信賴的 DNS。如果存在一些惡意 DNS 服務(wù)器,它們還可以篡改域名,進(jìn)行更多的惡意活動。這里有兩個(gè)例子:

  • 域名屏蔽,域名不解析,直接返回錯(cuò)誤,阻止你獲取 IP 地址,從而無法訪問網(wǎng)站;
  • 域名劫持,又稱域名污染,當(dāng)你想訪問網(wǎng)站 A 時(shí),DNS 返回給你的是網(wǎng)站 B。

幸運(yùn)的是,互聯(lián)網(wǎng)有許多好人,DNS 是互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施。惡意 DNS 并不常見,所以你在瀏覽互聯(lián)網(wǎng)時(shí)不需要過于擔(dān)心。

這些是域名中的一些技巧和知識,了解這些有助于更好地使用和管理域名,提高互聯(lián)網(wǎng)的使用體驗(yàn)。

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2020-05-15 15:29:36

Stata數(shù)據(jù)分析

2022-03-13 18:27:09

Redis數(shù)據(jù)庫開源

2023-08-27 21:02:14

2018-05-31 09:46:04

車聯(lián)網(wǎng)智能交通ITS

2019-01-16 09:56:27

2019-05-22 17:34:16

代碼開發(fā)工具

2022-07-07 18:03:15

網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)通信

2021-04-19 10:13:25

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2018-05-31 09:26:04

2023-05-07 07:52:34

系統(tǒng)地址解碼

2024-04-24 16:32:35

人工智能智能鎖

2023-02-18 18:33:08

計(jì)算機(jī)前世今生

2009-10-26 10:42:12

2010-06-21 17:17:19

2021-09-13 22:34:56

區(qū)塊鏈新基建數(shù)字化轉(zhuǎn)型

2019-04-24 12:30:36

2017-08-31 15:54:52

2017-06-09 08:49:49

2019-08-26 15:06:13

域名系統(tǒng)DNS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號