DNS域名解析服务
描述
我们在平时访问网站时,IP地址并不好记忆,一般需要输入一个域名,例如www.baidu.com
。而DNS就是负责域名向IP地址转换的系统。
注意,浏览器上方的输入框里一般为URL,包含协议头和资源定位,例如https://www.baidu.com
,其中https
表示协议,www.baidu.com
才是域名。
我们可以在命令行使用ping命令来查询域名对应的服务器的IP。但需要注意的是,IP地址可能不唯一,这是因为大部分厂商会使用CDN,将域名解析道CDN服务器,CDN服务器会缓存一个源服务器站点的副本,用户请求的时候实际上是从最近的CDN服务器获取的。(这样有利于不同地区的用户实现较低延迟的访问)
域名
我们还是以百度www.baidu.com
为例,com
叫做根,根不只com
一种,通常com
用于商业网站,org
表示非盈利组织,net
表示网络服务机构等。
而baidu.com
为顶级域名,类似的还有csdn.net
、google.com
等。
www.baidu.com
叫做二级域名,类似的还有img.baidu.com
等等。
除此之外,还有三级域名account.www.baidu.com
(这个域名并不一定能访问只是举例)
在二级域名中,有一类特殊的,它们通常以www
开始,它是万维网World Wide Web的简称。万维网是一个通过互联网访问的,由许多互相连接的超文本组成的系统。为了表示以浏览器超文本的方式访问,许多网站前面都会带www
,用于区分其他服务如FTP等。但是随着互联网发展,越来越多的网站不再尊循这个不成文的规范,www
就逐渐淡化了。
二级域名在搜索引擎的权重往往不如顶级域名,例如在搜索引擎中查询某个字段,所列出的网页通常是顶级域名靠前。但是www
开头是个例外,有些搜索引擎会将其视为顶级域名。
域名服务器
根域名服务器
根服务器接受包含域名的递归解析器的查询,根域名服务器根据该域的扩展名(.com、.net、.org 等),通过将递归解析器定向到顶级域名服务器进行响应。根域名服务器由一家名为 Internet 名称与数字地址分配机构(ICANN)的非营利组织进行监督。
顶级域名服务器(TLD)
TLD域名服务器维护共享通用域扩展名的所有域名的信息,例如 .com、.net 或 url 中最后一个点之后的任何内容。例如,.com TLD 域名服务器包含以“.com”结尾的每个网站的信息。
权限域名服务器
权限域名服务器,又叫权威性域名服务器。权威性域名服务器通常是解析器查找 IP 地址过程中的最后一步。权威名称服务器包含特定于其服务域名的信息(例如,google.com)权威性域名服务器包含特定于其所服务的域名的信息(例如 www.google.com)。
域名解析记录
域名解析记录主要分为以下几种:
- A记录:用来指定域名对应的IP地址
- MX记录:可以将域名下的邮件服务指向自己的邮件服务器。假设MX记录地址为
111.111.111.111
,域名为example.com
,则邮件xxx@example.com
会经路由发送到111.111.111.111
所在的服务器。 - CNAME记录:别名解析,可为一个域名设置一个或多个别名。
- NS记录:为某个域名指定DNS解析服务器,也就是这个域名由指定的IP地址的DNS服务器解析。
- TXT记录:为某个主机名或域名设置说明。
域名解析过程
我们在网络中访问一台主机是需要网络地址的,我们上面提到过,DNS负责将域名转换成IP地址。
注意:如果是浏览器访问网站,现在的浏览器通常会有缓存功能,如果浏览器缓存有这个记录的话就通常不会进行以下过程
本机首先会根据系统缓存来解析域名,在Windows下为HOST文件,这个文件记录了部分域名解析,如果文件中存在相应的记录,则直接使用记录中的IP地址,不用向远程服务器查询。
如果系统缓存中没有找到记录,则会向本地服务器进行查询。本地服务器通常为局域网内的某个DNS服务器,家庭的话一般为路由器或者路由器指定一个远程的DNS服务器。本地服务器若查询到记录则返回给主机,若未找到则按照以下方式继续查找。
当然主机也能自己指定这个DNS服务器,而不是路由器下发。例如在Windows下,右键网络中网络适配器的属性->Internet协议版本4(TCP/IPv4)->配置DNS
DNS查询过程分为两种,即递归查询和迭代查询。
如果是递归查询,本地服务器会作为客户端继续向根域名服务器请求,根域名服务器又会作为客户端向对应的顶级域名服务器查询,顶级域名服务器作为客户端继续向权限域名服务器查询,权限域名服务器记录经由顶级域名服务器、根域名服务器、本地域名服务器,以此顺序返回给主机。
如果是迭代查询,本地域名服务器会请求根域名服务器,根域名服务器会把相关顶级域名服务器的IP地址返回给本地域名服务器,然后本地域名服务器再按照同样的方式请求顶级域名服务器获取权限域名服务器的IP地址,最后权限域名服务器被请求,然后将DNS记录返回给本地域名服务器,经由本地域名服务器将记录发送给主机。
由此可见上述查询过程是比较繁琐而去伴随一定性能开销的,为了提高速率,通常主机或者各DNS服务器都会有相应的高速缓存,如果缓存中存在该记录就直接从当前服务器(或主机)缓存中获取。