DNS域名解析


域名解析:将域名映射为IP地址的方法和过程

DNS的使用方法:

  1. 应用程序调用一个叫解析器(resolver)的库过程,把名字作为参数传递给这个过程(例如:gethostbyname()就是一个解析器)
  2. 解析器发送一个UDP分组给本地DNS服务器,它会负责查找该名字,然后将对应的IP地址返回给解析器
  3. 解析器返回结果给应用程序,然后应用程序即可开始工作了(封装,发送……)

DNS域名解析_第1张图片

域名解析

  • 当一个解析器收到一个域名查询时,它将该查询传递给本地的一个域名服务器
  • 如果待查询的域名落在该名字服务器的管辖范围内,它将返回权威资源记录(一个权威资源记录(authoritative record)是指来自于管理该记录的权威机构,因此总是正确的,它和缓存的记录不同,后者可能是过期的)
  • 如果被请求的域名是远程的,且本地没有关于它的信息,那么本地名字服务器向根域服务器发送一条查询此域的消息

DNS域名解析_第2张图片


域名解析的种类1:递归查询

主机向本地域名服务器查询一般都是采用递归查询

DNS域名解析_第3张图片


域名解析的种类1:迭代查询

本地域名服务器向根域名服务器查询通常是采用迭代查询

DNS域名解析_第4张图片


一次完整的解析例子

DNS域名解析_第5张图片

  1. 有一台主机想要访问域名y.abc.com,但是它不知道它的IP地址无法完成封装,所以它首先要查询这个域名对应的IP地址
  2. 假如所有的服务器都没有缓存,它向本地域名服务器去发出查询的请求
  3. 本地域名服务器发现y.abc.com不是自己管辖的域名,无法直接给出答案,所以它向根域服务器去求救
  4. 根域服务器也没有y.abc.com的记录,但是它知道.com顶级域名服务器可能会知道,并且它自己有所有顶级域名的资源记录,于是它告诉本地域名服务器DNS.com的IP地址
  5. .com域名服务器也没有答案,但是它知道abc.com域名服务器可能知道且它有dns.abc.com的IP地址,于是它告诉本地域名服务器转向dns.abc.com进行查询
  6. y.abc.com如果是个合法的域名,它的信息一定存储在abc.com域名服务的数据库中


DNS消息传递

DNS消息采用UDP数据段来承载

有两种情况例外:

  1. UDP的报文超过了512个字节的时候,那么首次请求响应返回参数TC置位,当它再次地请求就需要建立TCP的连接,将数据应答分段来发送
  2. 主从域名服务器之间的数据更新同步

DNS域名解析_第6张图片

DNS域名解析_第7张图片


你可能感兴趣的:(#,计算机网络)