DNS协议详解

一:DNS协议简介

        当我们想要访问百度的时候,我们会输入网址www.baidu.com,而不是直接输入百度的服务器的IP地址去访问,而且我们也不知道百度的服务器的IP地址是多少。为什么我们输入百度的网址就能自动去找到百度的服务器地址呢。这背后就有DNS的功劳。

        域名系统(Domain Name System,缩写:DNS)是互联网的一项基础服务。DNS允许终端用户设备将给定的人类可读URL转换为网络可以理解的机器可用IP地址。DNS本质是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统。

        DNS作为互联网的一个基础协议,其设计之初就考虑到了高效简单可用的原则,采用了协议设计中场景的分层架构。就像一个数据包有网络层,传输层,应用层。DNS本身也有自己独特的分层设计。

        Domain 分层架构呈现为树形结构,最顶上的为根服务器,然后为顶级域名(常见的如aliyun.com,sina.com.net,zte.com.cn)。目前,已经有超过 250 个顶级域名,每个顶级域名又可以进一步的划分出二级域名,二级域名又可以再划分出三级域名。依此类推,最终形成了我们现在见到的 www.baidu.com. 此类形式。(注:最后一个点表示根服务器,默认可忽略。)

        Domain 的分层架构设计体现了高效简单可用,如下:

  • 层级清晰:每一级域名代表一个层级,整个域名系统具有清晰的层次结构,简化每一层的管理和维护。
  • 分布式管理:DNS 是一个分布式数据库,不同的域名由不同的 DNS 服务器管理。分布式管理的最大优点就是提高整个集群的健壮性,单点故障不会影响整个DNS系统。
  • 易于扩展:可以根据需要简易的在树形结构上添加新的域名节点,而不会影响到整个系统的稳定性和性能。
  • 易于解析:使得域名更容易被解析,有助于搜索和查找。也方便进行域名解析的缓存,提高了域名解析的效率。

二:DNS协议字段解析

        DNS协议的层级在传输层之上,常见的是用UDP作为传输层,用的是知名端口53,当然也有TCP的DNS。

1,标识(identifier)

        标识占16 位,标识用于DNS的请求和响应是不是一对。对于一对的请求和响应,标识字段是一样的。

2,标志(flags )

标志占 16 位,其包含8个标志字段,其含义分别如下

  • QR 查询应答标志,0表示这是查询报文,1表示这是应答报文。
  • opcode 查询应答类型,0表示标准查询,1表示反向查询,2表示请求服务器状态。
  • AA 表示权威回答( authoritative answer ),意味着当前查询结果是由域名的权威服务器给出的,仅由应答报文使用。
  • TC 位表示截断( truncated ),使用 UDP 时,如果应答超过 512 字节,只返回前 512 个字节,仅当DNS报文使用UDP服务时使用。DNS 协议使用UDP服务,但也明确了 『当 DNS 查询被截断时,应该使用 TCP 协议进行重试』 这一规范。
  • RD 表示递归查询标志 ( recursion desired ),在请求中设置,并在应答中返回。
    • 该位为 1 时,服务器必须处理这个请求:如果服务器没有授权回答,它必须替客户端请求其他 DNS 服务器,这也是所谓的 递归查询;
    • 该位为 0 时,如果服务器没有授权回答,它就返回一个能够处理该查询的服务器列表给客户端,由客户端自己进行 迭代查询。
  • RA 位表示可递归 ( recursion available ),如果服务器支持递归查询,就会在应答中设置该位,以告知客户端。仅由应答报文使用。
  • zero 这三位未使用,固定为0。
  • rcode 表示返回码(reply code),用来返回应答状态,常用返回码:0表示无错误,2表示格式错误,3表示域名不存在。

3,问题数(question count )

占16位,表示后面问题节中的记录个数

4,应答资源记录数(answer count)

占16 位,表示答案节中的记录个数

5,授权资源记录数(authority record count)

占16 位,表示授权信息节中的记录个数

6,额外资源记录数(additional record count)

占16 位,表示额外信息节中的记录个数

7,查询问题

询问题部分由多个(question count)问题构成,每个问题的格式都相同,分为3个段:

  1. 查询名,以example.com为例,将被编码为7example3com0这13个字节。数字7表示后面example的长度,最后0则表示后面没跟任何字符,相当于一个结束符。单个字节最长可表示255大小,因此每一级域名的最大长度也是255。
  2. 查询类型(type)
  3. 查询类(class),通常为 1 ,表示 TCP/IP 互联网地址;

常用的查询类型如下:

查询类型名称代码含义
1A将域名解析到一个指定的IPV4的IP上。
2NS用来指定该域名由哪个DNS服务器来进行解析,类似于托管,将子域名交给其他DNS服务器解析。
5CNAME规范名称,可以将注册的不同域名都转到同一个规范名称上,由这个规范名称统一解析IP地址
15MX电子邮件交互
16TXT文本信息
28AAAA将域名解析到一个指定的IPV6的IP上。

8,应答

        该部分仅在应答报文中才有,由应答资源记录(answer resource record, answer RR)、授权资源记录(authority resource record, authority RR)和额外资源记录(additional resource record, additional RR)三部分构成,当然,并非每个应答报文都同时会包含这三部分,有的报文只包含其中一部分或两部分。这三部分均使用相同的格式,以应答资源记录为例,应答资源记录内部也是由answer count 个答案组成的,每个答案可分为6个段,前三个段与请求报文中的查询问题一节中的段落完全一致。

        DNS请求

        DNS响应

三:DNS工作原理

        域名解析流程,即:DNS 系统将域名解析为 IP 地址的过程。域名递归解析流程,即:从 DNS 系统中的根服务器开始向下递归多个相关 DNS 服务器并最终完成域名解析的流程。一个相对完整的流程如下图所示:

 需要注意的是域名的查询有两种方式,一种是递归查询和迭代查询。

  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
超 文本传输协议(HTTP)是一种为分布式,合作式,超媒体信息系统。它是一种通用的,无状态(stateless)的协议,除了应用于超文本传输外,它也 可以应用于诸如名称服务器和分布对象管理系统之类的系统,这可以通过扩展它的请求方法,错误代码和报头[47]来实现。HTTP的一个特点是数据表现形式 是可输入的和可协商性的,这就允许系统能被建立而独立于数据传输。 目录 1 引论 1.1 目的 1.2 要求 1.3 术语 1.4 总体操作 2 符号习惯和一般语法 2.1 扩充的BNF(扩充的 巴科斯-诺尔范式) 2.2基本规则 (basic rule) 3 协议参数 3.1 HTTP版本 3.2 统一资源标识符(URI) 3.2.1一般语法 3.2.2 http URL 3.2.3 URI 比较 3.3 日期/时间格式(Date/Time Formats) 3.3.1完整日期 (Full Date) 3.3.2 Delta Seconds 3.4 字符集 3.4.1丢失的字符集(Missing Charset) 3.5 内容编码(Content Codings) 3.6 传输编码 (Transfer Codings) 3.6.1块传输编码(Chunked Transfer Coding) 3.7 媒体类型(Media Type) 3.7.1规范化和文本缺省 (Canonicalization and Text Defaults) 3.7.2多部分类型(Multipart type) 3.8 产品标记 (product Tokens) 3.9 质量值(Quality Values) 3.10 语言标签 (Language Tags) 3.11 实体标签 (Entity Tags) 3.12 范围单位(Range Units) 4 HTTP消息 4.1 消息类型(Message Types) 4.2 消息头 (Message Headers) 4.3 消息主体 (Message Body) 4.4 消息的长度(Message Length) 4.5 常用头域(General Header Fields) 5 请求(Request) 5.1 请求行 (Request-Line) 5.1.1方法 (Method) 5.1.2请求URL(Request-URI) 5.2请求资源 (The Resource Identified by a Request) 5.3请求报头域 (Request Header Fields) 6 响应 (Response) 6.1 状态行 (Status-Line) 6.1.1状态码与原因短语 (Status Code and Reason Phrase) 7 实体(Entity) 7.1 实体报文域(Entity Header Fields) 7.2 实体主体(Entity Body) 7.2.1类型(Type) 7.2.2实体主体长度(Entity Length) 8 连接 8.1 持续连接(Persistent Connection)。 8.1.1目的 8.1.2总体操作 8.1.2.1 协商(Negotiation) 8.1.2.2 流水线(pilelining) 8.1.3代理服务器 (Proxy Servers) 8.1.4实际的考虑 (Practical Considerations) 8.2 消息传送要求(Message Transmission Requirements) 8.2.1持续连接与流量控制 (Persistent Connections and Flow Control) 8.2.2监视连接中出错状态的消息 8.2.3 100状态码的用途 8.2.4服务器过早关闭连接时客户端的行为 9 方法定义(Method Definitions) 9.1 安全和等幂(Idempotent)方法 9.1.1安全方法(Safe Methods) 9.1.2等幂方法(Idempotent Mehtods) 9.2 OPTIONS(选项) 9.3 GET 9.4 HEAD 9.5 POST 9.6 PUT 9.7 DELETE(删除) 9.8 TRACE 9.9 CONNECT(连接) 10.状态码定义 10.1 通知的 1xx 10.1.1 100 继续 (Continue) 10.1.2 101切换协议 (Switching Protocols) 10.2 成功 2xx 10.2.1 200 OK 10.2.2 201 已创建(Created) 10.2.3 202 接受(Accepted) 10.2.4 203 非权威信息(Non-Authoritative informatio
TCP/IP协议是目前互联网上最重要的通信协议之一,目录包括以下内容: 第一章:TCP/IP协议概述 介绍了TCP/IP协议的起源、发展、特点、应用领域和未来趋势等方面的内容。其中包括TCP/IP协议的体系结构、分层结构、传输机制和工作原理等内容。 第二章:IP协议详解 介绍了IP协议的地址分配、IP数据报的格式和传输机制,以及IP协议的特点和应用等方面的内容。其中包括IP地址、子网掩码、网关、路由表等基本概念和应用。 第三章:TCP协议详解 介绍了TCP协议的数据传输机制、连接建立过程、数据传输过程和连接关闭过程等方面的内容。其中包括TCP协议的流量控制、拥塞控制和错误恢复等基本机制和应用。 第四章:UDP协议详解 介绍了UDP协议的数据传输机制、特点和应用等方面的内容。其中包括UDP协议的简单传输机制、优点和缺点等基本概念和应用。 第五章:DNS协议详解 介绍了DNS协议的功能、域名解析过程和域名系统的结构等方面的内容。其中包括DNS协议的查询和响应过程,以及DNS服务器的分类和功能等基本概念和应用。 第六章:FTP协议详解 介绍了FTP协议的功能、工作原理、传输方式和常用命令等方面的内容。其中包括FTP协议的文件传输方式、连接建立过程和用户身份认证等基本概念和应用。 第七章:HTTP协议详解 介绍了HTTP协议的功能、特点、请求-应答模式和报文格式等方面的内容。其中包括HTTP协议的请求方法、响应状态码、实体头部和消息主体等基本概念和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ftzchina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值