DNS域名解析包括两种查询方式,一种是递归查询
,另一种是迭代查询
。客户端在查询IP地址时,向本地域名服务器进行递归查询;若本地域名服务器的数据库有相应数据,则直接返回相应数据;若无相应数据,则本地域名服务器从向根域名服务器开始,进行迭代查询,直至获得最终结果。
递归查询
DNS服务器若不能直接响应解析请求,它将继续请求其它的DNS服务器,直到获得最终的查询结果。查询结果可以是域名主机的IP地址,或者是域名无法解析。无论哪种结果,DNS服务器都会将结果返回给客户端。
举个栗子
当本地域名服务器接收了客户端的查询请求后,本地域名服务器将以客户端的身份向其它DNS服务器查询结果,最后本地域名服务器将最终结果反馈给客户端。客户端只需要等待最终结果,不需要理会查询过程和中间结果。
迭代查询
如果DNS服务器查找不到相应记录,则会向客户端返回一个可能知道结果的域名服务器IP地址,由客户端继续向该可能知道结果的域名服务器发送查询请求,该域名服务器可能会返回给客户端另一个域名服务器IP地址,或返回最终查询结果。
举个栗子
本地域名服务器向根域名服务器发送查询请求,根域名服务器并没有相应记录,只向本地服务器返回一个顶级域名服务器IP地址,引导本地域名服务器向该顶级域名服务器进行查询······直至最后,本地域名服务器获得最终结果。
DNS传输层协议
DNS域名服务器使用53号端口,且同时支持UDP和TCP协议。DNS在进行区域传输(即主服务器与用作冗余备份的从服务器进行数据同步)的时候,因为传送的数据量大,所以使用TCP协议;DNS在进行域名解析的时候,因为数据传送量小,所以使用UDP协议,不需要经过TCP的三次握手,响应速度更快,服务器负载更低。
参考资料: