前言
DNS( Name )域名系统,因为访问一台服务器只能通过IP来访问,所以需要先将域名转换成IP地址。
解析流程
以浏览器访问网址为例,
检查浏览器缓存中是否存在该域名对应的IP,如果存在则解析结束,否则继续。
检查操作系统的hosts文件,以系统为例,一般在 C:\\\\etc 下谷歌浏览器清除DNS缓存的方法,如果有则结束,否则继续。
检查操作系统的dns缓存,如果存在则结束,否则继续,以系统为例
查询dns缓存 ipconfig /displaydns
导出dns缓存到文件 ipconfig /displaydns > D:/testjar/dns.txt
清除dns缓存 ipconfig /flushdns
以博客园域名 为例,查询出的记录格式为
记录名称. . . . . . . : www.cnblogs.com
记录类型. . . . . . . : 1
生存时间. . . . . . . : 229
数据长度. . . . . . . : 4
部分. . . . . . . . . : 答案
A (主机)记录 . . . . : 101.37.113.127
到本地域名服务器去查询,有则结束,否则继续。以系统为例
查询域名服务器地址 ipconfig /all
本地域名服务器去查询根域名服务器(全球只有13台),会返回下级服务器(顶级域名服务器)的地址
本地域名服务器去查询顶级域名服务器(在这里就是com服务器),同样返回二级域名服务器的地址
本地域名服务器去查询二级域名服务器(服务器),同样返回三级域名服务器的
本地域名服务器去查询三级域名服务器(服务器),此时已经是最后一级,如果有则解析结束,且本地域名服务器缓存中加入此对应关系,方便下次查询,
同时返回给浏览器,没有找到则浏览器网页报错。
上面的1,2,3,4步可以叫做递归查询,5,6,7,8步可以叫做迭代查询。
浏览器查看和清除dns缓存清除dns缓存
以浏览器为例,://-urls/可以看到所有配置页面
://net-/#dns可以清除dns
查看dns缓存
://net-/#页面可以看到
点击://net-/可以看到
点击 Start to Disk 按钮,将当前状态保存到文件中
保存之后再点击 Stop 按钮
再打开页面(要FQ)
导入之前保存的文件谷歌浏览器清除DNS缓存的方法,就可以查看dns信息了
java中进行DNS解析
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException {
InetAddress[] inetAddresses = InetAddress.getAllByName("www.baidu.com");
for (InetAddress inetAddress : inetAddresses) {
System.out.println(inetAddress.getHostAddress());
}
//36.152.44.96
//36.152.44.95
}
}
参考
浏览器之DNS解析过程详解
浏览器的DNS缓存查看和清除
如何查看浏览器的DNS缓存
Java实现通过IP获取域名,通过域名获取IP
评论留言