DNS

Basic Functions of DNS

Nevertheless, the network itself only understands binary addresses

域名转换为IP地址

  • 提供域名和IP地址之间映射的分布式数据库
  • 应用层协议
  • ==UDP/TCP==:Port 53

image-20230411165658982

起初DNS数据存在txt:

flat structure

Centralized control

Not scalable

现在

image-20230411165808179

It is a query / response protocol running on top of UDP/TCP

with default port number 53

使用端口53

image-20230411165853964

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)是与特定名称相关联的数据

树形结构示意图

image-20220524234449167

第一层是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的全称

image-20230411170537933

资源记录 Resource Record

image-20220618223542695

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:资源数据

image-20230411171637671

image-20230411172346284

Name Servers

Name Server

  • 域名服务器是组成域数据库的信息存储库
  • 数据库被划分为称为zones(区域)的部分,这些区域分布在域名服务器中。
    • 区域可以是一个或多个域,甚至是一个子域
  • 每个域名服务器处理一个或多个区域。==域名服务器的基本任务是使用其区域中的数据回答查询==。
  • 域名服务器可以以简单的方式回答查询。响应总是可以仅使用本地数据生成,并且包含问题的答案或对“更接近”所需信息的其他名称服务器的引用
  • 给定的区域将对多个名称服务器可用,以确保其可用性。

Zones

  • ==Zone==对应于负责该层次结构部分的管理权限
  • Eg. BUPT 控制 x.bupt.edu.cn

image-20220525000312689

域(Domain)和区域(Zone)的区别

Zone是Domain中的一部分(一个域有多个区域),或者就是Domain(该域只有一个区域)image-20230411172551400

域名服务器的分类

  • 主服务器(Primary Server)/ 授权服务器(Authoritative Server)
    • 在其数据库中保存其管理的主机组的名称到地址映射
    • 知道标准答案
  • 次级服务器 (Secondary Server)
    • 主服务器数据库的镜像,也是official data
  • Caching server (Caching Server)
    • 向其他服务器请求DNS查询,但同时维护响应的缓存TTL
    • 关于树的其他部分的non-authoritative数据

域名解析器 Resolver

Name resolvers:DNS的用户端的叫法

  • 解析器是用户程序和域名服务器之间的接口
    • 解析器接收来自用户程序(如邮件程序、TELNET、FTP)的请求。
    • 代表应用程序向DNS系统询问问题
    • 返回数据给应用

image-20230411172758564

image-20230411172824302

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也找不到信息继续向下递归,直到找到答案
image-20220525001641142

Iterative Resolution(迭代解析)

一个服务器没有就回复另一个DNS服务器的地址(回复到resolver)

  • 本地名称服务器(代表解析器)然后查询该服务器(该服务器可能会响应另一个服务器的地址,以此类推)

  • 通常用于Internet上的域名服务器

image-20220526004648641

现实中两种方法一起使用

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地址的计算机的正确域名

image-20220524234449167

一个IP 59.64.166.200,查到域名:200.166.64.59.in-addr.arpa再根据此查到对应域名

Inverse query vs. Pointer query

相同点

  • 都是由IP地址查域名

不同点:

  • 逆查询使用与标准查询相同的域,可能需要搜索整个服务器集
  • 指针查询使用IN-ADDR.ARPA

DNS Message Format

image-20220525002750635

==查询响应消息,两者具有相同的消息格式==

  • 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。设置位0
    • rcode:返回码,4-bit,表示应答的状态。常用值有0(无错误),3(域名不存在)
  • Question count:16位字段,定义问题部分中条目的数量。
  • Answer count:16位字段,它定义了回答部分中资源记录的数量。
  • Authority count:16位字段,定义权限部分中名称服务器资源记录的数量。
  • Additional count:16位字段,定义附加记录部分中资源记录的数量。

Question Section

  • QUERY TYPE:用于指定查询类型的16位字段
    • A – Host address
    • MX – Mail exchanger for the domain
  • QUERY CLASS:用于指定查询类的16位字段
    • IN – Internet system
image-20220525003558871

Response Section:

Resource Record Format

image-20230411200321216

type field

Type 详解

  • SOA:Start Of Authority——标识域或区域,并设置一些参数
  • ==NS==:将域名映射到具有该域权威的计算机的域名
  • ==A==:将系统的域名映射到它的IP地址。如果一个系统(例如,一个路由器)有几个地址,那么每个地址将有一个单独的记录。
  • ==AAAA==:将系统域名映射到IPv6地址。如果一个系统(例如,一个路由器)有几个地址,那么每个地址将有一个单独的记录。
  • ==CHAME==:将别名映射到真正的规范名称
  • ==MX==:邮件交换器。标识将邮件转发到组织中的系统
  • ==PTR==:将IP地址映射为系统名。用于地址到名称文件。(反向映射)

image-20230411200756584

image-20230411201815209

image-20230411201842373

image-20230411202439456

DNS Tools

nslookup

image-20230411202827797

nslookup –query =

dig

image-20230411202958405