域名解析过程
以用户输入开源中国的域名www.oschina.net为例,DNS解析大约有以下几个步骤:
第一步:本地域名解析:
- 浏览器检查缓存中是否有www.oschina.net对应的IP地址。如果缓存中有,那么DNS域名解析过程就此结束。当然,缓存是第一次解析时保存的,而且会有有效时间限制。缓存时间不能过长,否则如果域名解析到IP有变化,会导致用户这段时间无法访问网站;时间过短则每次都要解析。
- 不止浏览器,操作系统同样有域名解析过程。所以如果第一步浏览器缓存没命中,会查操作系统的DNS解析缓存。操作系统的域名解析可以通过hosts文件来设置。如果在hosts文件中制定了某个域名对应的IP,那么浏览器会优先使用该IP。所以我们可以通过修改hosts文件来访问外国网站。当然,正因为这种本地DNS域名解析过程,黑客可以通过修改该文件来进行域名劫持。
第二步:本地区域名服务器解析:
如果第一步本地无法解析该域名,那么操作系统会把该域名发送给LDNS(当地的域名服务器)解析。比如通过校园网上网的话就是LDNS就是学校的域名服务器,在家的话就是当地上网服务提供商比如电信DNS服务器。LDNS同样会缓存一段时间内的域名解析结果,基本上大部分域名解析工作都可以在这里完成。
第三步:根域名服务器(Root Server)解析:
如果LDNS仍然无法解析,LDNS服务器会向Root Server服务器请求解析。Root Server服务器会返回给LDNS一个地址,该地址是所查询域的主域名服务器(gTLD Server)的地址,比如我们的例子,则返回.net主域名的服务器地址。
第四步:主域名服务器(gTLD Server)解析:
LDNS拿到gTLD Server服务器地址后,向该主域名服务器请求解析,gTLD Server服务器同样会返回给LDNS一个地址,该地址是所查询的域名注册的域名服务器。www.oschina.net当初是在哪个域名提供商的服务器上申请的域名,则这个域名解析任务由该域名提供商的服务器完成。这个服务器一般称为Name Server域名服务器。
第五步:注册时的域名服务器(Name Server)解析:
Name Server域名服务器查询域名/IP映射表,返回相应的IP地址和TTL给LDNS。LDNS返回解析结果给用户,用户根据TTL值缓存到本地,域名解析过程结束。
注意:windows系统中可以通过ipconfig查询LDNS服务器地址,可以通过ipconfig /flushdns刷新缓存。
域名解析方式
域名解析主要有两种方式:递归解析和反复解析。
- 递归解析要求名字服务器一次性完成全部名字到地址转换
- 反复解析指每次请求一个服务器,如果不通再请求别的服务器
常见的域名解析方法:
- A记录:A记录解析是最为常见的域名解析方式,用来指定域名对应的IP地址
- MX记录:相对用到较少的一种解析,MX记录是做邮箱解析使用的
- CNAME记录:别名解析,可以为一个域名设置一个或多个别名
- NS记录:指定该域名由哪个DNS服务器来进行解析
- TXT记录:为某个主机名或域名设置说明