背景
使用命令nslookup
用命令行模拟本地DNS服务器后面的解析过程。
1、假设本地DNS服务器里面没有任何根域名服务器的域名和地址
先来设置查询的类型为ns
,也就是名称服务器name server,输入.
来查询根服务器的域名。DNS一般都是用UDP来传输的。
> set type=ns
> .
Non-authoritative(非权威)
一般来说是缓存的结果,而不是控管的相应服务器返回的结果。
2、根据根域名获取对应的ip地址
设置type=a,也就是ipv4类型。随便选一个根服务器,得到对应的ip地址。
> set type=a
> b.root-servers.net.
3、跟根域名服务器对话
因为根服务器知道com域名服务器的地址,所以直接跟选定的域名服务器对话。
> server 199.9.14.201
> set type=ns
> com.
其中的gtld
表示 generic top level domain
,通用顶级域名
4、随机挑选一个com
域名进行通话
向顶级域名服务器咨询bilibili.com域名服务器的地址
> server 192.33.14.30
> set type=ns
> bilibili.com.
5、随机挑选一个bilibili.com
的域名进行对话
向权威域名服务器咨询www.bilibili.com.
域名服务器的ipv4地址
> server 36.155.149.211
> set type=a
> www.bilibili.com.
其中 canonical name
也就是CNAME
常见用于域名的跳转,此处是表示 www.bilibili.com
会跳转到a.w.bilicdn1.com.
,a开头的域名其实是个CDN
其中包含CDN的IP地址,也就是我们需要的东西。本地DNS服务器得到这个地址后会返回给解析器。
DNS域名解析过程