zoukankan      html  css  js  c++  java
  • 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报文查询的时候会设置递归类型





  • 相关阅读:
    多线程2.md
    Python-多线程.md
    Python-Log-note.md
    记账本开发记录——第四天(2020.1.21)
    记账本开发记录——第三天(2020.1.20)
    记账本开发记录——第二天(2020.1.19)
    《构建之法——现代软件工程》读书笔记(一)
    记账本开发记录——第一天(2020.1.18)
    JAVA分级测试——选课系统(补发)
    转专业后补修C语言的一些体会(4)
  • 原文地址:https://www.cnblogs.com/SmileLion/p/5863539.html
Copyright © 2011-2022 走看看