WireShark实战笔记之DNS协议分析
DNS协议分析
- DNS协议概述
- DNS工作机理概述
- dns报文
- WireSahrk分析DNS协议
- 查看第一个包:
- 查看第四个包(响应包)
DNS协议概述
DNS协议也可以称为DNS服务,全称是Domain Name System,即域名系统,和HTTP协议一样,也是一个位于应用层的协议(服务),它是基于运输层的UDP协议的。
从DNS的名字我们就可以知道,它提供域名映射到IP地址的服务,那么在我们详细说DNS协议之前,先来大致讲讲互联网的域名结构。
通常被其他应用层协议所使用,包括http、smtp和ftp等。
这里还需要了解:
域名系统
DNS解析过程
域名服务器:有四种不同的类型:根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器
DNS记录缓存
详细了解DNS协议及域名系统: https://blog.csdn.net/weixin_43742894/article/details/115421952
DNS工作机理概述
当一个主机中的进程需要把域名解析为 IP 地址时,该进程就会调用解析程序,并成为 DNS 的 一个客户,把待解析的域名放在 DNS 的请求报中,以 UDP用户数据报方式发送给本地域名服务器。本地域名服务器在查找域名后,把对应的 IP 地址放在回答报文中返回。获得 IP地址的后主机即可进行通信。
如果本地域名不能回答该请求,则向其他域名服务器发送查询请求。
dns报文
DNS 分为查询请求和查询响应,请求和响应的报文结构基本相同。DNS 报文格式如图所示。
上图中显示了 DNS 的报文格式。其中,事务 ID、标志、问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数这 6 个字段是DNS的报文首部,共 12 个字节。
详细了解DNS报文格式:http://c.biancheng.net/view/6457.html
WireSahrk分析DNS协议
实验环境:
Windows10
WireShark
实验指令:
ping www.baidu.com
wireshark捕获dns包
这里捕获到四个DNS包,但是前三个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记录.其各个取值的含义如下:
Class(类):2字节,IN表示Internet数据,通常为1
查看第四个包(响应包)
可以看到和第一个请求包相比,响应包多出了一个Answers字段,同时Flags字段每一位都有定义.
可以发现有4条资源记录,4个不同的IP地址,说明域名 www.oschina.net 对应有4个IP地址,分别是:
www.baidu.com
110.242.68.4
110.242.68.3
关注一下Flags中Answer RRs 为3 说明对应的Answers字段中将会出现3项解析结果.
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地址,就是我们想要的结果.
参考资料:
https://www.bilibili.com/video/BV1fE411Q7xY?p=5
可以看一下这篇文章关于域名查询举的例子
https://blog.csdn.net/weixin_43742894/article/details/115421952
《利用WireShark进行DNS协议分析》https://mp.weixin.qq.com/s?src=11×tamp=1617460192&ver=2986&signature=4R8PZ9YAbGUtG5zIe9HaJ4TcUdlghZlNwSg5D99jzg1JpcREZoV-I-UORBjzHqRbXy8IglHEURmm6nHWUCQaPckiH4nDp6ZtHdTo3xT7JgXSaLJRZMOaQQbvkFtpoKEq&new=1
WireShark实战笔记之DNS协议分析相关推荐
- wireshark实战笔记之路由跟踪(tracert)
接上篇文章<wireshark实战笔记的ICMP分析> 路由跟踪tracert 概述 路由跟踪原理(tracert) 实验 实验一 windows下同一个路由器下的路由跟踪(一跳) 实验二 ...
- 计算机网络协议分析dns,DNS协议分析
一直有一个愿望,能把知道的东西的原理搞明白:计算机网络.操作系统等等等等.今天好好研究了研究DNS协议. DNS协议是应用层协议,一般是基于UDP协议,不过我看了Golangnet 包里相关源码用的是 ...
- 网络安全:WireShark 抓包及常用协议分析
WireShark 抓包及常用协议分析 打开kali终端进入wireshark 进入到wireshark点击选项 勾选选项混杂模式开始抓包 进入终端打开火狐,打开百度进行抓包 这时我们抓到了很多类型的 ...
- 实验十一 DNS 协议分析实验
实验十一 DNS 协议分析实验 1.DNS 协议简介 DNS 是域名系统 (Domain Name System)的缩写,是一种分层次的.基于域的命名方案, 主要用来将主机名和电子邮件目标地址映射成I ...
- 利用WireShark进行DNS协议分析
一.准备工作 系统是Windows 8.1Pro 分析工具是WireShark1.10.8 Stable Version 使用系统Ping命令发送ICMP报文. 二.开始工作 打开CMD.exe键入: ...
- 【安全牛学习笔记】DNS协议隧道、DNS协议隧道-dns2tcp
DNS协议隧道 防火墙禁止TCP出站访问流量 - SSH隧道.端口准发全部失效 - 使用基于UPD协议的隧道 - DNS的工作原理适合用于实现隧道 DNS工作原理 - DNS隧道原理: 注册受自己控制 ...
- 头歌 DNS协议分析 第4关 NS 类型的 DNS 解析报文分析
任务描述 相关知识 如何捕获 NS 类型的 DNS 报文 解析 DNS 请求报文 传输层协议使用 TCP 还是 UDP ? 解析 DNS 应答报文 操作要求 测试说明 任务描述 本关任务:分析 NS ...
- EduCoder 计算机网络实验 DNS协议分析
第1关:nslookup 域名解析 任务描述 相关知识 域名结构 域名服务器 域名解析 域名解析与 nslookup 使用git将本地文件推送到远程仓库永久保存 操作要求 测试说明 任务描述 本关任务 ...
- DNS协议分析(域名解析)
一. DNS协议理论知识 1.1. 域名结构 域名系统并不像电话号码通讯录那么简单,通讯录主要是单个个体在使用,同一个名字出现在不同个体的通讯录里并不会出现问题,但域名是群体中所有人都在用的,必须要保 ...
最新文章
- 两个经典递归问题:菲波那契数列 + 汉诺塔
- 流媒体服务器 客户端播放器方案推荐
- 解决pycharm输入法不跟随的方法
- 得到Android设备的唯一id
- 利用python对微信云数据库_如何用python看看女神的微信百度云里面有啥?
- suitecrm配置(nginx设置)
- 《移动浪潮》读书笔记
- [转]更改windows 2003远程桌面连接的端口
- Django Ajax文件下载
- esp8266控制ws2812b
- (2.3)【遥控型木马-灰鸽子】原理、使用方法
- 医院挂号系统源码(含数据库)
- 采用Matlab解决最小曼哈顿图问题
- 4个月转行做软件测试,我的薪资飙升300%
- excel表格中18位身份证号码如何转换成出生日期
- Snipe IT资产管理系统(phpstudy_pro)搭建笔记
- FileReader -- 图片预览问题
- 数字电位器X9312
- CDR插件开发之CPG插件001 - 什么是CPG插件
- c# 无法加载DLL:找不到指定的模块(异常来自HRESULT:0X8007007E)