# DNS(域名解析)
DNS
是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP
地址,并具有将域名转换为IP
地址功能的服务器。其中域名必须对应一个IP
地址,而IP
地址不一定有域名。DNS
是建立在UDP
之上的应用层协议。DNS
协议提供通过域名查找IP
地址,或逆向从IP
地址反查域名的服务。DNS
是一个网络服务器,我们的域名解析简单来说就是在DNS
上记录一条信息记录。
# 域名服务器
域名到
IP
地址的解析是由分布在因特网上的许多域名服务器程序(可简称为域名服务器)共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器也称为域名服务器。
# 解析过程
当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序(
resolver
),并成为DNS
的一个客户,把待解析的域名放在DNS
请求报文中,以UDP
用户数据报方式发给本地域名服务器(使用UDP
是为了减少开销)。本地域名服务器在查找域名后,把对应的IP
地址放在回答报文中返回。应用进程获得目的主机的IP
地址后即可进行通信。
- 递归查询
如果主机所询问的本地域名服务器不知道被查询域名的
IP
地址,那么本地域名服务器就以DNS
客户的身份,向其他根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。因此,递归查询返回的查询结果或者是所要查询的IP
地址,或者是报错,表示无法查询到所需的IP
地址。
- 迭代查询
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询(而不是替本地域名服务器进行后续的查询)。根域名服务器通常是把自己知道的顶级域名服务器的
IP
地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP
地址,要么告诉本地域名服务器下一步应当向哪一个权限域名服务器进行查询,本地域名服务器就这样进行迭代查询。最后,知道了所要解析的域名的IP
地址,然后把这个结果返回给发起查询的主机。
两种查询的区别
# 浏览器如何通过域名找到对应IP
# 总结
浏览器通过向
DNS
服务器发送域名,DNS
服务器查询到与域名相对应的IP
地址,然后返回给浏览器,浏览器再将IP
地址打在协议上,同时请求参数也会在协议搭载,然后一并发送给对应的服务器。
TCP和UDP →