域名系统(Domain Name System, DNS)是互联网的核心应用层协议之一, 它用于查询域名对应的IP地址.在使用域名访问任何网络资源时都需要先进行域名解析.

www.cnblogs.com是一个典型的域名, 在进行Http访问之前它会先被DNS转换为一个ip地址.

域名与目录树类似形成一个树状结构, 最右侧为顶级域, 向左域名级别降低.

所有域名都属于根域. 根域由13组根域名服务器管理, 从A.ROOT-SERVERS.NETM.ROOT-SERVERS.NET.

根域的下一级为顶级域(top level domain, TLD), 如通用顶级域名.com, .net, .gov和地区顶级域名.cn, .jp等. 下一级为次级域名, 如cnblogs, baidu, google.

最低级的为主机名, 如www, mail等.

根域下顶级域名的分配和使用由非营利性的互联网名称与数字地址分配机构(Internet Corporation for Assigned Names and Numbers, ICNN)管理.

顶级域下次级域名由各地区的域名管理机构管理, 主机名则由域名拥有者自己管理.

域名解析

域名系统是一个典型的分布式数据库, 每个名称服务器(nameserver)只存储着部分数据. 当其无法解析某个域名时, 就向其它服务器请求解析直到成功解析或超时.

下面简单介绍DNS解析过程:

  1. 查询本地hosts文件, unix系操作系统一般在/etc/hosts

  2. 若hosts文件不存在相关记录, 则检查本地DNS缓存.

  3. 若本地DNS缓存不存在相关记录则查询首选名称服务器.

若目标域名处在名称服务器的管理之下, 则名称服务器可以给出可靠的解析结果.

若目标域名不属于名称服务器管理但在它的缓存中, 名称服务器可以根据它的缓存给出一个不可靠的解析结果.

若首选名称服务器无法解析域名, 根据名称服务器的配置有两种策略:

  • 若本地DNS配置了转发, 则请求转发给上一级DNS解析. 上级DNS将解析结果返回给本地DNS, 由本地DNS返回给客户端.

  • 若本地DNS未配置转发, 则自顶向下查询:

  1. 本地DNS请求根服务器(共13台), 根服务器将顶级域名主名称服务器的IP地址返回给本地DNS.
  2. 本地DNS则请求顶级域名服务器. 若顶级域名服务器可以解析则将结果返回给本地DNS, 由本地DNS返回给客户端.
  3. 若顶级域名服务器无法解析则返回下一级主名称服务器地址, 直到某一级DNS成功解析.

DNS记录

DNS是一个分布式的数据库, 名称服务器使用DNS记录(dns record)保存域名和IP之间的关系.

名称服务器使用区域文件(zone file)保存自己的记录, 区域文件中除了DNS记录外还定义了一些环境变量.

  • $ORIGIN表示本NS管理的域, 如$ORIGIN example.com.表示本NS管理 example.com域.

  • $TTL表示解析记录在缓存中的默认过期时间.

这是一个区域文件的示例, 可以让我们更好地理解区域文件:

$ORIGIN example.com.
$TTL 1h
example.com. IN SOA ns.example.com. username.example.com. ( 2007120710 1d 2h 4w 1h )
example.com. IN NS ns
example.com. IN NS ns.somewhere.example.
example.com. IN MX 10 mail.example.com.
@ IN MX 20 mail2.example.com.
@ IN MX 50 mail3
example.com. IN A 192.0.2.1
IN AAAA 2001:db8:10::1
ns IN A 192.0.2.2
IN AAAA 2001:db8:10::2
www IN CNAME example.com.
wwwtest IN CNAME www
mail IN A 192.0.2.3
mail2 IN A 192.0.2.4
mail3 IN A 192.0.2.5

DNS记录有以下几种类型:

A记录和AAAA记录

A记录是IPv4主机记录, AAAA为IPv6主机记录, 如下面这一条:

example.com.  IN  A     192.0.2.1
IN AAAA 2001:db8:10::1

它表示主机example.com对应的IPv4地址为192.0.2.1, IPv6地址为2001:db8:10::1.

第二个字段IN表示Internet, 这一字段会出现在很多记录中.

最后加.表示采用绝对路径, 区域文件也可以用相对路径来配置.

下面两条记录的作用是一样的:

www.example.com. IN A 192.0.2.2

相对路径表示:

www IN A 192.0.2.2

@$ORIGIN记录了IP地址, 下面这条记录配置了example.com主机的IP地址:

@ IN A 192.0.2.1

SOA记录

授权开始(Start of Authority, SOA)记录是区域文件的第一条记录, 用于记录为本服务器授权的上级名称服务器.

example.com.  IN  SOA   ns.example.com. username.example.com. (
2007120710 ; serial number
1d ; refresh interval
2h ; retry interval
4w ; expiry period
1h ; negative TTL
)

上述记录表示域example.com的主名称服务器为ns.example.com.

username.example.com.表示管理员邮箱为username@example.com, 注意@被替换为..

后面的字段表示:

  • serial number表示本服务器记录的版本号, 每次修改版本号就会加1. 通过比较本服务器版本号和上级服务器版本号已进行同步.
  • refresh interval表示向SOA服务器请求更新记录的间隔
  • retry interval表示向SOA服务器请求更新记录失败时的重试周期
  • expiry period表示SOA服务器若在此时间内不响应, 则不再将其作为SOA服务器
  • negative ttl表示当查询结果为无此记录时, 缓存该结果的时间

NS记录

ns记录用于表示某个域的名称服务器:

example.com.  IN  NS    ns
example.com. IN NS ns2.example.com.

上述两条记录表示example.com域的名称服务器为ns.example.com, 备用名称服务器为ns2.example.com.

每个区域文件中至少定义两个名称服务器,以便在一个服务器出现问题时还能正确运行. 如果只有一个名称服务器,大多数 DNS 服务器软件都会认为区域文件无效.

在自顶向下查询过程中, 父域的名称服务器根据自己的ns记录确定子域的名称服务器.

MX记录

MX记录用于表示某个域的邮件服务器:

example.com.  IN  MX  10 mail.example.com.

上述记录表示mail.example.comexample.com域的邮件服务器.

也可以使用@表示根域, 使用相对路径表示邮件服务器.

@             IN  MX    20 mail2.example.com.
@ IN MX 50 mail3

记录中第4个字段的数字表示优先级, 数字越小优先级越高.

CNAME记录

CNAME记录用于记录域名别名:

www           IN  CNAME example.com.
wwwtest IN CNAME www

上述记录表示www.example.comexample.com的一个别名, wwwtest.example.com又是www.example.com的一个别名.

DNS工具

配置本地nameserver

在我们可以使用域名访问网络前, 需要先配置本地的名称服务器. 本地名称服务器可以由DHCP协议动态分配, 也可以手动配置.

Unix系列操作系统, 在/etc/resolv.conf配置文件中设置nameserver:

nameserver 172.18.49.59

为自己的网站配置域名

首先, 自己网站的服务器需要拥有一个公网IP, 使得我们在互联网上可以直接访问该主机.

随后可以在域名提供商处购买自己的域名, 比如finley.cn. 然后在域名提供商处添加A记录将域名解析到自己主机的公网ip.

查询所有者

whois指令可以查询域名所有者的信息:

& whois cnblogs.com
Domain Name: cnblogs.com
Registry Domain ID: 866509_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.35.com
Registrar URL: http://www.35.com
Updated Date: 2016-10-23T22:59:39Z
Creation Date: 2003-11-11T04:00:00Z
Registrar Registration Expiration Date: 2021-11-11T04:00:00Z
Registrar: 35 Technology Co., Ltd.
...

DNS查询

host命令可以查询某个域名的ip:

$ host cnblogs.com
cnblogs.com has address 42.121.252.58 cnblogs.com mail is handled by 30 aspmx2.googlemail.com.
cnblogs.com mail is handled by 30 aspmx3.googlemail.com.
cnblogs.com mail is handled by 30 aspmx4.googlemail.com.
cnblogs.com mail is handled by 30 aspmx5.googlemail.com.
cnblogs.com mail is handled by 10 aspmx.l.google.com.
cnblogs.com mail is handled by 20 alt1.aspmx.l.google.com.
cnblogs.com mail is handled by 20 alt2.aspmx.l.google.com.

nslookup可以交互式查询:

 $ nslookup
> cnblogs.com
Server: 172.18.49.59
Address: 172.18.49.59#53 Non-authoritative answer:
Name: cnblogs.com
Address: 42.121.252.58

dig命令可以看到DNS解析过程:

dig cnblogs.cn

; <<>> DiG 9.8.3-P1 <<>> cnblogs.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54154
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 0 ;; QUESTION SECTION:
;cnblogs.cn. IN A ;; ANSWER SECTION:
cnblogs.cn. 600 IN CNAME fw1.22.cn.
fw1.22.cn. 973 IN CNAME 22url.lncdn.com.
22url.lncdn.com. 27 IN A 103.13.73.87
22url.lncdn.com. 27 IN A 162.251.94.12
22url.lncdn.com. 27 IN A 162.251.94.101 ;; AUTHORITY SECTION:
lncdn.com. 112713 IN NS ns2.360dns.net.
lncdn.com. 112713 IN NS ns1.360dns.org.
lncdn.com. 112713 IN NS ns2.360dns.org.
lncdn.com. 112713 IN NS ns1.360dns.net. ;; Query time: 69 msec
;; SERVER: 172.18.49.59#53(172.18.49.59)
;; WHEN: Tue May 9 17:03:53 2017
;; MSG SIZE rcvd: 218

域名系统DNS简介的更多相关文章

  1. 带你简单了解域名系统DNS

    带你简单了解域名系统DNS 一.域名简介 1.1.DNS服务的作用 负责解析域名,将域名解析成IP地址. 1.2.域名系统概述 由于32位的IP地址并不容易记忆,人们往往喜欢记忆网站的域名.所以当我们 ...

  2. 关于域名系统DNS解析IP地址的一些总结

    关于域名系统DNS(Domain Name System) 从域名中解析出IP地址. DNS主要由3部分组成: ① 名称解析器(resolver) ② 域名空间(domain name space) ...

  3. 套接字和域名系统DNS

    套接字产生的原因: 当应用进程通过传输层进行通信时 ,TCP和 UDP将面临同时为多个应用进程提供并行通信的问题.多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据. 为了区别每 ...

  4. 域名系统DNS和FTP

    域名系统概述 域名系统DNS(Domain Name System)是英特网使用的命名系统,用于把便于人们使用机器名字转化为IP地址. 为什么机器在处理IP数据报时要使用IP地址而不使用域名呢?IP地 ...

  5. 域名系统DNS

    一.域名系统是什么 域名系统其实就是一个把主机名解析为IP地址的名字系统. 因特网使用层次树状结构的命名方法,并使用分布式的域名系统DNS.因特网的域名系统DNS被设计成一个联机分布式数据库系统,并采 ...

  6. 计算机网络之域名系统DNS

    域名系统DNS 域名系统DNS(Domai NameSystem)是因特网使用的命名系统,用于把便于人们使用的机器名字转换为IP地址. 许多应用层软件经常直接使用域名系统,但计算机的用户只是间接而不是 ...

  7. 第9章 应用层(1)_域名系统DNS

    1. 域名系统DNS 1.1 主机名和域名的关系 (1)完全限定域名(Fully Qualified Domain Name, FQDN) = 主机名 + 域名 ①一个域名下可以有多个服务器/主机(如 ...

  8. 域名系统-DNS

    域名系统DNS 域名系统DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名转化为IP地址,域名系统就是名字系统. 很多应用层的软件经常直接使用DNS.DN ...

  9. DNS 域名系统的简介

    一.DNS域名系统简介 1.网络中为了区别各个主机,必须为每台主机分配一个唯一的地址, 这个地址即称为“IP 地址.但这些数字难以记忆, 所以采用“域名” 的方式来取代这些数字. 2.当某台主机要与其 ...

随机推荐

  1. 用windows性能监视器检测sqlserver 常见指标

    转载地址:https://www.cnblogs.com/xdong/p/4296072.html

  2. 【算法】map的应用

    map使用参考链接http://www.cnblogs.com/KID-XiaoYuan/articles/7297709.html 题目 在ACM比赛中,你每解决一道题,你就可以获得一个气球,不同颜 ...

  3. C#中 property 与 attribute的区别

    说的通俗些Attribute是类,不过是一类比较特殊的类,Attribute必须写在一对方括号中,用来处理.NET中多种问题:序列化.程序的安全特征等等,在.NET中的作用非同凡响 Attribute ...

  4. OKR 与 KPI

    作者:Cat Chen链接:https://www.zhihu.com/question/22478049/answer/23833548来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  5. 服务器被minerd

    cd /opt chmod -x minerd 去/root/.ssh 目录下,清除authorized_keys,KHK75NEOiq 文件 在ssh的配置文件/etc/ssh/sshd_confi ...

  6. Shell脚本学习-echo命令

    跟着RUNOOB网站的教程学习的笔记 shell的echo指令与PHP的echo指令类似,都是用于字符串的输出.命令格式: echo string 1 显示普通字符串 echo "It is ...

  7. UEditor的jQuery插件化 -转

    UEditor本身并不依赖jQuery,但如果在项目中同时使用两者的话,可能会希望使用jQuery语法创建和获取编辑器实例.为此,需要为jQuery编写插件,代码如下: (function ($) { ...

  8. Spring 使用xml配置aop

    1.xml文件需要引入aop命名空间 2.xml内容: <?xml version="1.0" encoding="UTF-8"?> <bea ...

  9. 利用蒙特卡洛(Monte Carlo)方法计算π值[ 转载]

    部分转载自:https://blog.csdn.net/daniel960601/article/details/79121055 圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能 ...

  10. k8s docker集群搭建

    一.Kubernetes系列之介绍篇   •Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器 ...