- 浏览: 768950 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
一.首部:
ID:由程序分配的16位标识符,该程序产生任何种类的查询。这个标识符是被复制的相应响应,这个标识符可由请求者用于匹配未得到解决的查询的响应。
QR:1位字段,该字段规定这个消息是查询(0)还是响应(1)。
OPCODE:4 位字段,该字段规定这个消息中查询的种类。这个值由查询的发起者设置,它被复制进响应中。这个值的具体取值是:
0:标准查询(QUERY)
1:反向查询(IQUERY)
2:服务器状态请求(STATUS)
3-15:保留将来使用
AA:权威回答(Authoritative Answer) ---这个位在响应中有效,这个位规定进行回应的名称服务器是问题部分中域名的权威(名称服务器)。
注意,由于别名,回答部分的内容可以有多个所有者名称。AA位对应匹配查询名称的名称,或者
对应回答部分中第一个所有者
TC:截断(Truncation) ---表示这条消息由于长度大于传送通道上准许的长度而被截断。
RD:期望递归(Recursion Desired) ---在查询中这个位可以置 1,并且被复制进响应中。如果
RD 置 1,它引导名称服务器递归跟踪查询。支持递归查询是可选项。
RA:递归可用(Recursion Available) ---在响应中这个字段被置 1 或被清零,指示在名称服务
器中是否支持递归查询。
Z:保留将来使用。在所有查询和响应中此位必须置 0。
RCODE:响应代码(Response code)---这个 4 位字段是响应的一部分。其取值有如下含意:
0 没有出错条件
1 格式错误---名称服务器不能解释查询。
2 服务器故障---由于与名称服务器有关的问题,名称服务器不能处理这个查询。
3 名称错误---仅对来自权威名称服务器的响应有意义,这个代码预示在该查询中被查询的域名
不存在。
4 未实现---名称服务器不支持请求的查询种类。
5 拒绝---由于策略原因名称服务器拒绝执行指定的操作。例如,名称服务器可能不希望提供信
息给特定的请求者,或者名称服务器可能不希望为特定的数据执行特定的操作(例如,区域传
递)。
6-15 保留将来使用。
QDCOUNT:无正负号 16 位整数,它规定问题部分中条目的数量。
ANCOUNT:无正负号 16 位整数,它规定回答部分中资源记录的数量。
NSCOUNT:无正负号 16 位整数,它规定权威记录部分中名称服务器资源记录的数量。
ARCOUNT:无正负号 16 位整数,它规定附加记录部分中资源记录的数量。
二.问题部分格式
QNAME:用标签序列表示的域名,在标签序列中每个标签包括长度八位位组,再加上那个八位位组的数量。对于根的空标签,此域名用零长度八位位组终止。注意,这个字段可以是奇数个八位位组;不使用填充。
QTYPE:2个八位位组代码,它规定查询的类型。这个字段的值包括所有适用于 TYPE 字段的代码,以及某些更一般的代码(这QCLASS些代码可以匹配不止一个 RR 类型)。
QCLASS:2 个八位位组代码,它规定查询的类。例如,对于互联网,QCLASS 字段是 IN。
三.资源记录格式
回答部分、权威部分和附加部分都共享相同的格式:可变数目资源记录,其中记录的数
目在首部内相应计数字段中规定
NAME:这个资源记录匹配的域名。
TYPE:包括RR类型代码之一的两个八位位组。这个字段规定RDATA字段中数据的含意。
CLASS:两个八位位组,它们规定 RDATA 字段中数据的类。
TTL:32位无正负号整数,它规定时间间隔(单位为秒),即资源记录应当被抛弃前,它可以被缓存的时间。零值的含意是 RR 仅能用于正在进行的业务,不能被缓存。
RDLENGTH:无正负号 16 位整数,它规定 RDATA 字段的长度,以八位位组为单位。
RDATA:可变长度八位位组串,它描述资源。这条信息的格式根据资源记录的 TYPE 和 CALSS 改变。
例如,如果 TYPE 是 A 和 CALSS是 IN,此 RDATA 字段是 4 个八位位组 ARPA 互联网地址。
ID:由程序分配的16位标识符,该程序产生任何种类的查询。这个标识符是被复制的相应响应,这个标识符可由请求者用于匹配未得到解决的查询的响应。
QR:1位字段,该字段规定这个消息是查询(0)还是响应(1)。
OPCODE:4 位字段,该字段规定这个消息中查询的种类。这个值由查询的发起者设置,它被复制进响应中。这个值的具体取值是:
0:标准查询(QUERY)
1:反向查询(IQUERY)
2:服务器状态请求(STATUS)
3-15:保留将来使用
AA:权威回答(Authoritative Answer) ---这个位在响应中有效,这个位规定进行回应的名称服务器是问题部分中域名的权威(名称服务器)。
注意,由于别名,回答部分的内容可以有多个所有者名称。AA位对应匹配查询名称的名称,或者
对应回答部分中第一个所有者
TC:截断(Truncation) ---表示这条消息由于长度大于传送通道上准许的长度而被截断。
RD:期望递归(Recursion Desired) ---在查询中这个位可以置 1,并且被复制进响应中。如果
RD 置 1,它引导名称服务器递归跟踪查询。支持递归查询是可选项。
RA:递归可用(Recursion Available) ---在响应中这个字段被置 1 或被清零,指示在名称服务
器中是否支持递归查询。
Z:保留将来使用。在所有查询和响应中此位必须置 0。
RCODE:响应代码(Response code)---这个 4 位字段是响应的一部分。其取值有如下含意:
0 没有出错条件
1 格式错误---名称服务器不能解释查询。
2 服务器故障---由于与名称服务器有关的问题,名称服务器不能处理这个查询。
3 名称错误---仅对来自权威名称服务器的响应有意义,这个代码预示在该查询中被查询的域名
不存在。
4 未实现---名称服务器不支持请求的查询种类。
5 拒绝---由于策略原因名称服务器拒绝执行指定的操作。例如,名称服务器可能不希望提供信
息给特定的请求者,或者名称服务器可能不希望为特定的数据执行特定的操作(例如,区域传
递)。
6-15 保留将来使用。
QDCOUNT:无正负号 16 位整数,它规定问题部分中条目的数量。
ANCOUNT:无正负号 16 位整数,它规定回答部分中资源记录的数量。
NSCOUNT:无正负号 16 位整数,它规定权威记录部分中名称服务器资源记录的数量。
ARCOUNT:无正负号 16 位整数,它规定附加记录部分中资源记录的数量。
二.问题部分格式
QNAME:用标签序列表示的域名,在标签序列中每个标签包括长度八位位组,再加上那个八位位组的数量。对于根的空标签,此域名用零长度八位位组终止。注意,这个字段可以是奇数个八位位组;不使用填充。
QTYPE:2个八位位组代码,它规定查询的类型。这个字段的值包括所有适用于 TYPE 字段的代码,以及某些更一般的代码(这QCLASS些代码可以匹配不止一个 RR 类型)。
QCLASS:2 个八位位组代码,它规定查询的类。例如,对于互联网,QCLASS 字段是 IN。
三.资源记录格式
回答部分、权威部分和附加部分都共享相同的格式:可变数目资源记录,其中记录的数
目在首部内相应计数字段中规定
NAME:这个资源记录匹配的域名。
TYPE:包括RR类型代码之一的两个八位位组。这个字段规定RDATA字段中数据的含意。
CLASS:两个八位位组,它们规定 RDATA 字段中数据的类。
TTL:32位无正负号整数,它规定时间间隔(单位为秒),即资源记录应当被抛弃前,它可以被缓存的时间。零值的含意是 RR 仅能用于正在进行的业务,不能被缓存。
RDLENGTH:无正负号 16 位整数,它规定 RDATA 字段的长度,以八位位组为单位。
RDATA:可变长度八位位组串,它描述资源。这条信息的格式根据资源记录的 TYPE 和 CALSS 改变。
例如,如果 TYPE 是 A 和 CALSS是 IN,此 RDATA 字段是 4 个八位位组 ARPA 互联网地址。
发表评论
-
rawsocket发送dns包
2017-09-14 15:18 619#include <stdio.h> #in ... -
dnssec
2017-08-24 15:27 541Domain Name System Security Ext ... -
SOA记录
2016-11-24 10:17 1014SOA(StartofAuthority)资源记 ... -
dig
2016-11-04 09:49 4291.dig 文件 dig www.baidu.com -f d ... -
bind查看版本号
2016-11-02 14:30 1108dig @dns_ip txt chaos version.b ... -
BGP与Anycast
2016-10-25 15:09 815BGP属于一项技术,一般应用于IDC多线机房,也就是把接入到机 ... -
DNS协议
2016-10-19 20:51 435qr:表示消息是响应,而还 ... -
IPv6寻址入门
2016-10-04 14:26 639IPv6地址的长度为128位,其最佳表示方法是使用冒号分隔的8 ... -
bind配置
2016-10-01 16:54 3131.禁递归 options{ recursion no; } ... -
否定缓存
2016-09-18 14:20 891否定缓存,也叫负缓存,是指对查询失败的域名进行缓存。 -
ndc与rndc
2016-09-12 22:49 621打开名称服务器的调试功能以记录查询消息 rndc trace ... -
MX记录
2016-09-01 21:41 420MX记录:DNS使用单一类型的资源记录来实现增强的邮件路由. ... -
CIDR
2016-08-25 21:44 465CIDR:无类域间路由.如192.168.0.123/25,它 ... -
如何选择权威名字服务器
2016-08-22 22:39 737RTT:往返时间(roundtrip time) 当bind ... -
反向代理负载均衡
2016-03-29 22:48 5761.反向代理服务器处于Web服务器前面.浏览器访问请求的地址是 ... -
递归与迭代的区别
2016-03-10 14:51 7221.递归查询: 一般客户机和服务器之间属递归查询,即当客户机 ... -
BGP
2016-03-01 12:11 355BGP:边界网关协议 BGP是 ... -
名字服务器
2015-12-20 09:03 467一个独立管理的DNS子树称为一个区域(zone). 一个名字 ... -
动态加速
2015-08-02 10:27 530CDN的复制机制: 1.Web系统表现层的复制.通过复制,边缘 ... -
RTMP
2015-07-27 22:33 519RTMP协议全称为Real Time Messaging Pr ...
相关推荐
**DNS协议分析实验报告** **一、实验目的** 本次DNS协议分析实验的主要目的是熟悉`nslookup`命令的使用,以及深入了解DNS(域名系统)的工作原理。通过解析域名www.hunau.net并分析其对应的IP地址解析请求和应答...
### DNS协议分析 #### 实验目的 本实验旨在让学生通过实践操作深入了解DNS(Domain Name System)的工作原理及其报文格式。通过使用`nslookup`工具和Wireshark协议分析软件,学习如何解析域名、捕获并分析DNS数据包...
在实验环境中,为了加深对DNS协议工作原理和报文格式的理解,通常会进行DNS协议的实验操作。实验过程包括理解DNS实现的原理、了解DNS解析的过程、学习DNS报文格式、掌握nslookup命令和ipconfig命令的使用方法等。...
本篇文章将深入探讨如何在C#中实现DNS协议,并涵盖服务器、客户端、协议报文格式以及DNS代理服务器的相关知识。 首先,DNS服务器是DNS系统的核心,它存储了域名到IP地址的映射。在C#中实现一个简单的DNS服务器,...
在本项目中,“DNS协议解析源码程序”旨在实现DNS查询和响应的解析功能,这涉及到对DNS报文结构的理解以及C#编程语言的应用。 首先,我们来看DNS协议的基本概念。DNS协议基于UDP(User Datagram Protocol)或TCP...
dns网络协议报文,用来分析dns协议 dns网络协议报文,用来分析dns协议dns网络协议报文,用来分析dns协议dns网络协议报文,用来分析dns协议dns网络协议报文,用来分析dns协议
实验报告5:DNS协议分析 本实验旨在深入理解DNS(Domain Name System)的工作原理,并通过使用nslookup命令来熟悉DNS查询的过程。实验中,我们分析了三个特定的nslookup命令产生的DNS数据报,以了解域名解析请求和...
首先,DNS协议基于UDP(User Datagram Protocol)进行通信,但也有使用TCP的情况。在DNS查询过程中,客户端向DNS服务器发送请求,包含要解析的域名和查询类型(如A记录、AAAA记录、MX记录等)。服务器收到请求后,会...
DNS协议规范主要由两份RFC(Request for Comments)文档定义:RFC1034和RFC1035。这些文档详细描述了DNS的工作原理、数据结构、查询和响应过程以及资源记录的格式。 RFC1034,标题为“域名系统(DNS)的概念和机制...
### DNS协议分析报告 #### 实验目的与背景 本次实验旨在深入理解DNS(Domain Name System,域名系统)的工作原理,并通过Wireshark抓包工具捕捉并分析DNS数据包,掌握DNS解析过程中的关键技术和实现机制。 #### ...
本篇文章将详细讲解如何使用C#的Socket编程来实现DNS协议,通过源码分析,帮助你深入理解DNS的工作机制。 首先,DNS协议是一种基于UDP的应用层协议,其主要功能是将易于记忆的域名解析为IP地址,以便于网络通信。在...
dns协议解析包 v1.0源码 介绍: 一个c#开发的dns协议解析包。可以生成查询请求,接收返回的数据,并解析出结果。 应用场景: 如果只是想根据域名获取ip地址,可以使用.net自带的类“System.Net.Dns.GetHostByName...
在这个“dns协议简介ppt”中,我们深入理解DNS的工作原理、历史演变以及其在现代网络中的应用。 首先,DNS协议解决了网络通讯中的一个重要问题:人与机器之间的沟通鸿沟。当我们输入像"www.google.com"这样的域名时...
这篇教程将深入解析DNS协议的基本原理、工作流程以及其在互联网中的重要作用。 首先,我们要理解DNS的主要功能:将人类友好的域名转换为网络可以识别的IP地址。例如,当你在浏览器中输入www.google.com时,DNS系统...
### DNS协议浅谈 #### 一、DNS的工作原理 **DNS**(Domain Name System,域名系统)是互联网中的一项核心服务,它通过将人类易于记忆的域名转化为机器可识别的IP地址,使得用户能够轻松访问互联网上的各种资源。...
当年在很多开源社区找到类似的JAR,都特别的肥大,效率低下,因此就自己根据DNS协议自行编写了一个,编写成JAR包只有38K,非常轻量,运行效率杀掉所有开源社区的产品,代码也附上了,大家有需要研究的可以研究,不想...
了解DNS协议对于网络管理和故障排查至关重要。 **一、DNS协议原理** DNS协议基于UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)两种传输层协议。通常,DNS查询主要通过UDP进行,因为其速度...
DNS 协议格式文档 DNS 协议是一种层次化的客户端-服务器协议,每个域名(如 neu.edu、microsoft.com 等)都有一个或多个 DNS 服务器,负责处理该域名下的子域名(如 www.neu.edu、research.microsoft.com 等)的...