DNS域名系统

DNS是用于TCP/IP应用程序的分布式数据库,同主机名字和IP地址之间的转换及有关电子邮件的选路信息。

对DNS的访问时通过地址解析器来完成的,在unix主机中,解析器主要通过两个库函数gethostbyname和gethostbyaddr来访问的。

 1 #include <netdb.h>

 2 

 3 struct hostent *gethostbyname(const char *hostname);

 4           返回:非空指针——成功,空指针——出错,同时设置h_errno

 5  

 6 struct hostent *gethostbyaddr(const char *addr, socklen_t len, int family);

 7           返回:非空指针——成功,空指针——出错,同时设置h_errno

 8 

 9 h_errno可以通过解析器提供的hstrerror的函数,返回相应错误说明:

10 hstrerror(h_errno)

当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?注:本机跟本地dns还没有缓存。
     a.用户输入网址到浏览器
     b.浏览器发出DNS请求信息
     c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步
     d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果,
     e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果
     f.返回IP结果给浏览器
     g.浏览器根据IP信息,获取页面

 DNS原理及其解析过程【精彩剖析】

http://369369.blog.51cto.com/319630/812889

 

 

你可能感兴趣的:(dns)