DNS协议笔记
来源:互联网 发布:双串联谐振双向三端口 编辑:程序博客网 时间:2024/05/01 00:26
DNS基本概念
DNS(Domain NameSystem,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS协议流程
DNS协议运行在TCP协议或者UDP协议之上,使用端口号53。DNS在进行区域传输的时候使用TCP协议(区域传送指的是一台备用服务器使用来自主服务器的数据同步自己的域数据库),其它时候则使用UDP协议。
查询过程:客户向DNS服务器的53端口发送UDP/TCP报文,DNS服务器收到后进行处理,并把结果记录仍以UDP/TCP报文的形式返回过来。
这里我们主要讨论使用UDP报文进行DNS查询的流程。
DNS协议格式
ID
Flages
Questions
Answer RRs
Authority RRs
Additional RRs
Queries
Answers
Authoritative nameservers
Additional records
ID:2字节,标识符,通过随机数标识该请求。
Flags:2字节,标志位设置
第1位:msg类型,0为请求(query) 1为响应(response)。
第2-5位:opcode,查询种类,0000表示标准query。
第6位:是否权威应答 (应答时才有意义)。
第7位:因为一个UDP报文为512字节,所以该位指示是否截断超过的部分。
第8位:是否请求递归(这个比特位被请求设置,应答的时候使用的相同的值返 回)。
第9位:由DNS回复返回指定,说明DNS服务器是否支持递归查询(这个比特位 在应答中设置或取消)。
第10-12位:保留位(设置为0)。
第13-16位:应答码(0:没有错误,1:格式错误,2:服务器错误,3:名字错误,4:服务器不支持,5:拒绝,6-15:保留值)。
Questions:2字节,报文请求段中的问题记录数;
AnswerRRs:2字节,报文回答段中的回答记录数;
AuthorityRRs:2字节,报文授权段中的授权记录数;
AdditionalRRs:2字节,报文附加段中的附加记录数;
Queries:查询请求内容(响应时不变即可)
Name:不定长,域名(例子:www.baidu.com需写作: 3www5baidu3com0)。
Type:2字节查询的资源记录类型。
Class:2字节指定信息的协议组。
Answers:查询响应内容,可以有0-n条(请求时为空即可)
Name:2字节(压缩编码)指向name第一次出现的地址且前两个bit为11
Type:2字节响应类型。
Class:2字节
TTL:4字节
Datalength:2字节,指接下来的data长度,单位为字节。
Address/CNAME:4字节地址/不定长域名
Authoritativenameservers:
Name:2字节(压缩编码)指向name第一次出现的地址且前两个bit为11
Type:2字节响应类型。此处为2(NS)
Class:2字节
TTL:4字节
Datalength:2字节,指接下来的data长度,单位为字节。
nameserver:此处为6字节,表示的,表示方法待研究。
Additionalrecords:
Name:2字节(压缩编码)指向name第一次出现的地址且前两个bit为11
Type:2字节响应类型。
Class:2字节,表示类型
TTL:4字节
Datalength:2字节,指接下来的data长度,单位为字节。
Address:此处为4字节地址
相关技术资料源自:
http://cjhust.blog.163.com/blog/static/1758271572014111875652363/http://blog.chinaunix.net/uid-12077794-id-91657.html
http://www.cnblogs.com/pied/p/3571055.html
http://www.cnblogs.com/pianoid/archive/2011/04/26/2029732.html
- DNS协议笔记
- DNS协议
- DNS协议
- DNS协议
- DNS 协议
- DNS协议
- DNS协议
- DNS协议
- DNS协议
- DNS协议
- DNS协议
- DNS协议
- 【安全牛学习笔记】DNS协议隧道、DNS协议隧道-dns2tcp
- 【协议分析】DNS协议
- tcp/ip协议学习笔记(10)DNS域名系统
- 【安全牛学习笔记】DNS协议隧道-iodine、NCAT
- TCP/IP协议基本概括+ARP协议详解+DNS协议详解---Linux学习笔记
- DNS协议解析1--DNS请求协议
- if else 错误的判断
- 用C++设计一个不能被继承的类
- 软件工程的几个步骤
- 淘忆项目之服务器端的初始化
- 初学React,setState后获取到的thisstate没变,还是初始state?
- DNS协议笔记
- Jquery根据name和value属性循环选中radio
- HTML5多媒体播放video元素
- 最小生成树
- c++泛型编程中的traits技术
- 2016-8-22:html一些的标准
- FastDFS集群服务器搭建
- 【C#】VS根据系统自动更改引用64和32位的动态库
- Linux网络编程入门 (转载)