07. DNS 域名解析 ❀ 数据包分析工具 Wireshark
来源:互联网 发布:浏览器无法连接网络 编辑:程序博客网 时间:2024/06/16 00:09
【简介】DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
捕获 DNS 数据包
当客户端尝试访问互联网的某个网站时,访问请求会通过一台DNS服务器发送出去。这台DNS服务器会查找自己包含的资源记录,找到对应的IP地址并返回。
① 电脑上网的时候网卡都要设置DNS服务器IP地址,通过DNS服务器来查询网站的IP地址。DNS服务器可以是内网自建,也可以是外网公用。电信、移动等宽带都会根据不同地域,指定不同的DNS服务器IP地址。例如深圳电信常用的DNS地址就是202.96.134.133。当然也可以使用114.114.114.114或8.8.8.8公用DNS服务器地址,这样不同运营商的宽带都可以正常获取到IP地址。
② 启动 Wireshark,选择上网的网卡接口,点击捕获图标开始捕获。
③ 打开浏览器,这里我们访问美国飞塔的网站。
④ 在分析之前我们关闭捕获,以免抓到的包越来越多。
⑤ 在显示过滤器中输入过滤条件,得到我们要分析的DNS包。
DNS 数据包分析
在想象中,我们向DNS发送一个查询请求,然后回传一个IP地址,DNS的工作就算是完了。
① 实际上发送和回传的可并不只一次,客户端每发送一条查询消息,都会得到DNS服务器的响应。我们可以看到有个十六进制的号,使得发送和响应一一对应。
② 我们首先来查看0x54d1发送包,和其它包一样,最前面是14个字节为以太网帧头,然后是20字节的IP帧头,这里就不再描述了, 这里看到的是8个字节的用户数据报文协议(指定了源和目标端口),30字节的域名解析查询。
Transaction ID(交易口):这个数值的作用是将一个域名查询消息和对应的响应消息对应起来。
query/response(查询/响应):每个DNS数据包都会被标记为查询消息或者响应消息,具体哪一类取决于消息中包含的内容。
Flags(标记):每个查询和响应消息都有不同的标记位置位。
Response(响应):标识该消息为查询消息还是响应消息。
Opcode(操作码):这个标记决定了查询消息的类型。Opcode范围是0~15。
Opcode 值描 述0标准查询1逆向查询2服务器状态请求3未分配4通告5更新6~15未分配Truncated(截断):这个标记决定了如果数据包过大(大于512字节)时,是否对数据包进行截断。
Recursion desired(期望递归):如果要所查的记录不存在,那么客户端发送的消息就会从一台DNS服务器到另一台DNS服务器这样执行一个递归的搜索流程。
Type(类型):这个字段显示的是查询的类型。
类 型描 述A主机地址NS域名服务器MX邮件交互SOA起始授权机构PTR指针记录AAAAIPv6 地址AXFR全量传输IXFR增量传输③ 再看0x54d1响应包,8个字节的用户数据报文协议,46字节的域名解析响应,比查询包多16字节,也就是查询反馈内容。
Reply code(应答码):这个字段的值用来表示是否出现了错误,以及错误的类型。
Questions(问题):表示数据包中包含的查询数量。
Answers RRs(回答):表示对查询消息所作响应的数量。
Authority RRs(授权):表示响应消息中授权资源记录的数量。
Additional RRs(额外):表示响应消息中额外资源记录的数量。
Answer(回答):对查询消息所作的响应。响应消息也可以有很多个。
多个 DNS 查询
我们看到,在浏览器里输入网站地址后,DNS出现多对查询与响应消息,它们之间有什么不同呢?
① 由于响应消息往往包含了查询消息,这里我们就直接查看0xa105的响应包。前面0x43d1查询的是 fortinet.com ,而这个包查询的是www.fortinet.com,并且得到了三个响应。除了两个类型为A(主机地址)外,还有一个类型为CNAME(Canonical Name 规范名称),通常称别名指向,它可以将你注册的不同域名统统转到一个主域名上去!与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地址!
② 0xa105的响应包里有三个响应,两个直接得到了IP地址,另一个得到的是CNAME,我们在0x52c7里看到,再次查询了这个CNAME地址,得到两个与0xa105包相同的IP地址。
③ 0x46de的响应包可以看到,查询类询为AAAA,也就是IPv6地址,这里得到了一个IPv6地址。
④ 0xe14b的响应包可以看到,通过查询得到的CNAME,再次查询并得到两个IPv6地址。
⑤ 经过比较,0x71c1与我们最早分析的0x54d1查询和响应的信息完全一致。看上去象是查询了两次fortinet.com。
总结:
查询 fortinet.com 二次
查询 www.fortinet.com 一次
查询 fortinet.com IPv6 一次
查询 fortinet.com CNAME 一次
查询 fortinet.com CNAME IPv6 一次
DNS 查询报错
很多情况下输入的网址不对,查询不到IP,看看会怎么样。
① 这里我们将fortinet.com 的网址多加一个t,打不开网站。
② 查看抓取到的DNS响应包,可以看到响应编码是3,也就是域名错误。如果网卡指定了两个DNS服务器,在第一个DNS服务器查找不到的情况下,会自动到第二个DNS服务器查询。
老梅子 QQ:57389522
- 07. DNS 域名解析 ❀ 数据包分析工具 Wireshark
- 05. Ping 包分析 ❀ 数据包分析工具 Wireshark
- 01. 下载与安装 ❀ 数据包分析工具 Wireshark
- 02. 抓包及保存 ❀ 数据包分析工具 Wireshark
- 03. 抓包过滤器 ❀ 数据包分析工具 Wireshark
- 04. 显示过滤器 ❀ 数据包分析工具 Wireshark
- 06. TCP 通信 ❀ 数据包分析工具 Wireshark
- 08. FTP 文件传输 ❀ 数据包分析工具 Wireshark
- 09. HTTP 超文本传输 ❀ 数据包分析工具 Wireshark
- dns域名解析过程分析
- 数据包抓取工具 wireshark
- wireshark数据包分析实战
- wireshark数据包分析
- Wireshark数据包分析实战
- wireshark分析UDP数据包
- wireshark分析TCP数据包
- Wireshark分析数据包
- C#DNS域名解析工具(DnsLookup)
- Android中全屏或者取消标题栏
- FTP的搭建与虚拟目录作用<之简单讲解>
- iOS XCTest UiTesting: Apple Mach-o linker error use -v to see invocation
- 对版本更新的管理
- Spring Web MVC简介 、基于XML配置的MVC应用 、基于注解配置的MVC应用
- 07. DNS 域名解析 ❀ 数据包分析工具 Wireshark
- crond和crontab调研
- 通过request_irq 申请的irq,默认是可以运行在所有online的cpu上
- Mysql存储过程基础
- OpenJudge-2152:Pots
- 几种任务调度的 Java 实现方法与比较
- error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- FFmpeg源码调试:解析H.264 SPS(Sequence Parameter Set)中帧的宽高
- 高级Android开发工程师进阶路线