有一些技术,人们即便每天都在使用,也未必能意识到它的存在。

DNS就是这样一种技术。当我在浏览器上输入一个域名时,比如www.baidu.com,其实不是根据该域名直接找到服务器,而是先用DNS解析成IP地址再通过IP地址找到服务器。有时候甚至不用输入任何域名,也会在不知不觉间用到DNS。比如打开公司电脑,用域账号登录操作系统,就是依靠DNS找到Domain Controller来验证身份。毫不夸张地说,如果有一天突然失去DNS,世界会立即陷入混乱。


wireshark dns命令 wireshark dns解析_IP

wireshark dns命令 wireshark dns解析_DNS_02

 

AAddress)记录,指的是从域名解析到IP地址。如果你经常处理DNS包,还会看到不少其他类型的记录。

PTR记录:与A记录的功能相反,它能从IP地址解析到域名。

SRV记录:Windows的域管理员要特别关心SRV记录,因为它指向域里的资源。

CNAME记录:又称为Alias记录,就是别名的意思。比如我的服务器10.32.106.73同时提供网页(www)、邮件(mail)和地图(map)服务。

 

递归查询:老板给我发个短信:“附近哪个川菜馆最正宗?”我屁颠屁颠地去问我的吃货朋友二胖,二胖又问了他的女友川妹子;川妹子把答案告诉二胖,二胖再告诉我,最后我装作很专业的样子回复了老板。这个过程对老板来说就是递归查询。

迭代查询:老板说:“推荐一下附近的洗脚店呗?”我立即严辞拒绝:“这个我不知道,不过你可以问问公关部的张总。”老板去找到张总,又被指引到销售部的小李,最终从小李那里问到了。这个过程就是迭代查询,因为是老板自己一步一步地查到答案。

 

wireshark dns命令 wireshark dns解析_安全_03

wireshark dns命令 wireshark dns解析_wireshark dns命令_04

查询两次DNS记录,发现两次的结果一样,都是顺序是不一样的,这就是DNS的循环工作(round-robin)模式。这个特性可以广泛应用于负载均衡。比如某个网站有10台Web服务器,管理员就可以在DNS里创建10个同名记录指向这些服务器的IP。由于不同客户端查到的结果顺序不同,而且一般会选用结果中的第一个IP,所以大量客户端就会被均衡地分配到10台Web服务器上。随着分布式系统的流行,这个特性的应用场景将会越来越多。