浅析DNS

文章主要从以下几个方面讨论DNS

1.什么是DNS?

2.DNS如何工作以及深入运行机制

3.DNS缓存机制

3.DNS查询

主机名,域名,IP,DNS......都是个啥??

The Domain Name System(DNS),即因特网域名系统。提供域名解析服务,将主机名解析为IP地址。

简单的理解下主机名,IP地址和DNS:

因特网上的识别方式和人类的识别方式很像。每个人都是个体,类比为因特网上的主机,假设这个个体叫张三,张三就是用来标识这个个体的一种方式,类比为主机名,怎么找到张三呢,张三的手机号是xxxxxxxxxxxx,类比IP地址。而DNS做的工作就是帮你找到张三的手机号。查水表的。

例如:

使用www.google.com对应的IP地址为172.217.4.196

www是服务器的名字

http://google.com是用来定位网站的域名

www.google.com 即主机名,由服务器+域名组成

主机名最大的意义在于方面人们记忆,而路由器口味独特,喜欢定长且具有层次结构的IP地址。DNS提供把方便记忆的主机名转换为IP地址的目录服务。

拓展:

DNS是由分层的DNS服务器实现的分布式数据库,属于应用层协议,运行于UDP之上(特殊情况使用TCP),使用53号端口。

一个主机可以拥有多个别名,因为主机别名比规范主机更容易记忆。

DNS是怎么工作的

DNS通常为应用层的其他协议(http、ftp...)所使用。当我们在浏览器上访问https://github.com/页面时,为了将用户的请求发送到web服务器,必须获得其IP地址。

DNS工作步骤

1.从浏览器中的URl提取主机名http://www.github.com,将主机名通过DNS客户机传给DNS应用的客户机端。

2.DNS客户机向DNS服务器发送一个包含主机名的请求。

3.经过各种查询,DNS客户机会受到一个包含主机名IP地址的返回报文。

4.浏览器接收到这个IP地址,就可以通过该IP地址定位http服务器从而建立tcp连接。

.......

这就是DNS大致需要做的工作。DNS还提供其他服务在这就不做介绍了。

深入理解DNS运行机制

DNS是实现分布式数据库的完美范例。

DNS分布模型

DNS有三种服务器管理类域名;

根域名(Root Domain):全球共有13个根服务器管理根域名

顶级域名(Top-Level Domain):(com、org、net、edu、gov)负责顶级域名以及所有国家的域名。

二级域名(Second-level domains):由权威DNS服务器管理

........类推

例:

www. zhihu. com .

三级域 二级域 顶级域 根域

DNS缓存(DNS Caching)

非常重要的一个概念。为了减少因特网上的大量报文传输做出的性能改善。

有DNS就有DNS缓存。DNS存在于浏览器,操作系统,CDN服务器,DNS服务器.......

以下仅讨论位于本地服务器缓存这种情况。(剩余的有空补充)

DNS缓存的运行机制:

访问www.google.com,当你在浏览器中输入URl地址时,浏览器会查看保存在本地文件中的Host文件进行域名匹配,如果有,直接返回IP地址,如果没有,浏览器会向本地服务器发送DNS请求。

本地服务器接受到浏览器发送的请求,会将域名与自己的缓存内容进行匹配,找到则直接返回,未找到则本地服务器会向DNS根服务器发送请求进行查询。

根服务器接收到请求,并不会返回IP给你,它只知道域名属于.com,于是将相关信息返回给本地服务器。

本地服务器继续向二级域名服务器(.com服务器)请求,二级域服务器会告诉本地DNS服务器,这个域名是属于http://google.com这个域,并将相关信息返回。

最后本地服务器向最终的域名解析服务器发送请求,此时解析服务器会返回一个回应的IP值给本地DNS服务器,同时DNS服务器会将这个对应关系保存在缓存中,等下次用户访问时,就可以快速返回IP,减少网络时延。服务器存储的DNS缓存会定期更新,称缓存的生命时间(TTL-time to live)

DNS有两种查询方式,一种是递归查询(Recursive query),一种是迭代查询(Iterative query)

图中1为递归查询,2-7为迭代查询。

DNS记录查询:

实现DNS分布式数据库的所有DNS度武器共同存储这资源记录(Resource Record,RR),提供了主机名到IP地址的映射。

资源记录包含了以下四个字段

{Name , Value , Type , TTL}

TTL上面提到过,决定了资源记录的生命时间。

字段的Name和Value的值取决于Type

Type = A ,映射一个IPV4的地址

Type =AAAA,映射一个IPV6的地址

Type=NS,返回保存下一级域名信息的服务器地址。

Type=MX:提供邮件服务器的规范主机名。

Type=CNAME,提供一个主机名对应的规范主机名。

.......(其余自行检索)

可用nslookup或dig进行记录查询,推荐使用dig。

你可能感兴趣的:(浅析DNS)