一. 序言
在学习计算机网络的时候就知道到了DNS的解析过程,但是一直没有实践过。这次趁着配置狗爹上买的域名,通过跟踪域名的解析过程,算是DNS有了更深刻的了解。
二. nslookup
nslookup(name server lookup)是一个用于查询 Internet域名信息或诊断DNS 服务器问题的工具。在windows和Linux都可以通过nslookup输入域名得到相应的IP地址。相反的,我们也可以通过输入IP地址来获得主机名。

获取更详细的应用,请参照nslookup 命令用法。
三. dig
在Linux系统中,通过dig命令可以查询DNS的解析过程。
下面展示的是使用最简单的dig命令来查询DNS的结果,这对我们理解复杂一点的dig命令的结果很有帮助。

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> hihuaning.com
输出了DIG和Linux的版本号以及查询的域名
;; global options: +cmd
说明可以增加参数cmd。
;; Got answer:
表示下面信息是此次查询所得的结果,包含5个部分,分别是头部HEADER,查询部分QUESTION SECTION,回复部分ANSWER SECTION,权威机构部分AUTHORITY SECTION,附加部分ADDITIONAL SECTION。
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19643
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 4
opcode 操作码,QUERY,代表是查询操作
status 状态,NOERROR,代表没有错误
id 编号,7794,16bit数字,在dns协议中,通过编号匹配返回和查询。
flags 标志,如果出现就表示有标志,如果不出现就未设置标志:
qr query,查询标志,代表是查询操作
rd recursion desired, 代表希望进行递归(recursive)查询操作
ra recursive available 在返回中设置,代表查询的服务器支持递归(recursive)查询操作。
aa Authoritative Answer 权威回复,如果查询结果由管理域名的域名服务器而不是缓存服务器提供的,则称为权威回复。
QUERY 查询数,1代表1个查询,对应下面的QUESTION SECTION中的记录数
ANSWER 结果数,3代表有3项结果,对应下面ANSWER SECTION中的记录数
AUTHORITY 权威域名服务器记录数,4代表该域名有4个权威域名服务器,可供域名解析用。对应下面AUTHORITY SECTION
ADDITIONAL 格外记录数,4代表有4项格外记录。对应下面 ADDITIONAL SECTION。
;; QUESTION SECTION:
;hihuaning.com. IN A
查询部分,从左到右各部分意义:
1、要查询的域名,这里是hihuaning.com.,'.'代表根域名,com顶级域名,hihuaning二级域名
2、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
3、type,要查询的记录类型,A记录(Address),代表要查询ipv4地址。AAAA记录,代表要查询ipv6地址。
;; ANSWER SECTION:
hihuaning.com. 5 IN CNAME samkingz.github.io.
samkingz.github.io. 5 IN CNAME github.map.fastly.net.
github.map.fastly.net. 5 IN CNAME prod.github.map.fastlylb.net.
prod.github.map.fastlylb.net. 5 IN A 151.101.36.133
回应部分,回应有CNAME记录和A记录,说说CNAME记录从左到右各部分意义:
1、对应的域名,这里是hihuaning.com.,'.'代表根域名,com顶级域名,hihuaning二级域名
2、TTL,time ro live,缓存时间,单位秒。5,代表缓存域名服务器,可以在缓存中保存5秒该记录。
3、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
4、type,要查询的记录类型,CNAME记录,代表hihuaning.com有个别名samkingz.github.io
5、域名对应的CNAME别名
;; AUTHORITY SECTION:
fastlylb.net. 5 IN NS ns3.fastlylb.net.
fastlylb.net. 5 IN NS ns4.fastlylb.net.
fastlylb.net. 5 IN NS ns1.fastlylb.net.
fastlylb.net. 5 IN NS ns2.fastlylb.net.
权威域名部分,回应都是NS记录(Name Server),NS记录从左到右各部分意义:
1、对应的域名,这里是fastlylb.net.,'.'代表根域名,com顶级域名,fastlylb二级域名
2、TTL,time ro live,缓存时间,单位秒。5,代表缓存域名服务器,可以在缓存中保存5秒该记录。
3、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
4、type,要查询的记录类型,NS,Name Server,NS记录,代表该记录描述了域名对应的权威域名解析服务器
5、域名对应域名对应的权威域名解析服务器。由于ns3.fastlylb.net.是fastlylb.net.的子域名,而解析子域名,又需要主域名的信息,为了打破这个死循环,需要在下面的额外记录中提供该服务器的ip地址。
;; ADDITIONAL SECTION:
ns1.fastlylb.net. 5 IN A 23.235.32.32
ns2.fastlylb.net. 5 IN A 104.156.80.32
ns3.fastlylb.net. 5 IN A 23.235.36.32
ns4.fastlylb.net. 5 IN A 104.156.84.32
额外记录部分,这里都是A记录,A记录从左到右各部分意义:
1、对应的域名,这里是ns1.fastlylb.net.,'.'代表根域名,net顶级域名,fastlylb二级域名,ns1是三级域名。
2、TTL,time ro live,缓存时间,单位秒。5,代表缓存域名服务器可以在缓存中保存5秒该记录。
3、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
4、type,要查询的记录类型,A记录,代表要查询ipv4地址。AAAA记录,代表要查询ipv6地址。
5、域名对应的ip地址。
;; Query time: 4 msec
查询耗时
;; SERVER: 192.168.106.2#53(192.168.106.2)
查询使用的服务器地址和端口
;; WHEN: Wed Aug 17 09:39:23 2016
查询的时间
;; MSG SIZE rcvd: 289
回应的大小。收到(rcve, recieved)256字节。
使用 dig hihuaning.com +trace 命令,我们可以看到整个域名是如何发起和解析的,从根域名(.)到gTLD Server(.com),再到Name Server(hihuaning.com.)的整个过程都显示出来了。

获取更详细的应用,请参照 dig 命令用法。
网友评论