数据通信与网络:CH25 Domain Name System

CH25 Domain Name System

在Internet的应用层中,许多应用都遵循客户机client/服务器server模式。客户端/服务器应用程序分为两类:

  • 一种可以直接被用户使用:e-mail
  • 支持其他应用程序的应用程序:DNS

DNS是一种支持程序

image-20211224085950473

TCP/IP使用IP唯一确定一台主机到因特网的连接。名字比IP更容易记忆。需要实现名字到地址或者地址到名字的映射系统。

map name to a address or map address to a name

因特网发展初期,使用**主机文件(host file)**实现映射。

host file构成

  • 一列是名字
  • 一列是地址

每台主机主机文件存储在磁盘中,并以一个标准主机文件为依据,定期进行更新。当程序或者用户需要将某一名字映射到一个地址时,主机就查询主机文件。

问题:

  • 主机文件太大,无法存储在每一台计算机中
  • 每次发生变化时,无法更新世界上的所有主机

解决:

  • 方案1:存储在一台单独的主机上,允许每一台需要映射的计算机访问这个集中化的信息。

    • 缺点:造成较大的通信量
  • 方案2:将巨大的信息分成很多很小的部分,每一部分存储在不同的计算机中。

    需要映射的计算机可以寻找最近的一台持有信息的计算机。

25.1 Name Space

分配给机器的名字必须从名字空间name space 中选择。

【IP地址唯一】----->【名字唯一】

Name Space按两种方式进行组织:
{ F l a t H i e r a r c h i c a l \begin{cases}Flat\\Hierarchical\end{cases} {FlatHierarchical

25.1.1 Flat Name Space

一个名字分配个一个地址,空间中的名字是一个无结构的字符序列 a sequence of characters without structure。名字之间也可能没有公共部分;即使有公共部分,也没有实际含义。

缺点:

  • 必须集中控制才能避免二义性和重复性

25.1.2 Hierarchical Name Space

名 字 的 组 成 { p a r t 1 : 组 织 的 性 质 p a r t 2 : 组 织 的 名 字 p a r t 3 : 组 织 的 部 门 . . . . . . . 名字的组成\begin{cases}part1:组织的性质\\part2:组织的名字\\part3:组织的部门\\.......\end{cases} part1part2:part3:.......

分配和控制名字的机构可以分散化decentralied

组织的性质和名字可以由中央组织定义,其他部分的分配可以交给这个组织自身。

25.2 Domain Name Space

为了获得层次结构名字空间,设计了Domain Name Space。所有的名字由根在顶部的倒置的树结构定义:

树最多有128级:0级~127级

image-20211224095359363
25.2.1 Label

树上的每一个节点有一个label,label最多为63个字符。根节点的标号是一个空字符串null

DNS要求同一节点分出来的子节点有不同的label:确保名字的唯一性。

image-20211224095614899
25.2.2 Domain Name

每一个节点都有一个域名。

一个全的domain name是用.分割的标识号序列。

domain name总是从节点向上读到根节点。最后一个标号是根节点的标号。这表示一个完全的域名总是以一个空标号结束,即最后一个字符是.

(1)Fully Quanlified Domain Name

如果一个label以空字符串结束,那么他就是全称域名full quanlified domain name

却称名包含一台主机的所有名字的域名。它包含所有的标号,从最具体的标号到最一般的标号,能唯一定义一台主机的名字,如:

challenger.act.fhda.edu.

是一个全称域名。

(2)Partially Qualified Domain Name

如果一个域名不是以空字符串结束,那么称为部分域名partially Qualified Domain Name

image-20211224100843498

当这个需要解析的名字属于和客户端相同的站点same site时,使用部分域名。解析程序能提供省略的部分,称为后缀suffix,以创建FQDN。

25.2.3 Domain

domain是域名空间的一棵子树。

域的名字是树顶部节点的域名

一个域本身也可以划分为多个域,即子域subdomain

image-20211224101910573

25.3 Distribution Of Name Space

一台计算机存储的问题:

  • 通信量大
  • 不安全

25.3.1 Heriarchy of Name Servers名字服务器的层次结构

将信息分布在多台称为DNS服务器(DNS server)的计算机中。

一种方法:将整个空间划分为基于第一级的域,并进一步划分为更小的subdomain。

每一台服务器对一个大的域或者较小的域是负责的

与建立名字的层次结构一样,也建立了服务器的层次结构

image-20211224103044499

25.3.2 Zone

一个服务器responsible或者has authority的范围称为一个Zone。

Zone和Domain的区别:

  • 如果一个服务器负责一个域,并且这个域没有被划分更小的subdomain,那么此时domain和zone是相同的。
  • 如果被划分为更小的subdomain
    • 子节点的信息会放在更低层次的服务器中
    • 原来的服务器只保存这些较低服务器的某种参照
image-20211224103718231

25.3.3 Root Server

Root Server:whose ZONE consists of the whole tree

根服务器通常不保存关于域的任何信息,只是将其授权给其他的服务器,并保存这些服务器的参照关系。

目前有多个根服务器,每一台都覆盖了整个域名空间, 这些服务器分布在世界各地。

25.3.4 Primary Server Versus Secondary Server

D N S 定 义 了 服 务 器 类 型 { primary server secondary server DNS定义了服务器类型\begin{cases}\text{primary server}\\\text{secondary server}\end{cases} DNS{primary serversecondary server

  • primary server:存储了授权区域有关文件的服务器,它负责创建creating、维护maintaining和更新updating区域文件,并将区域文件存储在本地磁盘中。

  • **secondary server:**从一个服务器(主服务器或者是辅服务器)传输transfer一个区域的全部信息,并将文件存储在它的本地磁盘中。辅助服务器既不创建也不更新区域文件。如果需要更新,那么必须是由主服务器完成,由主服务器发送到辅助服务器。

一台服务器可能是某个特定区域的主服务器,也可能是别的区域的辅服务器。

  • 主服务器能够从磁盘文件中装载所有信息,辅助服务器从主服务器中装载信息。

  • 当辅助服务器从主服务器中下载信息时,这称为区域的传递。【辅服务器作为备份】

25.4 DNS IN THE INTERNET

域名空间被划分为三个部分:
D o m a i n   n a m e   s p a c e { G e n e r i c   d o m a i n s I n v e r s e   d o m a i n c o u n t r y   d o m a i n s Domain\ name \ space\begin{cases}Generic\ domains\\Inverse \ domain\\country\ domains\end{cases} Domain name spaceGeneric domainsInverse domaincountry domains

25.4.1 Generic Domains

Generic domain:按照已经注册主机的一般行为对主机进行定义。

树中的每一个节点定义一个域,他是域名空间数据库的一个索引。

image-20211224110531103 image-20211224110544448

25.4.2 country domain

country domain使用两个字母的国家缩写,如us代表美国,第二级Label是组织机构,如州。

image-20211224110830028

24.5.3 Inverse domain

inverse domian用于将地址映射为名字。

应用:反向或者指针PTR查询。

image-20211224111223498

25.5 RESOLUTION

name-address resolution:将名字映射为地址或者将地址映射为名字

25.5.1 Resolver解析程序

DNS是一个客户机/服务器应用程序,需要将地址—>名字或者名字—>地址时需要调用一个解析程序resolver的DNS服务程序。

resolver用一个映射访问最近的一个DNS服务器,然后进行递归解析或者迭代解析。

25.5.2 Mapping Names to Address

名字到地址的映射:DNS服务器检查通用域或者国家与查找相应的映射

25.5.3 Mapping Address to Names

地址到名字的映射:DNS服务器进行PTR查询,使用inverse domian。

IP地址必须反过来,并将in-addr和arpa两个标号附加在最后,以创建反向域能够接收的域。

25.5.4 Recursive Resolution

客户端解析程序从名字服务器中请求递归应答的方式:

  • 如果服务器是这一域名的授权服务器,他会检查数据库并做出相应
  • 不是授权服务器,通常会发给父服务器,并等待响应。
  • …一直迭代向上…直到找到
  • 找到后迭代返回
image-20211224114151069

25.5.5 Iterative Resolution

客户端解析程序从名字服务器中没有请求递归应答,那么映射可以以迭代的形式进行

  • 如果服务器时该名字的授权服务器,那么发送应答
  • 不是,它返回那个他认为可以解析该查询的服务器地址
image-20211224114616321

25.5.6 Caching

服务器向另一个服务器请求映射并得到回应时,将回应发送回客户端之前,先将信息存储在高速缓存中。

下次查询时通过高速缓存解决问题。但是通知这个响应来自高速缓存而非授权信息。

高速缓存存在问题:

  • 映射过期

解决方式:

  • TTL信息添加在映射上,TTL定义了服务器可以将信息放入高速缓存的时间,超时后该信息无效
  • 每一台服务器对每一个映射保留一个TTL计数器。高速缓存定期检查,清除TTL已经过期的映射

25.6 DNS Message

D N S 报 文 { q u e r y r e s p o n s e DNS报文\begin{cases}query\\response\end{cases} DNS{queryresponse

查询报文和相应报文的格式如下:

image-20211224115147138

25.6.1 Header

头部在查询报文和响应报文中格式相同,查询报文头部某些字段设置为0:

image-20211224120439269
  • identification:匹配对查询的相应,每次查询会使用不同的标识,响应时使用同一个标识
  • flags:定义了报文的类型,相应的类型,期望的解析类型(迭代或者递归)
  • number of question records:询问部分请求的数量
  • number of answer records:应答记录数量
  • number of authoritative records:授权部分
  • additional records:附加记录数

25.6.2 Question Section

一条或者多条询问记录。查询和响应的报文都有这一部分

25.6.3 Answer Section

一条或者多条询问记录组成。仅存在于应答报文中。

25.6.4 Authoritative Section

给出用于查询的一台或者多台服务器的域名(信息)

25.6.5 Additional section

一条或者多条资源记录构成,仅存在于响应报文中。

25.7 Types of Records 记录的类型

25.7.1 question record

客户机使用询问记录从服务器获取信息,包含了域名

25.7.2 resource record

每一个域名都有一个资源记录,服务器数据库包含了所有的资源记录。

25.8 register 注册机构

新的域名的假如通过注册机构(registrar)来完成的, 一个熟知的商业实体是ICANN(因特网名字和编号分配组织)。注册机构首先确认询问的域名是唯一的,然后将它输入到DNS数据库中,这是需要收费的。

25.9 Dynamic Domain Name System 动态域名系统

DNS主文件必须能动态更新动态域名系统 Dynamic Domain Name System (DDNS) 就是为了满足这种需求而设计的。

在DDNS中,当名字和地址之间的绑定确定时,通常由DHCP给主DNS服务器发送这种信息,主服务器更新这一区域

通知辅助服务器的方法可以:

  • 主动方式
  • 被动方式
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Blanche117

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

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

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

打赏作者

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

抵扣说明:

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

余额充值