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