判断DNSip报文格式是否有效

DNS报文格式分析
资料出处:
DNS请求报文的结构是
资源记录数
授权资源记录数
额外资源记录数
其中,后面四个字段的长度可变,它们各自的字节数也不一定是4的倍数。
标识ID:有发出DNS请求的客户端生成,对应的DNS响应报文中也要置同样的ID。
16bit的标志字段如下:
QR:0表示查询报文,1表示响应报文
Opcode:通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)。
AA:表示授权回答(authoritative answer).
TC:表示可截断的(truncated)
RD:表示期望递归
RA:表示可用递归
随后3bit必须为0
Rcode:返回码,通常为0(没有差错)和3(名字差错)
后面4个16bit字段说明最后4个变长字段中包含的条目数。
就我抓包所见,DNS请求报文的标志字段一般为0x0100
问题数字段是指这个DNS请求中待解析的域名数目,一般是1,也即0x0001。对应的DNS响应报文的问题数字段也置同样的值
资源记录数、授权资源记录数、额外资源记录数在DNS请求报文中都为0,在响应报文中视情况而定。
查询问题字段的格式为
查询名(长度不定,字节数不一定为4的倍数)
查询名为要查找的名字,它由一个或者多个标示符序列组成。每个标示符已首字节数的计数值来说明该标示符长度,每个名字以0结束,计数字节数必须是0~63之间。该字段无需填充字节。如DNS报文中就是
查询类型一般为0x0001,表示是从host address解析IP
查询类一般为0x0001,表示class IN
DNS请求报文和对应的响应报文中的查询问题字段是完全一样的
回答字段的格式如下
NAME(长度不定,字节数不一定是4的倍数)
数据(长度不定,字节数不一定是4的倍数)
NAME是该响应报文对应的DNS请求报文要解析的域名,可能是和查询问题字段中的查询名完全一样,但更多的情况下:考虑到响应报文中的查询问题字段和请求报文完全一样,也就包含了查询名,那么也可采用压缩的方式来存放,即用一个16bit的指针来指示NAME的偏移量。比如0xC00C,二进制就是1100
00,头两位为11表示这是一个双字节的指针,而不是一个计数字节(上面提到了,查询名里的计数字节为0~63,因此头两位不可能为11),后面的14位则表示这个压缩指针所指的数据离DNS报文(也就是UDP数据报的数据部分,不是指包含DNS报文的UDP数据报的报头)头部的偏移量是12。
生存时间以s为单位
数据长度是数据的字节数
响应类和请求报文的查询问题字段中的查询类对应
响应类型我目前见到了两种,一种是0x0001,这种情况下后面的数据是NAME对应的IP,占4字节;一种是0x0005,这种情况下后面的数据是NAME重定向到的域名(比如重定向到),这里数据也用查询名中的方式来存放重定向到的域名。
下面是实例解析,以为例
资源记录数
授权资源记录数
额外资源记录数
03 77 77 77 05 62 61 69 64 75 03 63 6f 6d 00
查询名(www.baidu.com)
资源记录数
授权资源记录数
额外资源记录数
03 77 77 77 05 62 61 69 64 75 03 63 6f 6d 00
查询名(www.baidu.com)
指针,指向DNS头部开始偏移12位,即查询名开始位置
第一个资源记录的响应类型
第一个资源记录的响应类
第一个资源记录的生存时间
第一个资源记录的数据长度
03 77 77 77 01 61 06 73 68 69 66 65 6e c0 16
第一个资源记录的数据,c016之前对应位,即查询名中的03
63 6f 6d 00,也就是.com
第二个资源记录的NAME,指针,指向DNS头部开始偏移43位,即第一个资源记录中的数据
第二个资源记录的响应类型
第二个资源记录的响应类
第二个资源记录的生存时间
第二个资源记录的数据长度
77 4b d5 33
第二个资源记录的数据,即IP:119.75.213.51
第三个资源记录的NAME,指针,指向DNS头部开始偏移43位,即第一个资源记录中的数据
第三个资源记录的响应类型
第三个资源记录的响应类型
第三个资源记录的生存时间
77 4b d5 32
第三个资源记录的数据长度
第二个资源记录的数据,即IP:119.75.213.50
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!分析DNS报文
分析DNS报文
【以下截图是通过访问www.sina.com.cn捕抓的包为例。】
请求包:通过两张图片来分别解释请求包中DNS报文的意思
从图一中可以看到发出请求的是IP地址为192.168.0.103
对应下边的DNS报文第一行Response:
Message is a query(信息查询)=0
表示是查询报文
第二行 Opcode:
Standard query=0(操作码:标准查询)
第三行 Truncated:
Message is not truncated =0(截断:消息未被截断,如果UDP包超过512字节将被截流)
第四行 Recursion
desired: Do query recursively=1(期望递归:表示做递归查询)
(0)保留,通常是0
第六行 Non-authenticated
data: Unacceptable(非认证数据:不可接受的)这个不懂
图二:192.168.0.103为本地网关地址
从图二中可以看到DNS报文第一行显示的是Response:
Message is response(响应信息)=1表示是响应报文
第二行 Opcode:
Standard query=0(操作码:标准查询),其他值为1(是反向查询)和2(是服务器状态查询/请求)
第三行 Authoritative:
Sever is not an authority for domain=0(权威:该服务器不是域的权威服务器,如果此位为1,表示服务器对问题部分的回答是权威性的)
第四行 Truncated:
Message is not truncated =0(截断:消息未被截断,如果UDP包超过512字节将被截流)
第五行 Recursion
desired: Do query recursively=1(期望递归:表示做递归查询)
第六行&&Recursion
available:Server
can do recursive queries=1(可递归:服务器可以递归查询)
(0)保留,通常是0&
第八行 Answer
authenticated: Answer/authority portion was not a authenticated by
the server
第九行 Non-authenticated
data: Unacceptable(非认证数据:不可接受的)
第十行 Reply
code: No error(0)(返回码:没有错误代码,如果是3表示名字差错)
从图三中可以看到应答包的DNS报文从上往下依次是:域名
生存时间 &资源数据长度
域名 &Name:
polaris.sina.com.cn&域名是与下面的资源数据是对应的
类型 &Type:
address)类型代码号
类 &Class:
IN(0x0001)&通常为1,表示因特网数据
生存时间 &Time
to live: 44 seconds
表示放在缓存里的时间为44秒
资源数据长度 &Data
标识资源数据的大小
资源数据 &Addr:
202.108.33.60
(202.108.33.60)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Sina Visitor SystemDNS&&HTTP报文分析_图文_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
DNS&&HTTP报文分析
&&计算机网络的一个课程设计
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩13页未读,
定制HR最喜欢的简历
你可能喜欢结合wireshark分析DNS协议 - 简书
结合wireshark分析DNS协议
(转载)摘要:本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析。一、概述1.1 DNS识别主机有两种方式:主机名、IP地址。前者便于记忆(如),但路由器很难处理(主机名长度不定);后者定长、有层次结构,便于路由器处理,但难以记忆。折中的办法就是建立IP地址与主机名间的映射,这就是域名系统DNS做的工作。DNS通常由其他应用层协议使用(如HTTP、SMTP、FTP),将主机名解析为IP地址,其运行在UDP之上,使用53号端口。注:DNS除了提供主机名到IP地址转换外,还提供如下服务:主机别名、邮件服务器别名、负载分配。1.2 HTTP使用DNS情形考虑这样的操作,在浏览器输入并回车,首先需要将URL(存放对象的服务器主机名和对象的路径名)解析成IP地址,具体步骤为:(1)同一台用户主机上运行着DNS应用的客户机端(如浏览器)(2)从上述URL抽取主机名,传给DNS应用的客户机端(浏览器)(3)该DNS客户机向DNS服务器发送一个包含主机名的请求(DNS查询报文)(4)该DNS客户机收到一份回答报文(即DNS回答报文),该报文包含该主机名对应的IP地址119.75.218.70(5)浏览器由该IP地址定位的HTTP服务器发送一个TCP链接用Wireshark捕获的DNS报文如下图,显然第一行是DNS查询报文,第二行是DNS回答报文。
图1 Wireshark捕获的DNS报文二、DNS报文2.1 DNS报文格式DNS只有两种报文:查询报文、回答报文,两者有着相同格式,如下:
图2 DNS报文格式2.1.1 首部区域标识数对该查询进行标识,该标识会被复制到对应的回答报文中,客户机用它来匹配发送的请求与接收到的回答。标志[1]
图3 DNS报文首部区域的标志QR(1比特):查询/响应的标志位,1为响应,0为查询。opcode(4比特):定义查询或响应的类型(若为0则表示是标准的,若为1则是反向的,若为2则是服务器状态请求)。AA(1比特):授权回答的标志位。该位在响应报文中有效,1表示名字服务器是权限服务器(关于权限服务器以后再讨论)TC(1比特):截断标志位。1表示响应已超过512字节并已被截断(依稀好像记得哪里提过这个截断和UDP有关,先记着)RD(1比特):该位为1表示客户端希望得到递归回答(递归以后再讨论)RA(1比特):只能在响应报文中置为1,表示可以得到递归响应。zero(3比特):不说也知道都是0了,保留字段。rcode(4比特):返回码,表示响应的差错状态,通常为0和3,各取值含义如下:0 无差错1 格式差错2 问题在域名服务器上3 域参照问题4 查询类型不支持5 在管理上被禁止6 -- 15 保留问题数、回答RR数、权威RR数、附加RR数这四个字段都是两字节,分别对应下面的查询问题、回答、授权和附加信息部分的数量。一般问题数都为1,DNS查询报文中,资源记录数、授权资源记录数和附加资源记录数都为0[1]。2.1.2 区域(1)问题区域包含正在进行的查询信息。包含查询名(被查询主机名字的名字字段)、查询类型、查询类。
图4 DNS报文的问题区域查询名查询名部分长度不定,一般为要查询的域名(也会有IP的时候,即反向查询)。此部分由一个或者多个标示符序列组成,每个标示符以首字节数的计数值来说明该标示符长度,每个名字以0结束。计数字节数必须是0~63之间。该字段无需填充字节。还是借个例子来说明更直观些,查询名为gemini.tuc.noao.edu的话,查询名字段如下[1]:
图5 DNS报文问题区别的查询名查询类型通常查询类型为A(由名字获得IP地址)或者PTR(获得IP地址对应的域名),类型列表如下:类型助记符说明1AIPv4地址2NS名字服务器5CNAME规范名称定义主机的正式名字的别名6SOA开始授权标记一个区的开始11WKS熟知服务定义主机提供的网络服务12PTR指针把IP地址转化为域名13HINFO主机信息给出主机使用的硬件和操作系统的表述15MX邮件交换把邮件改变路由送到邮件服务器28AAAAIPv6地址252AXFR传送整个区的请求255ANY对所有记录的请求NS记录指定了名字服务器。一般情况,每个DNS中,针对每个顶级域都会有一条NS记录,这样一来,电子邮件就可以被发送到域名树中远处的部分。查询类通常为1,指Internet数据。(2)回答、权威、附加区域回答区域包含了最初请求名字的资源记录,一个回答报文的回答区域可以包含多条资料记录RR(因为一个主机名可以对应多个IP地址,冗余Web服务器)。权威区域包含了其他权威DNS服务器的记录。附加区域包含其他一些"有帮助"的记录,例如,对于一个MX(邮件交换)请求的回答报文中,回答区域包含一条资料记录(该记录提供邮件服务器的规范主机名),附加区域可以包含一条类型A记录(该记录提供了该邮件服务器的规范主机名的IP地址)。每条资料记录是一个五元组,如下:(域名,生存期,类别,类型,值)直接表示如下[1]:
图6 DNS报文的资源记录域名(2字节或不定长)记录中资源数据对应的名字,它的格式和查询名字段格式相同。当报文中域名重复出现时,就需要使用2字节的偏移指针来替换。例如,在资源记录中,域名通常是查询问题部分的域名的重复,就需要用指针指向查询问题部分的域名。关于指针怎么用,TCP/IP详解里面有,即2字节的指针,最前面的两个高位是11,用于识别指针。其他14位从报文开始处计数(从0开始),指出该报文中的相应字节数。注意,DNS报文的第一个字节是字节0,第二个报文是字节1。一般响应报文中,资源部分的域名都是指针C00C(1100,12正好是首部区域的长度),刚好指向请求部分的域名[1]。类型(记录的类型,见表1)A记录,Name是主机名,Value是该主机名的IP地址,因此,一条类型为A的资源记录提供了标准的主机名到IP地址的映射。NS记录,Name是域(如foo.com),Value是知道如何获得该域中主机IP地址的权威DNS服务器的主机名(如dns.foo.com),这个记录常用于沿着查询链进一步路由DNS查询。CNAME记录,Name是主机别名,Value是主机别名对应的规范主机名,该记录能够向请求主机提供一个主机名对应的规范主机名。MX记录,Name是邮件服务器别名,Value是邮件服务器别名的规范主机名。通过MX记录,一个公司的邮件服务器和其他服务器可以使用相同的别名。注:有着复杂主机名的主机能拥有多个别名,前者称为规范主机名,后者称为主机别名(便于记忆)。类对于Internet信息,它总是IN。生存时间用于指示该记录的稳定程度,极为稳定的信息会被分配一个很大的值(如86400,一天的秒数)。该字段表示资源记录的生命周期(以秒为单位),一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间[1]。资源数据长度(2字节)表示资源数据的长度(以字节为单位,如果资源数据为IP则为0004)。资源数据该字段是可变长字段,表示按查询段要求返回的相关资源记录的数据。2.2 DNS查询报文实例以为例,用Wireshark俘获分组,结合2.1的理论内容,很容易看明白的,DNS请求报文如下:
图7 DNS请求报文示例2.3 DNS回答报文实例
图8 DNS回答报文示例
14.1 引言 域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。这里提到的分布式是指在Internet上的单个站点不能拥有所有的信息。每个站点(如大学中的系、校园、公司或公司中的部门)保留它自己的信...
1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的真正作者-----CSDN 博客-Goodboy1881先生致以我崇高的敬意和十二分的感谢2.转载声明:本文虽然不是本人100%原创,但也是辛辛苦苦整理的,可以...
个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是他个人的笔记,但是这个系列的博客对我们这些读者具有非常大的启迪作用。 我想,这一系列的博客对于我们这些读者更大的意义在于:这可以当作我们去阅读、学习《TCP/I...
1. 基础知识 1.1 3种常见的计算机体系结构划分 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、网际层、运输层、应用层。五层协议(5层):物理层、数据链路层、网络层、运输层、应用层。 每一层的作用如...
OSI(开放系统互联参考模型)标准模型 物理层负责为数据端设备透明地传输原始比特流,并且定义了数据终端设备和数据通信设备的物理和逻辑链接方法。传输单位是比特。 协议:RJ45、CLOCK、IEEE802.3 设备:(中继器,集线器)数据链路层将网络层传下来的IP数据报组装成...
上周日晚终于刷完电影《百元之恋》,被安藤樱这位女演员吸引住了。在这之前,正在追她有份出演的电视剧《宽松世代又如何》,这部剧本身没有感觉特别好,但安藤樱演绎的区域经理的角色还是挺打眼的。 我说的打眼不是指她有多漂亮,而是这位女演员有一种奇怪的气场,不漂亮,但你就是能被她吸引住...
北方的冬日,午后的阳光很是明亮,暖暖的照在身上,很舒服的感觉。当当和爸爸在广场的草地上晒太阳,旁边有很多小朋友,和她一样在大人的带领下玩耍,跑来跑去,由于外婆家有事,外婆回去了,妈妈工作忙不能请假,这几天只好由爸爸带她了。 一大早妈妈就去上班了,临走前过来亲了亲当当的额头说...
之前我说过,我并不是一个技术出身的PM,我对一些算法,逻辑一级噼里啪啦的代码没有一点兴趣,我知道很多人会说:PM懂一点技术总会好的。我知道,我都知道 但是我就是这种人,我不感兴趣的,裸着放我面前,我也不会看一下。 在各大交流网站,看了很多优秀的文章,关于细节设计,我想今天好...
今天听了绘本表达营第三节课,《走进生命花园》这本书被彭彭解读出了新高度,听的我心潮澎湃,备受鼓舞,晚上回去给宝贝讲这个故事,宝贝看到美丽的画面还是有被吸引到,我们先原文读一遍,第二遍记下她感兴趣的几个点,还没有进行第三遍,明天接着读。
18号的那天,你还记得她和你告别吗,就在那时,你自己知道错在哪里了吧。
和她相处了四个月了,结果还是分开了,分开的日子里很痛苦,很不理解为什么会这样,直到她的一句”因为我对你没感觉了“,我才彻底的清醒,原来这都是自己一手改造出来的悲剧。 我对你没感觉了,直到今天我才...

我要回帖

更多关于 报文 英文 的文章

 

随机推荐