互联网应用笔记(六)
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




