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

 

 

posted @ 2012-07-04 15:55  衡宇  阅读(211)  评论(0编辑  收藏  举报