一、什么是DNS?
DNS (Domain Name System 域名系统 )的作用非常简单,就是根据域名查出IP地址。
为什么要查出IP地址,是因为传输层进行TCP/IP通信是用到的源地址和目标地址都是IP地址。
二、DNS如何查询IP地址?
DNS服务器是根据域名的层级,进行分级查询。
域名的层级结构可分为:
主机名.次级域名.顶级域名.根域名
缩写:host.sld.tld.root
举个栗子:
www.baidu.com真正域名其实是www.baidu.com.root,因为根域名对于所有域名都是一样的,所以平时都是省略不写。
所以.root是根域名,.com是顶级域名,.baidu是次级域名,www是主机名,又称三级域名。
所谓"分级查询",就是从根域名开始,依次查询每一级域名的NS记录,直到查到最终的IP地址,过程大致如下:
- 从"根域名服务器"查到"顶级域名服务器"的NS(域名服务)记录和A(地址)记录
- 从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录
- 从"次级域名服务器"查出"主机名"的IP地址
那么根域名服务器的IP地址又是如何得知的呢?
因为全球共有13台根逻辑域名服务器,根域名服务器的NS记录和IP地址一般是不会变化的,所以内置在DNS服务器里面,运营商的服务保存了根域名服务的IP地址。
三、浏览器如何向DNS服务器发出查询?
- 检查浏览器缓存
- 检查操作系统缓存,常见的如hosts文件
- 检查路由器缓存
- 如果前几步都没没找到,会向ISP(网络服务提供商)的LDNS服务器查询
- 如果LDNS服务器没找到,会向跟域名服务器(Root Server)请求解析,分为以下几步:
- 根服务器返回顶级域名(TLD)服务器的地址
- 接着向TLD发送请求,然后会返回次级域名(SLD)服务器的地址
- 接着向SLD域名服务器通过域名查询目标IP,即返回www.baidu.com的地址
- 本地DNS服务器会缓存结果,并返回给用户,缓存在系统中。