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&timestamp=1617460192&ver=2986&signature=4R8PZ9YAbGUtG5zIe9HaJ4TcUdlghZlNwSg5D99jzg1JpcREZoV-I-UORBjzHqRbXy8IglHEURmm6nHWUCQaPckiH4nDp6ZtHdTo3xT7JgXSaLJRZMOaQQbvkFtpoKEq&new=1

WireShark实战笔记之DNS协议分析相关推荐

  1. wireshark实战笔记之路由跟踪(tracert)

    接上篇文章<wireshark实战笔记的ICMP分析> 路由跟踪tracert 概述 路由跟踪原理(tracert) 实验 实验一 windows下同一个路由器下的路由跟踪(一跳) 实验二 ...

  2. 计算机网络协议分析dns,DNS协议分析

    一直有一个愿望,能把知道的东西的原理搞明白:计算机网络.操作系统等等等等.今天好好研究了研究DNS协议. DNS协议是应用层协议,一般是基于UDP协议,不过我看了Golangnet 包里相关源码用的是 ...

  3. 网络安全:WireShark 抓包及常用协议分析

    WireShark 抓包及常用协议分析 打开kali终端进入wireshark 进入到wireshark点击选项 勾选选项混杂模式开始抓包 进入终端打开火狐,打开百度进行抓包 这时我们抓到了很多类型的 ...

  4. 实验十一 DNS 协议分析实验

    实验十一 DNS 协议分析实验 1.DNS 协议简介 DNS 是域名系统 (Domain Name System)的缩写,是一种分层次的.基于域的命名方案, 主要用来将主机名和电子邮件目标地址映射成I ...

  5. 利用WireShark进行DNS协议分析

    一.准备工作 系统是Windows 8.1Pro 分析工具是WireShark1.10.8 Stable Version 使用系统Ping命令发送ICMP报文. 二.开始工作 打开CMD.exe键入: ...

  6. 【安全牛学习笔记】DNS协议隧道、DNS协议隧道-dns2tcp

    DNS协议隧道 防火墙禁止TCP出站访问流量 - SSH隧道.端口准发全部失效 - 使用基于UPD协议的隧道 - DNS的工作原理适合用于实现隧道 DNS工作原理 - DNS隧道原理: 注册受自己控制 ...

  7. 头歌 DNS协议分析 第4关 NS 类型的 DNS 解析报文分析

    任务描述 相关知识 如何捕获 NS 类型的 DNS 报文 解析 DNS 请求报文 传输层协议使用 TCP 还是 UDP ? 解析 DNS 应答报文 操作要求 测试说明 任务描述 本关任务:分析 NS ...

  8. EduCoder 计算机网络实验 DNS协议分析

    第1关:nslookup 域名解析 任务描述 相关知识 域名结构 域名服务器 域名解析 域名解析与 nslookup 使用git将本地文件推送到远程仓库永久保存 操作要求 测试说明 任务描述 本关任务 ...

  9. DNS协议分析(域名解析)

    一. DNS协议理论知识 1.1. 域名结构 域名系统并不像电话号码通讯录那么简单,通讯录主要是单个个体在使用,同一个名字出现在不同个体的通讯录里并不会出现问题,但域名是群体中所有人都在用的,必须要保 ...

最新文章

  1. 两个经典递归问题:菲波那契数列 + 汉诺塔
  2. 流媒体服务器 客户端播放器方案推荐
  3. 解决pycharm输入法不跟随的方法
  4. 得到Android设备的唯一id
  5. 利用python对微信云数据库_如何用python看看女神的微信百度云里面有啥?
  6. suitecrm配置(nginx设置)
  7. 《移动浪潮》读书笔记
  8. [转]更改windows 2003远程桌面连接的端口
  9. Django Ajax文件下载
  10. esp8266控制ws2812b
  11. (2.3)【遥控型木马-灰鸽子】原理、使用方法
  12. 医院挂号系统源码(含数据库)
  13. 采用Matlab解决最小曼哈顿图问题
  14. 4个月转行做软件测试,我的薪资飙升300%
  15. excel表格中18位身份证号码如何转换成出生日期
  16. Snipe IT资产管理系统(phpstudy_pro)搭建笔记
  17. FileReader -- 图片预览问题
  18. 数字电位器X9312
  19. CDR插件开发之CPG插件001 - 什么是CPG插件
  20. c# 无法加载DLL:找不到指定的模块(异常来自HRESULT:0X8007007E)

热门文章

  1. Android TextView字体大小调节框架QFontChangeLib介绍
  2. 安卓--小猴子摘桃APP实现
  3. m3u8及TS文件下载解密:m3u8文件下载及分析(三)
  4. Java实现小型英汉互译服务器
  5. rust黑球_黑球——桌面重力,开局就是地狱模式的游戏你玩过没?
  6. 科技是国之利器,国家赖之以强。
  7. 基于Wemos D1的开发基础
  8. C++ 写开机启动项的注册表
  9. 关于VS编译DevExpress默认产生几个多余的多国语言包的问题解决
  10. 李子柒14岁当服务员,如今火遍国内外,从月薪300到年赚1.6亿?