利用WireShark进行DNS协议分析
一.准备工作
系统是Windows 8.1Pro
分析工具是WireShark1.10.8 Stable Version
使用系统Ping命令发送ICMP报文.
二.开始工作
打开CMD.exe键入:
ping www.oschina.net
将自动进行域名解析,默认发送4个ICMP报文.
启动Wireshark,选择一个有效网卡,启动抓包.
在控制台回车执行完毕后停止监控.
三.分析阶段
截获的所有报文如下:

总得来看有两个DNS包(一次域名解析),和8个ICMP包(四次ping)
下面开始分析DNS的工作过程:
打开第一个包:

可以发现DNS为应用层协议,下层传输层采用UDP,再下层网络层是IP协议,然后是数据链路层的以太网帧.
需要关注的是应用层的实现也即DNS协议本身.
在此之前,可以从下层获得一些必要信息:
UDP(User Datagram Protocol)报文中:DNS的目的端口(Dst Port)是53
IPv4(Internet Protocol Version 4)报文中目的IP是192.168.1.1(局域网路由器)
由于IP报文在网络层进行路由选择,他会依次送给路由器而不是直接送给DNS服务器,这一点也十分容易理解,
第一个包是请求包,不可能直接包含DNS服务器地址.
展开DNS数据:

第一个是Transaction ID为标识字段,2字节,用于辨别DNS应答报文是哪个请求报文的响应.
第二个是Flags标志字段,2字节,每一位的含义不同,具体可以参考上面那个图,也可以看下面这个图:

QR: 查询/响应,1为响应,0为查询
Opcode: 查询或响应类型,这里0表示标准,1表示反向,2表示服务器状态请求
AA: 授权回答,在响应报文中有效,待会儿再看
TC: 截断,1表示超过512字节并已被截断,0表示没有发生截断
RD: 是否希望得到递归回答
RA: 响应报文中为1表示得到递归响应
zero: 全0保留字段
rcode: 返回码,在响应报文中,各取值的含义:
0 - 无差错
1 - 格式错误
2 - 域名服务器出现错误
3 - 域参照问题
4 - 查询类型不支持
5 - 被禁止
6 ~ 15 保留
紧接着标志位的是
Quetions(问题数),2字节,通常为1
Answer RRs(资源记录数),Authority RRs(授权资源记录数),Additional RRs(额外资源记录数)通常为0
字段Queries为查询或者响应的正文部分,分为Name Type Class
Name(查询名称):这里是ping后的参数,不定长度以0结束
Type(查询类型):2字节,这里是主机A记录.其各个取值的含义如下:
值 助记符 说明
1 A IPv4地址。
2 NS 名字服务器。
5 CNAME 规范名称。定义主机的正式名字的别名。
6 SOA 开始授权。标记一个区的开始。
11 WKS 熟知服务。定义主机提供的网络服务。
12 PTR 指针。把IP地址转化为域名。
13 HINFO 主机信息。给出主机使用的硬件和操作系统的表述。
15 MX 邮件交换。把邮件改变路由送到邮件服务器。
28 AAAA IPv6地址。
252 AXFR 传送整个区的请求。
255 ANY 对所有记录的请求。
Class(类):2字节,IN表示Internet数据,通常为1
下面是截获的第二个DNS包:

可以看到和第一个请求包相比,响应包多出了一个Answers字段,同时Flags字段每一位都有定义.
关注一下Flags中Answer RRs 为4 说明对应的Answers字段中将会出现4项解析结果.
Answers字段可以看成一个List,集合中每项为一个资源记录,除了上面提到过的Name,Type,Class之外,还有Time to
Live,Data length,Addr.
Time to Live(生存时间TTL):表示该资源记录的生命周期,从取出记录到抹掉记录缓存的时间,以秒为单位.这里是0x00 00 00 fd 合计253s.
Data length(资源数据长度):以字节为单位,这里的4表示IP地址的长度为4字节.也就是下面Addr字段的长度.
Addr(资源数据): 返回的IP地址,就是我们想要的结果.
可以发现有4条资源记录,4个不同的IP地址,说明域名 www.oschina.net 对应有4个IP地址,分别是:
112.124.5.74
219.136.249.194
61.145.122.155
121.9.213.124
CMD中显示的是第一条IP地址.我试了下直接访问上面各个地址的80端口(http),
第一个和第二个显示403 Forbidden
第三个和第四个显示404 Not Found
还有每个地址哦Server都不一样oscali,oscdb,liubc,ep2,第一个像阿里云服务器,第二个看起来像数据库的服务器,其他就不知道了...
Web服务器貌似是Tengine,
不知道为什么通过IP地址无法直接访问web站点,以后感兴趣再研究下哈哈
利用WireShark进行DNS协议分析的更多相关文章
- PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
Python黑帽编程1.5 使用Wireshark练习网络协议分析 1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...
- 利用Wireshark抓取并分析OpenFlow协议报文
OpenFlow 交换机与控制器交互步骤 1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网 ...
- 使用Wireshark进行DNS协议解析
- 域名及解析过程 域名由一系列 - DNS协议报文格式 一次DNS过程包含一对请求报文和响应报文.请求和响应报文有统一的报文格式如下图: - DNS报文例子 一次DNS请求的过程: 包括请求和响应, ...
- 哈工大 计算机网络 实验四 利用 Wireshark 进行协议分析
计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 利用 Wireshark 进行协议分析 实验目的: 本次实验的主要目的. 熟悉并掌握Wireshark的基本操作,了解网络协议实 ...
- 从零开始学安全(四十二)●利用Wireshark分析ARP协议数据包
wireshark:是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前 ...
- FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接
一.为什么写这个 昨天遇到个ftp相关的问题,关于ftp匿名访问的.花费了大量的脑细胞后,终于搞定了服务端的配置,现在客户端可以像下图一样,直接在浏览器输入url,即可直接访问. 期间不会弹出输入用户 ...
- Wireshark数据抓包分析——网络协议篇
Wireshark数据抓包分析--网络协议篇 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...
- wireshark利用正则表达式过滤http协议中的jpg png zip等无用的数据包
主要工具:小度随身wifi热点 + wireshark抓包工具.(强烈不建议使用360的产品,非常垃圾,而且干扰代理#墙IP,搞得你不能***) 利用wireshark这个强大的协议分析利器.去分析某 ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之DNS协议
摘要: 本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析. 一.概述 1.1 DNS ...
随机推荐
- Matlab中的向量
1. 向量的创建 1)直接输入: 行向量:a=[1,2,3,4,5] 列向量:a=[1;2;3;4;5] 2)用“:”生成向量 a=J:K 生成的行向量是a=[J,J+1,…, ...
- RHCE实验环境|rhel7-lab
教学环境说明: 1.yum源地址是:http://content.example.com 2.网卡都用同一个,且自定义网卡! 3.网络配置参考 classroom IP 172.25.254.254/ ...
- tomcat提示警告: An attempt was made to authenticate the locked user"tomcat"
启动tomcat7之后,运行正常,但是运行一段时间就会提示以下警告: 十二月 04, 2013 5:10:15 下午 org.apache.catalina.realm.LockOutRealm au ...
- 【Codeforces 707B】Bakery 水题
对每个storages找一下最短的相邻边 #include <cstdio> #define N 100005 #define inf 0x3f3f3f3f using namespace ...
- UITableView的cell重用优化
三种情况,四种方法: 情况一:加载xib中描述的cell 情况二:加载纯代码自定义的cell 情况三:加载storyBoard中的tableView内的cell 针对于情况一: // 导入自定义cel ...
- Lock读写锁技术的妙用
1.面试题1:三个线程读,三个线程写同一个数据 public class ReadWriteLockTest { public static void main(String[] args) { fi ...
- 素材收集(icon/images/javascript)
icon: http://www.easyicon.net/ http://www.iconpng.com/ images: http://www.58pic.com/tupian/fenxiangt ...
- 你应该了解Nginx的7个原因
Nginx ("engine x")是一个高性能的HTTP和反向代理服务器,也是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 1 负载均衡实 ...
- Redis未授权访问漏洞分析
catalog . Redis简介 . 漏洞概述 . 漏洞利用方式 . 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann ...
- EF 知识点
EntityFrameWorak知识点记录 发展史 EF1.0时,只支持Database First,数据库优先.必须将设计器指向一个现有的数据库. EF4时,支持Model First,模型优先.可 ...