域名解析是指把域名映射成IP地址或把IP地址映射成域名的过程。前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。域名解析的方式有两种:递归查询和递归与迭代相结合的查询。递归查询给根域名服务造成的负载过大,所以在实际中几乎不使用。
常用的是递归与迭代相结合的查询方式,该方式分为两部分
1)主机向本地域名服务器的查询采用的是递归查询
也就是说,如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步的查询。在这种情况下,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归在其他几个域名服务器之间进行的。然后,本地域名服务器从根域名服务器得到了所需的IP地址,最后本地域名服务器将查询结果告诉主机m.xyz.com
2)本地域名服务器向根域名服务器的查询是迭代查询
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器“你下一步应该向哪一个顶级域名服务器进行查询”。然后让本地域名服务器向这个顶级域名服务器进行后续的查询。同样,顶级域名服务器收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应该向哪一个权限域名服务器查询。最后,知道所要解析的域名的IP地址后,把这个结果返回给发起查询的主机
下面举例说明域名解析的过程,假设某客户想要获知域名为y.abc.com主机的IP地址,域名解析的过程(共使用8个UDP报文)如下:
- 客户机向本地域名服务