互联网应用笔记(六)
DNS
Basic Functions of DNS
Nevertheless, the network itself only understands binary addresses
域名转换为IP地址
- 提供域名和IP地址之间映射的分布式数据库
- 应用层协议
- ==UDP/TCP==:Port 53
起初DNS数据存在txt:
flat structure
Centralized control
Not scalable
现在
It is a query / response protocol running on top of UDP/TCP
with default port number 53
使用端口53
Elements Of DNS
◼ Domain namespace(命名空间) and resource records
◼ Name servers
◼ Name resolvers
◼ Protocol
Domain namespace and resource records
Domain namespace and resource records
- 域命名空间具有类似倒置==树的层次结构==
- ==RR==(Resource Record)是与特定名称相关联的数据
树形结构示意图
第一层是root
第二层是TOP
第三层是2nd
domains
树形结构的每个元素都被称为一个域
顶部是root domain,简称为
.
直接位于root domain之下的子域称为top-level domains
直接位于top-level domains之下的域称为second-level domains,依此类推
domain names
eg. www.bupt.edu.cn 就是一个域名
- 节点的域名是由点(
.
)分隔的从节点到root的路径上的标签列表。 - 从左到右读,左边层次最低,右边层次最高(离root越近)
- 不区分大小写
- 每一个component长度不能超过63个字符,完整路径名不能超过255个字符
The full name of a domain is also called its Fully Qualified Domain Name (FQDN)
是Domain Name的全称
资源记录 Resource Record
DNS中的每个域都有一个或多个资源记录(rr),它们是包含关于该域的信息的字段
每个RR包含以下信息:
- Owner:RR所在的域名
- Type:指定该RR中的资源类型
A
-主机IPv4地址,AAAA
-主机IPv6地址MX
-邮件交换器(Mail eXchanger)NS
- 域名服务器(Name Server)CNAME
- 定义域名的别名
- Class:指定要使用的协议族
IN
- the Internet System
- TTL:指定缓存rr的存活时间(以秒为单位)
- RDATA:资源数据
Name Servers
Name Server
- 域名服务器是组成域数据库的信息存储库。
- 数据库被划分为称为zones(区域)的部分,这些区域分布在域名服务器中。
- 区域可以是一个或多个域,甚至是一个子域
- 每个域名服务器处理一个或多个区域。==域名服务器的基本任务是使用其区域中的数据回答查询==。
- 域名服务器可以以简单的方式回答查询。响应总是可以仅使用本地数据生成,并且包含问题的答案或对“更接近”所需信息的其他名称服务器的引用。
- 给定的区域将对多个名称服务器可用,以确保其可用性。
Zones
- ==Zone==对应于负责该层次结构部分的管理权限
- Eg. BUPT 控制 x.bupt.edu.cn
域(Domain)和区域(Zone)的区别
Zone是Domain中的一部分(一个域有多个区域),或者就是Domain(该域只有一个区域)
域名服务器的分类
- 主服务器(Primary Server)/ 授权服务器(Authoritative Server)
- 在其数据库中保存其管理的主机组的名称到地址映射
- 知道标准答案
- 次级服务器 (Secondary Server)
- 主服务器数据库的镜像,也是official data
- Caching server (Caching Server)
- 向其他服务器请求DNS查询,但同时维护响应的缓存和TTL值
- 关于树的其他部分的non-authoritative数据
域名解析器 Resolver
Name resolvers:DNS的用户端的叫法
- 解析器是用户程序和域名服务器之间的接口
- 解析器接收来自用户程序(如邮件程序、TELNET、FTP)的请求。
- 代表应用程序向DNS系统询问问题
- 返回数据给应用
DNS Services
三种:
◼ Mapping domain name to addresses
◼ Inverse queries (optional)
◼ Pointer queries
域名到地址的映射
- 先问本地名称服务器(默认名称服务器)
- 如果本地服务器无法解析名称,则必须将查询发送到域系统中的另一个服务器
It can improve the query efficiency because most queries to name servers refer to local name
Recursive Resolution(递归解析 )
递归解析:(Recursive Resolution)由DNS代发下一个查询
- 如果被查询的服务器没有信息,它找到root,如果root也找不到信息继续向下递归,直到找到答案
Iterative Resolution(迭代解析)
一个服务器没有就回复另一个DNS服务器的地址(回复到resolver)
本地名称服务器(代表解析器)然后查询该服务器(该服务器可能会响应另一个服务器的地址,以此类推)
通常用于Internet上的域名服务器
现实中两种方法一起使用
caching mechanism to improve efficiency
◼ Caching at the name servers
◼ Caching at the hosts
top-level domain (TLD) server typically cached in local name servers
因此根名称服务器不常访问
Inverse Queries
==IP地址查域名==
特定资源映射到具有该资源的一个或多个域名
- 正常查询(==Standard Query==):将域名映射到资源
- 反向查询(==Inverse Query==):将资源映射到域名
- 可能要遍历整个DNS服务器
指针查询
另一种IP查域名的方法
Using IN-ADDR.ARPA domain for address to host mapping
◼ An IP address in dotted-decimal format is included in the query
查询的IP地址格式为点分十进制
◼ The correct domain name for the machine with the specific IP address
具有特定IP地址的计算机的正确域名
一个IP 59.64.166.200,查到域名:200.166.64.59.in-addr.arpa再根据此查到对应域名
Inverse query vs. Pointer query
相同点
- 都是由IP地址查域名
不同点:
- 逆查询使用与标准查询相同的域,可能需要搜索整个服务器集
- 指针查询使用IN-ADDR.ARPA域
DNS Message Format
==查询和响应消息,两者具有相同的消息格式==
ID
:用于关联查询和响应的16位字段。- 16位标志字段用于协商具体的通信方式和反馈通信状态。DNS报文头部的16位标志字段的细节如下表格所示:
QR
:查询/应答标志,1-bit。0表示这是一个查询报文,1表示这是一个应答报文。opcode
:定义查询和应答的类型,4-bit。0表示标准查询,1表示反向查询(通过IP地址获得主机域名),2表示请求服务器状态AA
:授权应答标志,1-bit。仅有应答报文使用。1表示域名服务器是授权服务器TC
:截断标志,1-bit。仅当DNS报文使用DNS服务时使用。因为UDP数据包有长度的限制,所以过长的DNS报文将被截断。1表示DNS报文超过512个字节,并被截断RD
:递归查询标志,1-bit。1表示执行递归查询,即如果目标DNS服务器无法解析某个主机名,则它将向其他DNS服务器继续查询,如此递归,直到获得结果,并把结果返回给客户端。0表示执行迭代查询,即如果目标DNS服务器无法解析某个主机名,则它将自己知道的其他DNS服务器的IP地址返回给客户端,以供客户端参考。RA
:允许递归标志,1-bit。仅由应答报文使用,1表示DNS服务器支持递归查询zero
:未使用位,长3-bit。设置位0rcode
:返回码,4-bit,表示应答的状态。常用值有0(无错误),3(域名不存在)
Question count
:16位字段,定义问题部分中条目的数量。Answer count
:16位字段,它定义了回答部分中资源记录的数量。Authority count
:16位字段,定义权限部分中名称服务器资源记录的数量。Additional count
:16位字段,定义附加记录部分中资源记录的数量。
Question Section
QUERY TYPE
:用于指定查询类型的16位字段A
– Host addressMX
– Mail exchanger for the domain
QUERY CLASS
:用于指定查询类的16位字段IN
– Internet system
Response Section:
Resource Record Format
type field
Type 详解
SOA
:Start Of Authority——标识域或区域,并设置一些参数- ==
NS
==:将域名映射到具有该域权威的计算机的域名 - ==
A
==:将系统的域名映射到它的IP地址。如果一个系统(例如,一个路由器)有几个地址,那么每个地址将有一个单独的记录。 - ==
AAAA
==:将系统域名映射到IPv6地址。如果一个系统(例如,一个路由器)有几个地址,那么每个地址将有一个单独的记录。 - ==
CHAME
==:将别名映射到真正的规范名称 - ==
MX
==:邮件交换器。标识将邮件转发到组织中的系统 - ==
PTR
==:将IP地址映射为系统名。用于地址到名称文件。(反向映射)
DNS Tools
nslookup
nslookup –query =
dig