命令先行
- nslookup www.baidu.com
- dig www.baidu.com
- dig +trace www.baidu.com
命令背后的故事
域名解析
为什么要有域名?
假如没有域名,那么访问一个网址,比如百度,需要输入ip,我们知道输ip麻烦而且不好记。所以,才发明了域名。这就像你们家的门牌号和你的名字一样,有人找你,他要是说某某门牌号也许很多人不知道,但是一提你的名字很多人就知道了,以上是形象的说法。其实,我们还可以从tcp/ip模型去思考,tcp/ip只认识ip它不认识域名,所以在访问网络时,最终是将域名解析为ip的。浏览器发送请求之前,首先会通过DNS解析获取ip,然后再发送请求。
域名解析就是从域名地址转为ip地址的过程
域名解析就是从域名地址转为ip地址的过程。
第1步,客户端发送到local name server,如果local name server存有域名和对应的ip,则返回,否则发送请求到root name server
第2步,local name server发送请求到root name server,root name server返回顶级域名服务器地址(gTLD name server),
第4步,local name server 请求gTLD name server,gTLD name server返回对应的name server
第6步,local name server请求name server,name server返回ttl和ip,local name server缓存ip,然后返回给客户端。
注意,name server可能有多级。
查询域名对应的ip
查看域名对应的ip,无论在windows还是在linux下都是用nslookup ,拿 www.baidu.com 做测试。
第1行,Server,指的是默认dns服务器,也就是local DNS,就是局域网的DNS服务器;
第2行,Address,指的是localDNS对应的ip;
第4行,非权威解答:要查询的域名不受默认dns服务器管理,就是非权威解答。反之要查询的域名受默认域名dns服务器管理,就是权威解答。
第5行,指定别名,将 www.baidu.com 指定别名为 www.a.shifen.com
第5-8行,同一个域名先后解析了两次,最终解析结果是 61.135.169.125
域名解析过程
使用dig (只能用在linux下,可以下载windows版本)查看详细的域名解析过程。
在响应区:
第1行, www.baidu.com 解析到别名 www.a.shifen.com
第2、3行,将www.a.shifen.com 解析了两次,最终解析到61.135.169.121
如果添加 +trace 能看到详细信息
. 是root ns,根域名服务器
com. 是gTLD Server
baidu.com. ,a.shifen.com. ,也是gTLD Server,可以看见nameserver是多级的(正常会有后二个,我这里超时没显示出来)。