【协议基础】DNS协议概述DNS抓包分析
目录
1.DNS(Domain Name System,域名系统)
1.1产生背景:
1.2.DNS概述
1.3域:
1.4域名结构:
2.DNS的工作原理:
2.1DNS的工作模式
递归解析---
迭代解析
2.2DNS工作原理示例
3.DNS常见的记录及作用
SOA:
A:
NS:
MX:
CNAME:
PTR:
4.DNS报文格式
4.1Header 报文头
4.2Question 查询字段
4.3Answer/Authority/Additional
5.抓包分析
5.1准备工作:
5.2查看数据包
1.DNS(Domain Name System,域名系统)
1.1产生背景:
Internet网中连接着数量众多的主机,要让这些主机进行通信,需要有一套名字标识体系,让主机之间能够彼此找到对方,我们可以用多种方式进行主机标识,如使用主机名标识一台主机,当然,我们更多是用IP地址来标识计算机,主机在互联网上靠IP地址进行位置标识。
▲ip地址于方便记忆的域名进行对应
在internet的前身ARPAnet的年代,整个网络中只有几百台主机,所有主机信息以及主机名与地址的映射记录都存放在一个名为HOSTS.TXT的文件中。HOSTS.TXT从一台名为SRI-NIC的主机上分发到整个网络,这台主机由斯坦福研究院的网络信息中心负责维护。ARPAnet的管理员们通过电子邮件的方式将变更信息通知NIC,同时定期FTP到SRI-NIC上,获得最新的HOSTS.TXT文件。
▲起初主机信息及主机名对应关系是人手动更新(HOSTS.TXT)
在20世纪70年代束,整个ARPAnet只有200台主机。
但是到了80年代,ARPAnet上主机数量飞速增长,到80年代末期主机总数增加到10万台,这种人工更新的方式显然不再适用了。频繁更新HOSTS.TXT造成了网络流量和处理器负载增加,并且名字冲突和数据一致性维护越来越困难。
为了解决这一问题,网络管理者们希望找到一种合理的方法来解决主机信息的维护问题,既能分散管理,又能及时进行全网更新和同步,并且采用层次化的名字空间,保证主机名的全网唯一性。1984年,南加州大学信息科学所的Paul Mockapnris发布了描述DNS(英文全称为Domain Name System,中文意思是域名系统)的RFC 882和RFC 883,就是最初的DNS规范,DNS系统诞生了。
▲DNS产生发展过程
1.2.DNS概述
DNS(Domain Name System,域名系统)是互联网上是一种层次结构的基于域的命名方式和实现这种命名方式的分布式数据库,其中记录了各种主机域名与 IP 地址的对应关系,能够使用户更加方便的访问网站。用户可以直接输入域名登录网站,DNS会将域名解析成IP地址,然后用户根据这个IP地址找到相应的网站,从而访问到域名对应的网站,通过主机名获取到主机名对应IP地址的过程叫作域名解析。
1.3域:
- 域是一个逻辑上的概念,在初始瓜分互联网的时候,Internet组织将世界上的计算机划分为了若干个大类,如com、gov、org、net、edu、cn、us等等
- 每一个大类我们称之为一个域
- 在每个大类里面划分出比较小一点的,成为子域,域是可以嵌套的,大域包含小域,小域可以包含更小的域
- 域名:在每个域里面都有很多主机,每个主机都有一个主机名,我们在这个主机名后面冠上主机所在域的名称成为该主机在Internet网络上的域名。
- DNS协议建立在UDP协议之上,在某些情况下可以切换到TCP,使用端口号53,是一种客户/服务器服务模式。
1.4域名结构:
域名是一个树状层次结果,联机分布式数据库系统,最高的根域名服务器维护最高级别域名服务器记录,后者维护下一级域名服务器的记录。
▲分层式DNS结构
域名服务器:负责名字到地址的解析。
域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
根据域名结果可以把域名服务器划分为以下四种类型:
(1)根域名服务器;
(2)顶级域名服务器;
(3)权威域名服务器;
(4)本地域名服务器。
每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)
如果根据DNS服务器管理的区域地址数据的来源不同,DNS 系统可以分为不同的类型。在同一台 DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下
- 主域名服务器:维护某一个特定 DNS 区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。
- 从域名服务器:与主域名服务器提供完全相同的 DNS 解析服务,通常用于 DNS 服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询的结果都一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定的, 而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置, 以便服务器能自动同步区域的地址数据库。
- 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源。
2.DNS的工作原理:
2.1DNS的工作模式
DNS 查询以各种不同的方式进行解析,客户机可通过使用从以前查询获得的缓存信息就地应答查询,DNS 服务器也可使用其自身的资源记录信息缓存来应答查询。但更多是使用下列两种方式:
递归解析---
逐层解析----
DNS服务器收到一个域名解析请求时,如果所要检索的资源记录不在本地,DNS服务器将和自己的上一层服务器交互,获得最终的答案,并将其返回给客户;
迭代解析
本地服务没有,告诉客户可以解析的DNS服务器地址---
DNS服务器收到解析请求,首先在本地的数据库中查找是否有相应的资源记录,如果没有,则向客户提供另外一个DNS服务器的地址,客户负责把解析请求发送给新的DNS服务器地址;
2.2DNS工作原理示例
3.DNS常见的记录及作用
DNS记录类型
域名和IP之间的对应关系,称为“记录”(record)。根据记录使用的目的不同,又分为不同的类型,常见的DNS记录类型如下:
SOA:
Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录;
A:
地址记录(Address),返回域名指向的IP地址。----域名和IP的绑定记录;
NS:
域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。---想解析这个域名去找另外一个域名可解析,另外一个域名的记录为A格式;
MX:
邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
CNAME:
规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。---两个域名对应的是同一个主机,可以把A域名指向B,搭配A记录使用;
PTR:
逆向查询记录(Pointer Record),只用于从IP地址查询域名。
4.DNS报文格式
请求报文以及响应报文具有统一的格式
Header
报文头Question
查询的问题Answer
应答Authority
授权应答Additional
附加信息
+--+--+--+--+--+--+--+| Header |+--+--+--+--+--+--+--+| Question |+--+--+--+--+--+--+--+| Answer |+--+--+--+--+--+--+--+| Authority |+--+--+--+--+--+--+--+| Additional |+--+--+--+--+--+--+--+
4.1Header 报文头
ID
: 2
个字节(16bit
),标识字段,客户端会解析服务器返回的DNS应答报文,获取ID
值与请求报文设置的ID
值做比较,如果相同,则认为是同一个DNS会话。
FLAGS
: 2
个字节(16bit
)的标志字段。包含以下属性:
QR
:0
表示查询报文,1
表示响应报文;opcode
: 通常值为0
(标准查询),其他值为1
(反向查询)和2
(服务器状态请求),[3,15]
保留值;AA
: 表示授权回答(authoritative answer)-- 这个比特位在应答的时候才有意义,指出给出应答的服务器是查询域名的授权解析服务器;TC
: 表示可截断的(truncated)--用来指出报文比允许的长度还要长,导致被截断;RD
: 表示期望递归(Recursion Desired) -- 这个比特位被请求设置,应答的时候使用的相同的值返回。如果设置了RD,就建议域名服务器进行递归解析,递归查询的支持是可选的;RA
: 表示支持递归(Recursion Available) -- 这个比特位在应答中设置或取消,用来代表服务器是否支持递归查询;Z
: 保留值,暂未使用;RCODE
: 应答码(Response code) - 这4个比特位在应答报文中设置,代表的含义如下:0
: 没有错误。1
: 报文格式错误(Format error) - 服务器不能理解请求的报文;2
: 服务器失败(Server failure) - 因为服务器的原因导致没办法处理这个请求;3
: 名字错误(Name Error) - 只有对授权域名解析服务器有意义,指出解析的域名不存在;4
: 没有实现(Not Implemented) - 域名服务器不支持查询类型;5
: 拒绝(Refused) - 服务器由于设置的策略拒绝给出应答.比如,服务器不希望对某些请求者给出应答,或者服务器不希望进行某些操作(比如区域传送zone transfer);[6,15]
: 保留值,暂未使用。
QDCOUNT
: 无符号16bit
整数表示报文请求段中的问题记录数。
ANCOUNT
: 无符号16bit
整数表示报文回答段中的回答记录数。
NSCOUNT
: 无符号16bit
整数表示报文授权段中的授权记录数。
ARCOUNT
: 无符号16bit
整数表示报文附加段中的附加记录数。
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| ID |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|QR| opcode |AA|TC|RD|RA| Z | RCODE |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| QDCOUNT |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| ANCOUNT |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| NSCOUNT |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| ARCOUNT |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
4.2Question 查询字段
QNAME
无符号8bit
为单位长度不限表示查询名(广泛的说就是:域名).QTYPE
无符号16bit
整数表示查询的协议类型.QCLASS
无符号16bit
整数表示查询的类,比如,IN
代表Internet.
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| ... || QNAME || ... |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| QTYPE |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| QCLASS |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
4.3Answer/Authority/Additional
这3个字段的格式都是一样的。
NAME
资源记录包含的域名.TYPE
表示DNS
协议的类型.CLASS
表示RDATA的类.TTL
4字节无符号整数表示资源记录可以缓存的时间。0代表只能被传输,但是不能被缓存。RDLENGTH
2个字节无符号整数表示RDATA的长度RDATA
不定长字符串来表示记录,格式根TYPE和CLASS有关。比如,TYPE是A,CLASS 是 IN,那么RDATA就是一个4个字节的ARPA网络地址。
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| NAME |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| TYPE |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| CLASS |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| TTL |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| RDLENGTH |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+| RDATA |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
5.抓包分析
5.1准备工作:
(1)在window系统cmd输入 ping www.baidu.com;
(2)开启wirshark找到正在访问互联网的网卡,筛选DNS包,开始抓包;
(3)然后在命令行输入回车确定ping,等待过程完毕,停止抓包;
(4)已知主机的私有IP为: DNS服务器为: ;
5.2查看数据包
使用DNS过滤器后可看到两个DNS包,如下;
打开第一个包(请求)
分析:
1.可以看到DNS是基于UDP-53端口的/DNS使用UDP协议,是传输层协议;
2.网络层可以看到,源IP为主机IP,目标IP为本地DNS服务器IP;
3.Heander--报文头,
4.Question--请求:
打开第二个包(回应):
头部与请求已近分析过了,这里仅做展示,不做分析,重点分析应答部分;
分析:可以看到百度的应答了三个,IA--表示英特网;
第一个:type:CNAME(规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,就是告诉你向解析www.baiu.com这个域名的ip,去访问www.a.shifen.com这个域名);
第二个:type:A(地址记录(Address),返回域名指向的IP地址,域名与IP对应),www.a.shifen.com这个域名的IP是:36.152.44.95;liangg
第三个:type:A(地址记录(Address),返回域名指向的IP地址,域名与IP对应),www.a.shifen.com这个域名的IP是:36.152.44.96;
经过验证:www.a.shifen.com无法访问到www.baidu.com;
但36.152.44.95/36.152.44.96均可访问到www.baidu.com;
如有错误,欢迎评论区指正,交流学习将万分感谢;
【协议基础】DNS协议概述DNS抓包分析相关推荐
- DNS完整过程及抓包分析
DNS完整过程及抓包分析 1.DNS概念 DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主机的域名和对应IP地址 ...
- windows smb更改端口_SMB协议(使用说明+过程详解+抓包分析)
一.SMB概述 SMB(ServerMessage Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议.SMB 是 ...
- SNMP协议的了解与简单的抓包分析
文章目录 前言 一.SNMP是什么? 二.SNMP解读 1.实现结构 2.操作命令 3.SNMP报文 4 SNMP报文格式 三.SNMP抓包分析 1.SNMP体验 2.SNMP抓包分析 总结 前言 本 ...
- Wireshark对pop3抓包分析
本文主要使用Wireshark对邮件客户端使用POP3协议收取邮件的过程进行抓包分析并使用telnet命令进行简单操作. 1.POP3简介 邮局协议(英语:Post Office Protocol,缩 ...
- Wireshark对IMAP抓包分析
本文主要使用Wireshark对邮件客户端使用IMAP协议接收邮件的过程进行抓包分析并使用telnet命令进行简单操作. 1.IMAP简介 IMAP和POP3两个协议基本上是目前支持和使用最广泛的邮件 ...
- Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述
Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...
- Wireshark数据抓包分析——网络协议篇
Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...
- 网络:抓包分析dns的原理
DSN理论 DNS是什么 在互联网上有多达到上亿的设备,而这些设备之间互相联通网络,每一台主机都需要一个唯一的标识符(就像是我们每个人都有一张身份证),而这个标识符就是IP地址,由于IP地址是数字,不 ...
- DNS抓包分析--wireshark
DNS抓包分析–wireshark DNS-(Domain Name System,域名系统),是因特网上作为余名和IP地址相互映射的一个分布式数据库,能够使用户更加方便地访问互联网,而不是去记住能够 ...
- UDP协议抓包分析 -- wireshark
UDP协议抓包分析 – wireshark UDP是User Datagram Protocol用户数据报协议的简称.他是OSI七层模型中一种无连接的传输层协议,提供面向事务的简单的不可靠信息传送服务 ...
最新文章
- 基于css3 transform实现散乱的照片排列
- 引进博士:118万安家房补+18万经费;硕士:42万安家房补+10万经费
- 如何进行网站的安全测试
- CodeForces - 1445E Team-Building(可撤销并查集)
- Visual Studio Code的一个插件,让图标以Material的设计风格呈现
- 飞鸽传书2007很给力
- Datastructure
- 【源码解读】EOS测试插件:txn_test_gen_plugin.cpp
- java 缓存日志_Java日志缓存机制的实现(3)
- 图像放缩中最近邻插值和双线性插值的基本原理
- CMD 控制台中文乱码
- 二等水准数据平差_二等水准点高程平差计算表(1)
- 夜间红外图像行人检测学习笔记
- chardet demo
- 去美国看展会1:办理护照和签证
- StrandHogg漏洞修复
- JavaScript中的eval函数
- 畅通工程1863(并查集)(WA的思考)
- ios应用跳转小程序Universal Links链接验证不通过
- python 实现的 成语接龙
热门文章
- 黎曼传记资料(2010-04-22 22:17:06)
- matlab 高精度无理数,如何从MatLab上的无理数生成近似分数?
- 强强联手|任子行公司董事长景晓军一行到访云畅科技交流
- 外贸常用术语_常用贸易术语大全
- 2.5万字讲解DDD领域驱动设计,从理论到实践掌握DDD分层架构设计,赶紧收藏起来吧
- 淘宝/天猫上传图片到淘宝 API
- [已解决]踩过的坑之mysql连接报“Communications link failure”错误
- 【JVM】灵性一问——为什么用元空间替换永久代?
- 用acme.sh帮你免费且自动更新的HTTPS证书,省时又省力
- github rust 项目Travis ci配置