DNS以及抓包观察

1:DNS的层次基础

如果是一个绝对域名一般要有最后的根‘.’   顶级域名有三个部分,第一个是arpa,其余的是一些美国部们使用的,一共七个三字符的标志,现在也有别的地方使用,其他的是按照地方的

国家在分的顶级域之后,一般将第二级域改陈和顶级域的七个三字符相同的使用

顶级域的从左面的第一个用于IP地址得到域名

2:DNS报文格式

标识(用来请求DNS报文和应答DNS报文返回的标志是否匹配,一般是个数字,2字节)|标志(QR:0表示查询报文,1表示响应报文|opcode:0标准查询,1反向查询,2服务器状态请求|AA:表示“授权回答”,该名字服务器是授权于该域的|TC:表示“可截断的”,使用UDP时,它表示当应答的总长度超过512字节时, 只返回前512个字节|RD:表示“期望递归”。这个表示告诉名字服务器必须处理这个查询,也称为一个递归查询|RA:表示“可用递归”。如果名字服务器支持递归查询,则在相应中将该比特设置为1|zero:3bit为0|rcode:返回码字段。0为没有差错,3名字差错   ,2个字节|问题数(有几个问题,一般是1,占用两个字节)|资源记录数(一般针对域名请求IP地址,或者指针查询,两个字节)|授权资源记录树(有几台服务器可以解答该域名)|额外资源记录数(在授权资源记录数的时候出现的时候出现)|查询问题(看选下面的查询问题格式)|回答(参照下面)|授权(参照下面)|额外(参照下面)

问题格式

查询名(格式:6gemini3tuc4noao3edu0,不定长度,不需要填充为一个整数)|查询类型(常用的查询类型有CNAME:规范名称|A IP地址|PTR指针记录)|查询类(基本是1,指互联网地址)

回答报文格式RR格式

域名(不定长度,和上面的查询名的格式是一直的,因为域名在一个DNS一般会有多个重复的,所以会用指针来代替,如果高两位为11,则表示这是一个指针,剩下的14个字节,表示这个域名的位置,以DNS报文开始)|类型(和上面的一致)|类(和上面一致)|生存时间(一般为2天)|资源数据长度(一般是4,代表IP数据)|(资源数据

3:DNS报文查询

    域名查询 利用host -i A www.baidu.com

注意要是是主机名字,则首先应该与域名服务器取得联系,得到对应的IP地址

代码解释,-i表示抓取指定接口的数据,n不显示主机码 t不显示时间戳,port domain指定的是域名服务的数据包 


IP 172.30.94.138.17956 > 112.4.0.55.53: 40192+ A? www.baidu.com. (31)

IP 112.4.0.55.53 > 172.30.94.138.17956: 40192 3/0/0 CNAME www.a.shifen.com., A 111.13.100.92, A 111.13.100.91 (90)

IP 221.131.143.69.53 > 172.30.94.138.17956: 40192 3/0/0 CNAME www.a.shifen.com., A 111.13.100.91, A 111.13.100.92 (90)

IP 172.30.94.138.17956 > 112.4.0.55.53: 40192+ A? www.baidu.com. (31)

本条数据解析

1:17956代表的是客户端口号,53代表的是域名服务器的端口号,在这里必须要让tcpdump显示IP地址,不能显示域名,否则会产生错误

2:40192代表的是标志字段,而+表示RD字段,期望递归为1,在默认方式中,名字解析器要求地柜查询方式

3:A?表示查询类型是A,我们需要的是一个IP地址,”?“表示的是查询,代查名字是baidu.com.后面带一个.是表示一个绝对的名字段

4:后面的数字31是指,在UDP数据报的用户数据位31字节,包裹DNS请求报文的头12字节,15字节的查询名字,以及用于查询类型和查询类的4个字节,在DNS中的数据无需填充,因为在UDP中可以进行填充


IP 112.4.0.55.53 > 172.30.94.138.17956: 40192 3/0/0 CNAME www.a.shifen.com., A 111.13.100.92, A 111.13.100.91 (90)


第二个数据包中,“3/0/0”表示该报文中包含3个应答资源记录,“CNAME www.a.shifen.com.,A 119.75.218.77,A 119.75.217.56”则表示3个应答资源记录的内容。其中CNAME表示紧随其后的记录是机器的别名,A表示紧随其后的记录是IP地址,授权RR和附加信息RR都是0


为什么会有三个地址,利用host命令既可以查看此baidu具有三个接口,其中一个是机器别名

指针查询

可以利用host来查看具体IP对应的域名 这里查看出是一个指针查询,是一个域名

利用tcpdump查看有

看起来主机发送两份DNS指针查询报文

20917代表标识符,‘+’表示递归查询,查询类型是PTR,‘?’表示一个查询 后面表示一个查询名

查询结果,第三条,表示的是应答付是20917,1/0/0   1代表一个资源应答记录,后面的
PTR表示的是指针记录,后面表示的域名

4:高速缓存

‘*’表示在该域中回答是授权的AA标志

当开启了名字服务器的主机,则主机查找域名的时候首先在本机的缓存上面的寻找,如果未找到,并且没有一个指定域名服务器,则应该与根服务器首先进行通讯(在这里不设置递归标志,‘-’表示未设置递归标志,递归标志只是在授权的名字服务器中设置的),找到可以获得域名对应IP的名字服务器,

授权的名字服务器:既可以查找到指定域名的IP地址,在想这类服务器发送DNS报文查询的时候会设置递归类型





posted @ 2016-09-12 09:05  SmileLion_LY  阅读(7610)  评论(0编辑  收藏  举报