1. 概念
DNS(Domain Name System):域名系统,是因特网使用的命名系统,用于解决IP地址和域名的映射关系。
DNS解析:互联网都是通过URL来请求资源的,而URL中的域名需要解析成IP地址才能与远程主机建立连接,如何将域名解析成IP地址就属于DNS解析的工作范畴。
2. 域名结构
从技术角度来看,域名是在Internet上用于解决IP地址的一种方法。一个完整的域名由2个或2个以上的部分组成,各部分之间用英文的句号“.”来分隔,最后一个“.”的右边部分称为顶级域名(TLD,也称为一级域名),最后一个“.”的左边部分称为二级域名(SLD),二级域名的左边部分称为三级域名,以此类推,每一级的域名控制它下一级域名的分配。(度娘)
eg:mail.cctv.com
其中:
com为顶级域名( top-level-domain,TLD)
cctv为二级域名
mail为三级域名
3. DNS解析过程
- 浏览器会检查缓存中有没有这域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。
-
如果过程1中浏览器缓存中没有域名对应的ip,则从操作系统本身去做域名解析,我们在windows中的host文件可以设置特定域名映射到特定ip。
C:\Windows\System32\drivers\etc\hosts
然后在终端中ping www.baidu.com, 如下图所示:
-
向本地域名解析服务器(LDNS)发起域名解析请求
上述步骤的1、2都是在本机中完成的域名解析,如果经过1、2步骤都没有完成域名的解析,则需要向LDNS发起域名解析,对于LDNS,Window中可以通过ipconfig/all来查询,如下所示:
LDNS 一般都缓存了大部分的域名解析结果,当然缓存时间也受域名失效的时间控制,大部分的解析工作倒这里就差不多结束了,LDNS负责了大部分的解析工作。
4.向根域名解析服务器(RDNS)发起域名解析的请求
当步骤3中没有完成域名的解析,则需要向RDNS发起域名解析的请求
根域名服务器返回通用顶级域名解析服务器(gTDL)地址
LDNS向根域名服务器发起请求,根域名服务器返回的是所查询的通用顶级域名(Generic top-level-domain, gTLD)地址,常见的通用顶级域名有.com、.org、.edu。本地域名服务器向gTLD发起解析域名请求
gTLD服务器接收请求并返回注册的域名服务器(Name Server服务器)
当gTLD服务器接收到本地域名服务器发起的请求后,并根据需要解析的域名,找到该域名对应的Name Server 服务器,通常情况下,这个Name Server服务器就是你注册的域名服务器,那么你注册的域名的服务上的服务器将承担起域名解析的任务。本地域名服务器向Name Server服务器发起域名解析请求
Name Server服务器会查询存储的域名和IP的映射关系表,然后返回该域名对应的ip和TTL给本地域名服务器,本地域名服务器进行缓存这个域名和ip的对应关系,缓存时间由TTL决定。
本地域名服务器返回查询域名对应的ip给用户(浏览器),浏览器进行缓存,缓存时间由TTL决定。
经过以上的10个步骤,就可以拿到真正的ip了,然后通过ip去对应的服务器上请求资源。
4. 域名解析方式
域名解析记录主要分为:A记录、MX记录、CNAME记录、 NS记录、TXT记录
具体内容如下:
- A记录:A代表的是Address,用来指定域名对应的IP地址,A记录允许将多个域名解析到一个IP地址,但不允许将一个域名解析到多个IP上。
- MX记录:MX代表的是Mail Exchage,就是可以将某个域名下的邮箱服务器指向自己的Mail Server
- CNAME记录:CNAME指的是Canonical Name,也就是别名解析,可以将指定的域名解析到其他域名上,而其他域名就是指定域名的别名,整个解析过程称为别名解析。
- NS记录:就是为了某个域名指定了特定的DNS服务器去解析。
- TXT记录:为某个主机名或者域名设置特定的说明。
比如我在腾讯云上买的域名,那我访问自己的域名时,就需要腾讯来提供把域名解析到ip的工作,也就是腾讯提供Name Server服务器
但腾讯怎么知道我们域名对应的ip呢?其实是需要我们自己去绑定的,如下图所示,需要我们在腾讯云的管理后台把域名和ip关联起来,这里是A记录类型,其实就是建立域名和ip的映射表。
绑定好以后,我们访问域名时,会解析到对应的ip上,如下图所示
另外,在腾讯云的管理后台,也可以设置TTL,来控制本地域名解析服务器缓存域名和ip对应关系的时间。