DNS是什么
DNS,可以看作Domain Name Service,Domain Name Server, Domain Name System的缩写,网上也没有统一的解释,说明是哪一种的缩写,我们暂且先不管它
早期互联网的时代,我们使用IP地址访问网站
由于IPV4(IPv6)地址的难以记忆,人们用了一种转换的思想:使用人类容易记忆的名字来代替IP地址,然后通过某种服务把域名转化成IP
,这样,就可以实现精确的定位
而这个名字就是域名,例如耳熟能详的百度首页www.baidu.com
,我们学校的论坛www.xiyoubbs.com
这种服务就是域名解析服务,我们用来提供服务的服务器就被称作域名解析服务器
事实上,我们通常把域名服务,域名服务器都可以称作DNS,理解了域名解析服务的工作原理,就很容易明白我们交流,或者其他文献中简称DNS时,它所代表的真实含义
DNS的两种查询方式
分别是递归查询和迭代查询
所谓递归查询:如果目标DNS服务器无法解析某个主机名,则它将向其他DNS服务器继续查询,如此递归,知道获得结果并把结果返回给客户
所谓迭代查询:如果目标DNS服务器无法解析某个主机名,则它将已知道的其他DNS服务器的IP地址返回给客户端,以供客户端参考
一般默认都是递归查询
Linux下的一些用于DNS查询的命令
-
ping命令,不仅可以判断网络是否畅通,还可以用域名ping外网时,查看域名对应的主机IP
$ ping www.baidu.com PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data. 64 bytes from 61.135.169.125: icmp_seq=1 ttl=53 time=19.7 ms 64 bytes from 61.135.169.125: icmp_seq=2 ttl=53 time=21.1 ms 64 bytes from 61.135.169.125: icmp_seq=3 ttl=53 time=20.0 ms ...
-
host命令,一个DNS查询工具
$ host -t A www.baidu.com www.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 61.135.169.121 www.a.shifen.com has address 61.135.169.125
使用tcpdump观察DNS通信过程
tcpdump是Linux下的一个抓包工具
(Linux下各种服务所对应的端口,可以在/etc/services
看到)
在一个终端A输入一下命令:
$ sudo tcpdump -i wlan0 -nt port domain
然后开启另一个终端B,输入一下命令
$ host -t -A www.baidu.com
可以在终端A下看到:
IP 172.24.243.3.21645 > 172.24.243.1.53: 18340+ A? www.baidu.com. (31)
IP 172.24.243.1.53 > 172.24.243.3.21645: 18340 3/0/0 CNAME www.a.shifen.com., A 115.239.211.110, A 115.239.210.27 (138)
cpdump以“IP地址.端口号”的形式来描述通信的某一端;以“>”表示数据传输的方向,“>”前面是源端,后面是目的端。
目标端口53是DNS服务使用的端口
第一个数据包是我的机器(172.24.243.3)发送的DNS查询报文
第二个数据包是服务器反馈的DNS应答报文
第一个数据包中,数值18340是DNS查询报文的标识值,因此该值也出现在DNS应答报文中。
“+”表示启用递归查询标志。
“A”表示使用A类型的查询方式。
“www.baidu.com”则是DNS查询问题中的查询名。
括号中的数值31是DNS查询报文的长度(以字节为单位)。
第二个数据包中,“3/0/0”表示该报文中包含3个应答资源记录、0个授权资源记录和0个额外信息记录。
“CNAME www.a.shifen.com., A 115.239.211.110, A 115.239.210.27 (138)”则表示3个应答资源记录的内容。
其中CNAME表示紧随其后的记录是机器的别名,A表示紧随其后的记录是IP地址。
该应答报文的长度为138字节。
修改DNS
我记得以前碰到过这样一见很诡异的事情:qq可以登录聊天,邮件客户端也可以正常工作,就唯独浏览器打不开网站页面
当时遇到的时候,感觉可诡异,后来才知道,原来是DNS挂了
我们通常上网都是直接通过网络运营商(电信,网通等)提供的网络,所以DNS也是自动获取,一定运行上的域名服务器出现了问题,那么我们也就不能正常访问网站
此时,我们就得修改DNS,著名的DNS有谷歌的:8.8.8.8
和 8.8.4.4
还有114DNS:114.114.114.114
和114.114.115.115
这两个算是比较好记的
还有其他的请参考公共DNS服务器
- 上一篇: 编译和连接
- 下一篇: Linux下MASM汇编环境搭建