杰森：这节课, 我们将讨论域名系统,
或称DNS｡
DNS协议用于帮助您的网络客户端使用人类可读的主机名而不是数字IP地址来查找网站｡
例如, 如果我告诉你访问我的网站, 我可以简单地说, “嘿,
去diontraining｡ com, ”这比你记住它是66容易得多｡
123. 45. 237,
或者我的网络服务器的IP地址｡
毕竟, 作为电视广告的一部分, 说出所有这些数字并不像告诉你的消费者访问diontraining那样吸引人或令人难忘｡
com或可口可乐｡ com或微软｡
com, 对吗？
那么, 计算机如何知道如何从这些不同的域名中找到Web服务器的IP地址呢？
这就是DNS的作用, 域名系统｡
DNS的工作方式是, 用户的计算机被告知去某个地方, 如diontraining｡
com,
所以它会联系DNS服务器并说, “嘿, 谁是diontraining｡
com？ 然后DNS服务器会回复说,
“哦, 我知道diontraining｡
com.
它的IP地址是66点什么,
点什么, 点什么｡ 然后, 客户端使用他们的路由器和连接方式重定向到Web服务器,
因为他们现在知道正确的IP地址用作目的地,
所有这些都发生在您的用户和计算机的后台, 而无需任何人实际要求它, 因为DNS是我们网络和系统的嵌入式部分｡
现在, 我们大多数家庭用户都不会运行自己的DNS服务器,
而是依赖于我们的互联网服务提供商为我们做这件事｡
但是, 如果您正在运行自己的网站或我们的大型企业网络,
您可能也会在您的网络中拥有自己的DNS服务器, 并且您将负责设置自己的DNS记录, 这些记录指示哪些服务器位于哪些IP地址以及用于哪些目的｡
这允许您运行自己的域名和主机解析,
将这些域名转换为IP地址｡
如果你想这样想,
这类似于在你的手机上有一个联系人列表｡
如今, 你能记住多少电话号码？
可能不是很多, 对吧？
因为通常情况下, 你会拿出你的智能手机,
滚动到这个人的名字, 然后用手指点击他们的名字,
然后手机就会拨通他们的电话｡
例如, 如果我想打电话给我的妻子, 我滚动到她的名字,
我把她的脸的照片在我的手机上,
然后我的手机立即拨打她的号码｡
我不需要记住她电话号码的所有10位数字,
因为我的手机会帮我记住｡
这是因为作为人, 我们记住数字比记住名字更难,
所以我们使用联系人列表来进行这种面孔或名字到数字的转换｡
这对计算机来说也是一样的,
除了计算机实际上更喜欢数字而不是名字,
所以我们想把对我们来说更容易的域名转换成对计算机来说更容易路由的IP地址,
这就是DNS真正为我们做的｡
它将名称转换为数字, 将数字转换为名称｡
现在, 我们需要讨论的DNS概念之一是所谓的完全限定域名（fully-qualified
domain name）｡
这是当一个域名是在顶级提供商｡
例如, 最常见的顶级提供程序是｡ com, 但我们也有类似的东西｡
米尔, edu, . org, . net.
让我们以迪翁训练为例｡
在Dion培训, 我们有很多不同的服务器｡
我们的服务器之一是我们的网络服务器,
它位于www｡ diontraining｡ com.
这里的顶级域名是｡ com.
我使用的域名是Dion Training｡
为了完全合格, 我必须在它前面加上WWW｡
这使它成为www｡ diontraining｡ com.
现在, 如果你想去我的网络服务器,
这就是你要输入到你的浏览器,
www｡ diontraining｡ com, 现在你将被重定向到我的Web服务器,
因为DNS知道它应该如何使用该完全限定的域名来旋转我的Web服务器的IP地址｡
现在, 如果你想去我的文件服务器, 你必须输入ftp｡
diontraining｡ com,
因为这是我在那里运行的服务器｡
如果你想去我的邮件服务器, 你可以输入mail｡
diontraining｡ com.
所有这三个都是完全限定域名或CDN的示例｡
从本质上讲, 有一个服务, 一个点,
一个域名, 一个点和一个顶级域名, 无论您在互联网上查看哪个域名,
其工作方式都是一样的｡
现在, DNS将被设置为层次结构｡
这发生在五个不同的层面｡
我们有路由级别､ 顶级域､
二级域､ 子域和主机｡
路由级别是DNS层次结构树中的最高级别,
路由名称服务器将应答路由区域中的请求｡
这些服务器包含所有顶级域的全局列表,
例如｡ com, . net, . org, . 米尔和其他人｡
第二个级别将是顶级域｡
这些被分为两类, 组织层次结构,
如｡ com, . net, . org等, 然后是地理层次结构,
如｡ uk代表联合王国｡ 法国的FR｡ 意大利和其他类似的国家｡
第三个级别被称为二级域名｡
这些域位于顶级域的正下方｡
例如, 我的域名Dion Training是一个二级域名｡
com顶级域｡
的. com位于路由域下面｡
这就是这些东西作为层次结构的一部分一起升级的方式｡
第四层是子域名, 所以如果我想在第二级域名diontraining下创建一个新服务器｡
com,
我可以用一个子域名来做｡
在我的情况下, 我有很多不同的子域用于不同的目的｡
我有我的主网站托管在www子域, 所以你在www类型｡
diontraining｡ com,
这会把你带到我的Web服务器, 但我也有一个叫做支持的服务器｡
现在, 支持子域位于支持｡
diontraining｡ com.
我还有一封信, 信｡ diontraining｡ com.
这些都是不同的子域｡
现在, 第五层也是最后一层是宿主层｡
这是DNS层次结构中最低和最详细的级别,
它指的是网络上的特定机器或服务器｡
现在, 当我们想到DNS时, 我们大多数人都会想到一个完全限定的域名,
比如www｡ diontraining｡ com, 它包含一个子域､ 一个二级域和一个顶级域｡
现在, 如果我想更进一步, 我可以从URL的角度来看待它,
它被称为统一资源定位器｡
同样, 让我们以我的Web服务器为例,
www｡ diontraining｡ com.
这是我的完全限定域名, 但它没有告诉你如何访问它｡
你想安全地还是不安全地做这件事？
好吧, 你得通过URL来告诉我｡
好吧, 如果你想给我你的用户名和密码,
你应该这样做的安全｡
所以你要在www前面加上HTTPS：//｡
diontraining｡ com,
这就变成了一个URL, 一个统一资源定位器, 因为它告诉你如何访问diontraining｡
com的Web服务器｡
这就是为什么我们一开始就使用HTTPS｡
这是超文本传输协议的安全,
这是访问它的方法｡
现在, 如果你想访问我的网站, 并且不安全, 你可以通过在网址的开头添加HTTP：//来实现｡
现在, 如果你想使用FTP连接,
你可以使用FTP：//FTP｡ diontraining｡ com作为你的URL, 所以有很多不同的方法来做这件事, 因为你告诉系统要做什么,
这将创建一个URL和一个完全合格的域名｡
接下来, 我们需要讨论DNS服务器中存在的不同类型的DNS记录｡
在DNS服务器内部, 您将创建不同的记录,
这些记录根据您的用例保存不同类型的信息｡
这些记录被称为A记录､ AAAA记录､ CNAME记录､ MX记录､
TXT记录和NS记录｡
让我们快速浏览一下这些不同的记录类型｡
首先, 我们有一个A记录,
它代表一个地址记录｡
A记录用于将主机名链接到IPv4地址｡
例如, 有一个A记录为www｡ diontraining｡ com, 并将其链接到45的IP地址｡
79. 184. 180.
除此之外, 您还可以为@ host设置A记录,
这表示路由域的记录｡
在Dion Training的例子中, 我们的@
record表示diontraining｡ com, 这是我们域的路由,
将在某个IP上列出｡
这样, 我们的用户可以通过访问www子域名找到我们的网站｡
diontraining｡ com,
或者只是去diontraining｡ 通过使用该A @记录｡
现在, A记录只适用于IPv4地址,
但许多现代网站也支持IPv6｡
要将域名映射到IPv6地址,
您将使用AAAA记录｡
因此, 以Dion Training站点为例, 我可以将AAAA记录设置为2400：cb00：2049：1：：a29f：1804（如果这是我的Web服务器的IPv6地址）｡
正如你所看到的, IPv6地址比IPv4复杂得多, 我们人类很难记住,
这就是为什么我们喜欢使用这些AAAA记录, 或者4A记录｡
我们可以使用的下一种记录类型称为CNAME记录,
或规范名称记录｡
现在, 如果要将域指向另一个域名或子域名,
则使用CNAME记录代替AAAA记录的A记录｡
例如, 除了diontraining,
我还拥有很多不同的域名｡ com.
其中一些是我以前的公司或我曾经运行的项目,
还有一些是我计划在未来的某一天使用的,
但与此同时, 我让它们设置了一个CNAME记录, 可以解析回diontraining｡
com.
例如, 我曾经运行过一个名为itil4exam的网站｡ com, 但我已经停止使用这个域名, 我已经将所有这些课程合并到我自己的diontraining｡
com website.
所以当我关闭旧的web服务器时, 我仍然想允许人们输入itil4exam｡
com和到达的东西,
而不仅仅是一个错误页面｡
所以我用了一个CNAME记录直接指向diontraining｡
com.
我为什么要这么做？
嗯, 我们在另一个地方呆了几年,
与狄昂训练平行｡ com, 那里发布的许多链接都遍布互联网,
其中推荐了我们在itil4exam上托管的课程｡
com website.
该网站上最受欢迎的课程之一是我们的ITIL 4基础课程,
它位于itil4exam｡
com/itil-4-foundation.
现在, 如果你在浏览器中输入这个命令,
它就会解析itil4exam｡ com部分到diontraining. com, 并直接带你到diontraining.
com/itil-4-foundation.
这意味着, 即使你使用的是几年前在Reddit上找到的推荐我们课程的链接,
它仍然会起作用, 并将你带到我们的销售页面, 即使最初的itil4exam｡
com服务器甚至不再处于服务状态,
并且已脱机｡
使用CNAME记录的另一个用例是当您使用软件即服务产品时,
该产品在其服务器上为您提供子域｡
例如, 我使用的是一款名为Freshdesk的服务台票务跟踪软件,
它来自Freshdesk｡ com, 他们给了我们一个很难记住的子域,
比如FDUS-143-D15｡
freshdesk｡ com.
因此, 为了让我的员工更容易找到我们的支持服务台,
我们创建了一个名为Support的CNAME记录,
并将其指向这个难以记住的子域｡
所以如果我的员工进入支持｡ diontraining｡ com, 它会把它们直接带到我们的支持系统, 这个系统实际上会把我们重定向到这个云实例,
这个云实例是由Freshdesk发布的子域提供的｡
请记住, CNAME记录不能用于指向IP地址｡
它只能用于指向另一个域名或子域名｡
接下来, 我们有一个MX记录,
它代表邮件交换记录, 它可以做你认为它会做的事情｡
它可以帮助你找出电子邮件服务器在哪里｡
MX记录用于将电子邮件定向到邮件服务器｡
MX记录, 如CNAME记录,
只能用于指向另一个域, 而不是IP地址｡
当您创建MX记录时, 您还可以为这些记录中的每一个提供优先级｡
这可以让您指出您的首选项的服务器的电子邮件应尝试使用第一｡
在设置优先级时, 输入的数字越低,
优先级越高｡
基本上就是高尔夫规则｡
所以如果我们有邮件1｡ diontrainf. com设置为10,
mail2｡ diontraining｡ com设置为20的优先级, 电子邮件将尝试使用邮件一第一｡
如果它无法到达邮件1,
那么它将尝试到达邮件2｡
现在, 如果你想在多个服务器上平衡你的邮件,
你只需要将它们的优先级设置为相同的值｡
因此, 如果我为邮件1和邮件2创建记录,
并且它们的优先级都为10, 则所有传入的电子邮件都将在这些服务器之间交替并均衡负载｡
第一个是1, 第二个是2,
第三个是1, 第四个是2,
以此类推｡
接下来, 我们有TXT记录, 或文本记录｡
现在, 域管理员使用文本记录将文本添加到域名系统或DNS中｡
最初, 文本记录被设计为一种方式,
让我们将人类可读的注释添加到我们的DNS记录中,
随着时间的推移, 这些东西开始添加到这些文本记录中, 最终, 我们开始将机器可读的数据添加到这些文本记录中, 这就是你这些天主要看到的地方｡
你的域名也可以有很多不同的文本记录｡
你不局限于其中之一｡
大多数情况下, 您会看到文本记录用于通过添加一些机器可读代码进行验证来证明域所有权,
并通过向TXT记录添加特定的机器可读代码来提供垃圾邮件预防｡
例如, 在Diontraining｡ com我们有一个叫fdkey的短信记录
支持,
以及我们的DNS记录中的32个十六进制数字的纹理｡
这允许我们的支持系统Freshdesk验证我们拥有域名diontraining｡
com,
所以他们被授权代表我们向我们的学生发送电子邮件, 当我们的团队在他们的系统内回复支持票时｡
这是一种域所有权验证的形式, 因为他们的系统可以查询我们的DNS记录,
并看到我们在DNS TXT记录中输入了这一系列独特的32个十六进制数字｡
本质上, 它的工作原理就像一个密码说,
“嘿, 我拥有这个域名｡ 在您的TXT记录中, 您还可以将SPF､ DKIM或DMARC消息等信息放入,
以便能够帮助验证您的电子邮件服务, 并阻止将欺骗或不需要的消息（称为垃圾邮件）传输给使用您的域和电子邮件地址的其他人｡
SPF或发件人策略框架,
这是一个DNS记录, 它标识了被授权为域发送邮件的主机,
每个域只允许一个主机｡
现在, 当你看它们的时候, 你会看到这样的东西,
这是一个DNS记录, 叫做文本记录｡
您会注意到它有@符号, 然后说V=
SPF 1, 这是发送方策略框架1｡
这是第一个
然后它有MX, 这是邮件服务器记录, 然后它说包括：_SPF｡
Google. 包括：电子邮件｡
freshdesk｡ com-all｡
这说明了什么
这实际上是我的电子邮件服务器的SPF记录｡
为什么我们有Google com在？
这是因为我们使用谷歌的G Suite, 所以谷歌是我们的电子邮件服务提供商｡
我们不运行自己的电子邮件服务器｡
相反, 我们让他们这样做, 我们已经授权他们这样做,
他们被授权代表我们发送电子邮件,
包括SPF声明｡
现在, 第二个, 你可能想知道,
“这是干什么的？
我以为你只能喝一杯｡ 你只能有一个SPF语句,
但是在DNS中写的时候,
这整个东西是一行, 从文本到所有的东西都是一行,
这是一个SPF语句｡
我可以授权多个服务器以我的名义发送, 但我只能在一个DNS行中完成,
如您所见, Freshdesk是我们的故障单系统｡
如果你给Dion Training发邮件支持, 它会转到Freshdesk,
但是如果你给Dion Training发邮件我的个人邮件,
它会转到Google, 因为那是为我们公司处理个人邮件的人, 所以你必须在这份声明中代表你授权发送的任何其他东西中包括这两个｡
现在, 我们需要谈论的下一件事是DKIM, 或dkim｡
现在, 这是域密钥识别邮件｡
这为使用作为DNS记录发布的公钥的邮件提供了加密身份验证机制｡
现在, 当你查找SPF或DKIM时,
你会看到这样的东西｡
这里有一个例子向你展示adobe的邮件｡ com.
你可以看到顶部的DMARC,
我们一会儿会谈到, 你会看到SPF,
我们刚刚谈到, 然后你会看到DKIM, 这就是我们现在谈论的｡
它基本上是一个很长的加密认证密钥,
你可以在屏幕上看到它｡
现在, DKIM可以替代SPF或与SPF一起使用｡
下一个我们要讨论的是DMARC,
DMARC是基于域的消息身份验证报告和一致性｡
这基本上是一个框架, 这个框架用于确保SPF和DKIM的正确应用,
利用作为DNS记录发布的策略,
我在屏幕上的最后一张图片中向您简要展示了这一点, 当时我向您展示了DMARC作为该图片的顶行｡
如果你想回去看看, 你可以在这个时候｡
现在, 当你处理DMARC时,
你可以使用SPF, DKIM,
或者两者都用, 因为记住,
SPF和DKIM不一定要一起使用｡
您可以使用其中一个或另一个,
或者您可以使用两者, DMARC将与另一个或两者一起使用｡
现在, 当你处理MARC时,
它看起来是这样的｡
那么, 所有这些是如何一起工作的呢？
首先, 您必须确保您的SPF, DKIM和DMARC都在DNS服务器上｡
一旦你有了所有这些记录,
这就是整个过程的开始｡
现在, 一旦你这样做了一次, 其他的一切都会跟进,
每次你想发送一个消息｡
在本例中, 我们将发送两条消息,
一条来自SMTP服务器, 该服务器已被授权并显示为绿色,
另一条来自试图欺骗您的域的对手, 该消息将显示为红色｡
先从授权的开始｡
在这里, 它被列为2A｡
你的发信人会把这条信息发给MTA｡
它会到达MTA, 也就是您的邮件传输代理,
它最终会接收包含SPF或DKIM报头的邮件｡
现在, 让我们坚持这个信息一分钟,
然后我们会回到对手｡
一旦MTA收到这条消息,
它就会继续查看这条消息,
并处理这条消息｡
当它这样做时, 其中一部分将通过DNS查找发送方DMARC策略和SPF和DKIM记录,
就像我们在过去三四分钟里讨论的那样｡
现在, 一旦MTA这样做, 如果它是合法的,
该消息可以放置到IMAP服务器上的接收者的邮箱中,
并等待该人能够使用他们的邮件用户代理阅读他们的消息｡
这很好, 因为他们知道这条消息是真实的,
因为它根据设置的策略将这些值与SPF､
DKIM或DMARC进行了比较｡
现在, 如果我们从另一方面来看对手, 当他们发送消息时, 它仍然会到达MTA,
因为它必须到达MTA才能到达最终用户｡
但是, 一旦它到达那里, MTA将检查它与DMARC策略,
查看SPF或DKIM记录｡
一旦它这样做了, 如果它们不匹配, 它就会拒绝该消息,
删除它, 或者隔离它, 然后将其丢弃,
正如您在5B中看到的那样｡
同样, 这就是这些东西的工作方式, 通过一起使用DKIM, DMARC和SPF,
我们可以为我们的组织增加一些安全性｡
最后, 我们有一个NS记录,
它代表名称服务器记录｡
现在, 名称服务器记录用于指示世界上哪个DNS名称服务器将成为该域的权威服务器｡
这一点很重要, 因为DNS使用我们讨论过的层次模型,
所有服务器都需要知道谁拥有该记录, 并有权对其进行更改｡
现在, 域名服务器是一种DNS服务器,
它存储给定域的所有DNS记录,
包括我们已经讨论过的所有类型, 如A记录,
AAAA记录, 规范名称记录, MX邮件交换记录和TXT文本记录｡
通常一个域名也有多个域名服务器, 所以你可以有一个主域名服务器和一个备份域名服务器｡
此外, 您不必总是托管自己的名称服务器｡
在diontraintraining的案例中｡ com, 我们不托管自己的域名服务器｡
相反, 我们依赖Cloudflare,
这是一个为我们做这件事的云服务提供商｡
所以如果你查一下diontraining的DNS记录｡ com, 权威的来源是Cloudflare的两个名称服务器｡
到目前为止, 我已经从托管一个世界上任何人都可以访问的公共可用DNS服务器的角度讨论了DNS,
但DNS实际上可以在内部或外部使用｡
到目前为止, 我所讲的一切都是关于外部的,
但让我们谈谈内部｡
如今, 在云计算中, 设置内部DNS服务也很常见, 该服务可以让同一网络或私有云中的云实例使用内部DNS名称而不是使用其IP地址进行相互访问｡
要做到这一点, 需要创建内部A记录, 并且在反向区域中也要创建内部指针记录｡
幸运的是, 大多数云提供商将在您创建和删除私有云中的不同虚拟机和其他实例时自动创建,
更新和删除这些内部DNS记录｡
然而, 外部DNS是我们大多数人都会更熟悉的｡
这些记录是围绕我们从中央机构购买的域名创建的,
并且我们在公共互联网上使用｡
现在, 对于每个DNS记录,
我们也有一个与之相关的TTL或生存时间｡
生存时间是一个设置, 告诉DNS解析器在请求新查询之前可以缓存查询多长时间｡
因此, 如果我的DNS记录设置为86,
400秒的生存时间, 这通常是默认值,
这意味着我的计算机将解析该DNS记录,
并且在必须返回DNS服务器并再次请求该信息之前, 它将记住它24小时｡
此DNS解析器也称为DNS缓存,
位于您的个人主机上｡
因此, 如果您运行的是Windows 10, 例如, 您的计算机在连接到互联网上的网站时,
会为它解析的每个DNS条目创建本地副本｡
这个临时数据库会记住它从DNS服务器收到的答案｡
所以如果你去狄昂训练｡ com, 你今天第一次这样做时, 你的计算机必须向DNS服务器询问该IP地址,
但现在它知道它在哪里, 并且在接下来的24小时内记住该IP｡
如果你今天访问我的网站五次,
你只需要查找一次那个IP地址｡
这有助于我们加快整个过程｡
现在, 如果你明天再试一次, 你的电脑会首先检查它的DNS缓存,
它会看到那里有一个记录｡
但是如果生存时间已经过去,
它将使该记录无效,
并执行另一次查找｡
最后我们需要介绍的是递归查找的概念｡
你看, 当你的电脑想找到一个给定的网站, 如diontraining｡
com,
它首先必须询问其DNS服务器所在的位置｡
因此, 如果你坐在家里使用Verizon
Fios连接, 例如, 你会问他们的DNS服务器,
“谁是diontraining｡ com？ 现在, Verizon的DNS可能知道也可能不知道diontraining的IP地址｡
com.
毕竟, 有数以百万计的网站, 如果他们必须每24小时重新同步我们的记录,
那将需要很长时间｡
因此, DNS使用这种递归策略来执行查找｡
所以你问Verizon, 如果他们不知道答案, 他们会更上一层楼,
问下一个DNS服务器｡
如果该服务器不知道答案, 它将上升到另一个级别, 并将继续这个过程,
直到找到知道diontraining的IP地址的人｡
com.
现在, 如果在这个递归过程中,
它一直到达｡ com或diontraining的路由域｡ com, 然后它可以问｡
com路由服务器哪个DNS服务器是diontrain的权威｡
com, 并直接从他们那里获得权威答案｡
本质上, 使用递归查找,
您的DNS解析器说, “我不知道这个域的IP是什么,
但我要问我的DNS服务器, 该服务器将搜索它,
直到找到它, 然后告诉我IP｡
现在,
还有另一种方法可以使用, 这就是所谓的迭代查找｡
使用迭代查找, 它类似于递归查找, 除了DNS服务器不会继续为您查找信息并将结果发送给您｡
相反, 在迭代查找中, 您的DNS解析器将询问DNS服务器该域的IP是什么,
如果DNS服务器不知道,
它将告诉您的解析器询问下一个DNS服务器, 该服务器将提供其IP｡
现在, 使用递归查找, DNS服务器将查找它并向解析器报告,
但是使用迭代查找, 您的DNS解析器将通过此递归一直执行此查询, 直到找到具有该域的IP的DNS解析器,
所以这实际上只是谁在搜索此信息的问题｡
好了, 我们已经在这节课上讲了很多信息,
所以作为一个快速总结,
你需要知道什么考试？
那么, 你需要了解DNS是如何工作的, 通过使用它的各种记录类型将域名转换为IP地址,
并将IP地址转换为域名｡
您应该记住, A记录用于IPv4地址的域名, 而AAAA记录用于IPv6地址的域名｡
CNAME记录用于将域名映射到其他域名｡
MX记录用于电子邮件, NS记录用于名称服务器｡
TXT记录将文本存储为人类可读或机器可读的数据｡
如果你记住了这个总结, 你应该能够回答你将在考试中看到的大部分DNS问题｡