版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39469761/article/details/83473287
概念
DNS 是一种用于TCP/IP应用程序的__分布式数据库__,提供了主机名字和IP地址之间的转换和有关电子邮件的选路信息。
DNS基础
层次结构, 每个节点有一个至多63个字符长的标识, 不区分大小写。域名书中的每个节点都有一个唯一的域名,但不同节点可使用相同的标识。
以‘.’结尾的域名成为绝对域名, sun.tuc.noao.edu.。
-
顶级域名:
- arpa
- 7个普通三字符长的普通域, 或是组织域
- 国家码, 国家域或地理域
-
DNS中域名的授权:网络信息中心NIC负责分配顶级域和委派其他指定地区域的授权机构,
-
DNS使用超高速缓存.
DNS报文格式
- DNS报文由12字节长的首部和4个长度可变字段组成。
- 标识字段:客户程序设置,并由服务器返回结果。客户程序用来确定响应和查询是否匹配。
QR | opcode | AA | TC | RD | RA | (zero) | rcode |
---|---|---|---|---|---|---|---|
1 | 4 | 1 | 1 | 1 | 1 | 3 | 4 |
0查询报文, 1响应报文 | 0标准查询, 为1(反向查询), 2(服务器状态请求) | 授权回答 | 可截断 | 期望递归 | 可用递归 | 必须为0 | 返回码, 0没差错, 3名字差错 |
查询问题部分
- 存储域名的方式:
|计数|域|计数|域|…|
如gemini.tuc.noao.edu:
6gemini3tuc4noao3edu0
因为标识符的最大长度仅为 6 3,所以计数字节的值为0到63的数。
- 查询类型有:
常见类型时A类型,期望获得查询名的IP地址。
PTR查询是请求获得一个IP地址对应的域名。
- 查询类通常是1, 互联网地址。
DNS响应报文中的资源记录部分
- 数据格式
DNS举例:
指针查询
使用tcpdump 查看指针查询信息
$ host 140.252.13.34
34.13.252.140.in-addr.arpa domain name pointer pipen14.tuc.noao.edu.
10:38:59.999340 IP xxxxx.60763 > google-public-dns-a.google.com.domain: 22773+ PTR? 34.13.252.140.in-addr.arpa. (44)
10:39:00.003093 IP google-public-dns-a.google.com.domain > xxxxx.60763: 22773 1/0/0 PTR pipen14.tuc.noao.edu. (78)
- 从以上信息可以看出,指针查询会对查询数据进行反转,在机上in-addr.arpa,这是自动的。
PTR?
表示查询PTR
例子:
- 普通的
host baidu.com
10:46:42.346766 IP xxxx.62785 > google-public-dns-a.google.com.domain: 41812+ A? baidu.com. (27)
10:46:42.350305 IP google-public-dns-a.google.com.domain > xxxxx.62785: 41812 2/0/0 A 123.125.115.110, A 220.181.57.216 (59)
10:46:42.350643 IP xxxxx.62363 > google-public-dns-a.google.com.domain: 30592+ AAAA? baidu.com. (27)
10:46:42.393192 IP google-public-dns-a.google.com.domain > xxxx.62363: 30592 0/1/0 (70)
10:46:42.393847 IP xxxx.65123 > google-public-dns-a.google.com.domain: 46136+ MX? baidu.com. (27)
10:46:42.409846 IP google-public-dns-a.google.com.domain > xxxxx.65123: 46136 5/0/0 MX jpmx.baidu.com. 20, MX mx50.baidu.com. 20, MX mx.maillb.baidu.com. 10, MX mx.n.shifen.com. 15, MX mx1.baidu.com. 20 (143)
- rlogin: