DNS,或者说域名系统,通常是学习如何配置网站和服务器的一个非常困难的部分。了解 DNS 的工作原理将有助于诊断网络访问的问题,也有助于理解 DNS 系统背后的工作原理。

这篇文章中,我们会讨论一些基本的 DNS 概念,这些概念将有助于你配置并使用 DNS。

在我们开始配置你自己的服务器域名解析之前,让我们先来看一些关于这些是如何实现的的基本概念。

我们应该先从术语定义开始。虽然有一些术语在谈论计算领域中其它内容时经常出现,但是有许多术语不常使用。

先从简单的开始:

域名系统(Domain Name System)

域名系统(通常被称为“DNS”)是一个网络系统,允许我们把对人类友好的名称解析为唯一的地址。

域名(Domain Name)

域名是我们习惯于与互联网资源关联的人性化名称。例如,”google.com” 是一个域名。有些人会说 “google” 部分是域名部分,但我们通常可以将组合形式称为域名。

网址 “google.com” 与 Google Inc. 拥有的服务器相关联。当我们在浏览器中键入 “google.com” 时,域名系统允许我们访问其相关联的 Google 服务器。

IP 地址(IP Address)

IP 地址是我们所说的网络可寻址位置。每个 IP 地址在其网络中必须是唯一的。我们这里谈论的网络就是指整个互联网。

IPv4,目前最常见的地址形式,由四组数字组成,每组最多有三位数字,每一组用一个点分隔。例如,111.222.111.222 是有效的 IPv4 IP 地址。使用 DNS,我们可以将名称映射到该地址,这样,你就不必记住一组复杂的数字,来访问你需要的网站。

顶级域名(Top Level Domain)

顶级域名,或者说 TLD,是域名的最基本部分。顶级域名是右侧的最远部分(由点分隔)。常见的顶级域名是 com、net、org、gov、edu 和 io。

顶级域名在域名术语层次结构的最上层。由 ICANN(互联网名称和号码分配公司)对顶级域名进行管理控制。然后,通过域名注册商来分发 TLD 下面的域名。

主机(Host)

域名所有者可以定义多个单独的主机,指向可以通过该域名访问的不同的计算机或者服务。例如,大多数域名所有者会让他们的 web 服务器可以通过裸域(example.com)以及 www 主机(www.example.com)访问。

你可以在一个域名下面定义其它主机。比如说,通过 api 主机(api.example.com) 允许 API 访问,通过 ftp 主机或者 files 主机(ftp.example.com 或者 files.example.com)允许 ftp 访问。主机名可以任意指定,只要它们在该域名下是唯一的。

子域名(Sub Domain Name)

一个和主机相关的主题就是子域名。

DNS 有层次结构,TLD 下面可以有多个域名。例如,com 下面有 google.com 和 ubuntu.com。”子域名” 是指作为较高层级域名的一部分。所以说,ubuntu.com 可以说是 com 的子域名,但是通常这被称为域名,或者 “ubuntu” 部分是 SLD(Second Level Domain),所以这是一个二级域名。

同样,每个域名可以控制它下面的子域名。这通常就是我们所指的子域名。例如,你可以把 “www.history.school.edu” 作为你学校的历史部门的域名。 “history” 部分是一个子域名。

主机名和子域名之间的区别是主机定义计算机或资源,而子域名扩展父域。它是一种把域名本身细分的方法。

无论谈论子域名还是主机,你都可以开始看到域名的最左边部分是最具体的。这也是 DNS 的工作原理:从左到右阅读时,从最具体到最不具体。

完全限定域名(Fully Qualified Domain Name)

完全限定的域名,通常称为 FQDN,也就是我们所说的绝对域名。DNS 系统中的域名可以是相对的,所以可能是模糊的。FQDN 是一个绝对名称,表示了它相对于域名系统中绝对根目录的位置。

这表明它表示的每个域名都包括 TLD 部分。正确的 FQDN 以点结束,表示 DNS 层次结构的根。“mail.google.com.” 就是一个标准的 FQDN 的例子。有时候,一些软件使用的 FQDN 不需要末尾的点,但是要符合 ICANN 标准的话一定要加上末尾的点。

名称服务器(Name Server)

名称服务器(NS)是一种将域名翻译成 IP 地址的计算机。这些服务器完成了 DNS 系统中的大部分工作。由于域名翻译的数量对于任何一台服务器来说都太多了,因此每台服务器可以将请求转发给其他名称服务器或把它们负责的子域名的子集委派给其他名称服务器。

名称服务器可以是 “权威的”,表示它们自己可以提供所负责的域名的查询结果。否则,它们可能会转发到其他服务器,或者提供其他名称服务器数据的缓存副本。

区域文件(Zone Files)

区域文件是一个简单的文本文件,包含域名和 IP 地址之间的映射。这是当用户请求某个域名时,DNS 系统最终找出 IP 关联记录的地方。

区域文件放置在名称服务器中,通常定义了特定域名下可用的资源,或者可以去获取该信息的位置。

记录(Record)

在区域文件中,保存着记录。其中最简单的记录形式是,是资源和名称之间的单独映射。它们可以将域名映射到 IP 地址,定义域名的名称服务器,定义域名的邮件服务器等。

总结

现在你已经了解了 DNS 所涉及到的一些术语,接下来你可以想了解 DNS如何工作

什么是DNS的更多相关文章

  1. 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置

    网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...

  2. Liunx下配置DNS服务

    当Ping 主机名时可以映射出该主机的IP地址,反之亦然.配置并指定DNS服务器可以快速部署集群,不需要每台主机都去修改HOSTS文件即可实现IP与主机名的相互解析.而在Linux下的DNS是用bin ...

  3. ★Kali信息收集~4.DNS系列

    ★.1host:DNS信息 参数: 一般情况下,host查找的是A,AAAA,和MX的记录 案例: DNS服务器查询  host -t ns 域名 A记录和MX记录查询  host 域名(host - ...

  4. Node.js:DNS模块的使用

    Nodejs的DNS模块包涵有关DNS查询和操作的方法,下面介绍该模块的基本用法以及实现一个DNS查询小工具. 1.获取DNS服务器地址 使用getServers方法,该方法返回一个IP地址组成的数组 ...

  5. Java DNS查询内部实现

    源码分析 在Java中,DNS相关的操作都是通过通过InetAddress提供的API实现的.比如查询域名对应的IP地址: String dottedQuadIpAddress = InetAddre ...

  6. DNS报文格式(RFC1035)

    一.域名和资源记录的定义 1.Name space definitions 2.资源记录定义(RR definitions)      2.1 格式          后面分析报文的时候详细解释.   ...

  7. DNS原理及其解析过程 精彩剖析

    本文章转自下面:http://369369.blog.51cto.com/319630/812889 DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址 ...

  8. CentOS7 查看IP、Gateway、DNS、Hostname

    1.查看IP# ip addr 2.查看路由# ip route 3.查看DNS# cat /etc/resolv.conf 4.查看主机名# hostname

  9. linux查看本机IP、gateway、DNS

    IP:     ifconfig gateway:[root@localhost ~]# netstat -rnKernel IP routing tableDestination     Gatew ...

  10. Centos6.2设置静态ip和dns

    参考了如下文章:https://gist.github.com/fernandoaleman/2172388http://www.lifelinux.com/how-to-configure-stat ...

随机推荐

  1. 在vue中让某个组件重新渲染的笨方法

    在vue中,推崇的是数据驱动也就是数据更新进而使组件得以重新渲染:在某些情况下,我们想要在数据不改变的情况下,重新渲染组件:我遇到的一个情况是:同一个页面,两个tab页分别为tab1和tab2,公用了 ...

  2. 零零散散的python笔记

    Python strip()方法 用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列. #!/usr/bin/python # -*- coding: UTF-8 -*- str = &qu ...

  3. gzip压缩配置

    gzip on;gzip_buffers 32 4K;gzip_comp_level 6;gzip_min_length 200;gzip_types text/css text/xml applic ...

  4. C语言Ⅰ博客作业10

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10097 我在这个课程的 ...

  5. Vue:不同页面之间的传递参数--params

    在嵌套vue-router情况下,不同页面之间传递参数可以通过params实现.而params传参分为两种情况: 1.参数在url中显示 首先你要确定自己要传的参数,并在控制路由的文件中的Router ...

  6. Android的视图(View)组件

    Android的绝大部分UI组件都放在android.widget包及其子包.android,view包及其子包中,Android应用的所有UI组件都继承了View类,View组件非常类似于Swing ...

  7. POSTGRESQL日期函数大全

    一:各个数据中的连接符 SqlServer的连接符:+(加号) Sqlite的连接符:.(点) PostgreSQL的连接符:||(或) 二: 今天在PostgreSQL计算日期的时候,翻了一些资料, ...

  8. Python特色数据类型--列表

    #list[起始索引:终止索引(不包含):步长间隔] list1[5:8] #步长省略则默认为1 #修改元素列表 #列表是一种可变的数据类型,所以可以修改内容 list1 = [0,1,2,3,4] ...

  9. docker学习笔记之把容器commit成镜像

    docker提供了两种镜像制作的方式,提高了使用的灵活性: 1.可以将更改后的容器提交,制作成镜像(这是接下来要说明的) 2.通过Dockerfile来制作镜像 下面通过一个例子来展示方法1. 本地有 ...

  10. IDEA 中git的分支管理和使用说明

    1. 为什么要建立分支 git默认的主分支名字为master,一般团队开发时,都不会在master主分支上修改代码,而是建立新分支,测试完毕后,在将分支的代码合并到master主分支上. 2.操作如下 ...