DNS域名解析和域名解析系统

1、DNS命名空间

DNS使用的名称集合就叫命名空间,与计算计文件夹和文件系统类似,都是划分为层次且大小写不敏感,类似于树状结构

1、顶级域名(TLD)top-level-domain:命名空间树的最高层,包括4个顶级域名(通用顶级域名gTLD、国家代码顶级域名(ccTLD)、国际化国家代码顶级域名(IDN ccTLD)、基础设施顶级域名(infrastructure TLD)

  • 通用顶级域名(gTLD):包含不受限gTLD、受限gTLD、赞助gTLD三类:

  • 国家代码顶级域名(ccTLD):用只能两个字母的国家代码作为顶级域名(如.us、.cn等)

  • 国际化国家代码顶级域名(IDN ccTLD):用各国语言表示的国家顶级域名(如.中国等)

  • 基础设施顶级域名(infrastructure TLD):arpa(只有一个)

2、DNS命名语法

  • 子域名(subdomain):DNS名称树中TLD以下的名称进一步划分成

  • 完全限定域名(FQDN):带有后随点,表示该名称是完整的,当进行域名解析时,没有额外的信息添加到该名称(如www.baidu.com.)后随点也可以省略
  • 非限定域名(UQDN):与系统配置中的默认域名结合,会在域名后面添加一个或者多个默认域名,称为域名拓展(例如在配置了默认域名cs.berkeley.edu的主机上输入vangogh,本地DNS解析器软件就会将这个名称自动转换为vangogh.cs.berkeley.edu来解析)
  • 每个子域名标签最多可达到63个字符长,整个FQDN最多255个字符长
  • DNS名称空间的层次结构允许不同的管理机构管理名称空间的不同部分(如创建DNS名称elevator.cs.berkeley.edu只用与cs.berkeley.edu的拥有者协商即可,而不需要询问berkeley.edu和edu的拥有者

2、名称服务器(Name Server)和区域zone

  • 域名解析服务器(name Servers/DNS Server ):分布式系统主要工作是提供域名-IP地址之间的映射,每个DNS区域至少有两台域名解析器(主DNS服务器和辅DNS服务器,主DNS服务器将区域数据库保存在磁盘文件中,辅服务器作为备份服务器会定期与主DNS服务器通讯确保,它的区域信息保持更新)
  • 区域(Zone):每台DNS服务器完成解析的最小单元叫做域(即每一个子域名就是一个域),每个DNS可以解析一个或者多个域每个域名都存在于某个区域中,即使是顶级域名也存在于根区域(root zone)中,每个区域可以独立管理而不受其他区域影响。当一条新记录添加到区域中时,该区域的DNS管理员为该新条目分配一个名称和附加信息(IP地址),并将这些信息保持到名称服务器的数据库中。
  • 授权(delegation)DNS服务器管理的区域被访问到以提供该名称的信息称为授权
    - 区域传输(zone transfer):辅DNS服务器从主DNS服务器获取区域内容的过程
  • 根域名服务器(root servers):用于管理互联网的主目录,储存了负责每个顶级域名服务器的地址信息(全球共有13个根域名服务器,从A到M命名,其中有9个有IPv6信息)
  • 通用顶级域名服务器:用于扩展包括COM和NET在内的一些较大的gTLD(全球有13台gTLD服务器也是从A到M命名,其中有2台有IPv6记录。

3、返回DNS查询信息的来源

DNS信息的三个主要来源渠道:

  • 权威服务器(authoritative server):直接来自于该负责该区域的DNS服务器的区域数据库
  • 来自从属服务器的区域传输结果
  • 来自某台DNS服务器的缓存。大部分DNS服务器(除了一些根域名服务器)都缓存他们学习的区域信息,知道缓存时限(TTL)超时会删除缓存,使用缓存DNS条目信息可以大大减少DNS消息的流量,DNS服务器会指明返回信息是来自缓存还是区域授权副本,如果是缓存则会包含权威服务器的域名信息

4、DNS缓存

大部分DNS服务器(除了一些根域名服务器)都缓存他们学习的区域信息,知道缓存时限(TTL)超时会删除缓存。每个DNS记录有自己的TTL以控制其缓存的时间,TTL指明了DNS中一个映射在任何地方能够被缓存的时间,这些TTL值在必要时由区域管理源设置和更改

(如果一个区域变化了,网络中仍然可能存在缓存的数据,这就可能导致不正确的DNS解析,直到TTL失效。出于这个原因,一些想要改变区域内容的区域管理员会在实施这些更改之前先减少TTL的值以减少网络中存在不正确的缓存数据存在时间。)

现在pc中,客户端可以保存缓存,并允许同一系统上运行的所有应用程序使用该缓存,在Windows中是默认开启的,在Linux中是可以启用或禁止的服务


5、DNS协议

DNS协议分为两个部分:用于执行对DNS特定查询的查询/响应协议和名称服务器用于交换数据库记录的区域传输协议

1、DNS消息格式



  • DNS Message 一般被封装在UDP/IPv4中传递发送,端口号:53(TCP端口号也是53),且被限定为512个字节(不包括UDP/IPv4头),如果回复DNS信息大于512字节会被截断,主机需要再次发送TCP/IPv4的DNS去巡查(TCP/IPv4封装的DNS信息可以大于512字节)
  • 除了(问题)区段,其他区段都包含一个或多个资源记录(Resource Record),问题区段包含一个数据项,其结构于RR相近,RR可以被缓存,而问题则不能。
  • 事务ID字段由客户端设置,由服务器返回,客户端使用事务ID字段来匹配响应和查询
  • RD标志(期待递归)是由客户端设置的,如果设置为0,则查询服务器不执行递归操作,当查询服务器没有DNS消息时会返回一个可以联系获得回答的其他名称服务器的列表,客户端通过逐个联系服务器列表来继续,称为迭代查询
  • RA标志(递归可用)是由名称服务器设置的,根域名服务器不支持递归可用

2、DNS查询/响应协议

通过每个站点或ISP本地部署服务器和一组特殊的根服务器构成DNS分布式式基础设施用来支持DNS查询/响应操作

  • 在命令行查询DNS

3、DNS区域传输协议


6、排序列表、循环和分离DNS

  • DNS排序列表:一个域名对应多个IP地址时(如多宿主计算机),将前缀与请求IP相近的返回实现就近原则
  • 轮询(Round-Robin ):一个域名对应多个IP地址时(多宿主计算机),DNS服务器将解析结果按照A记录的顺序逐一返回给不同的请求IP,这样达到负载均衡
  • 分离DNS:根据客户端的IP来差别返回结果,如公司的内网主机查询服务器时可以返回整个公司的DNS数据库,但是外网主机访问name服务器时只返回DMZ区域的DNS数据库

7、开放的DNS服务器和动态DNS服务器

  • 动态DNS服务器(DDNS):将用户的动态IP地址映射到一个固定的域名服务器上,每次用户联网时客户端就会把该主机的动态IP传送给服务商主机上的域名服务器程序

8、DNS逆向查询

反向查询:通过Ip地址来查询域名


9、从IPv4向IPv6转换DNS


10、本地链路组播地址解析(LLMNR)

当DNS服务器不能用时,通过发送UDP组播查询数据报来查询域名对应的
IP地址,当链路范围内支持LLMNR并配置为相应传入的查询的主机收到请求后,会将域名与自己的进行配比,
匹配的主机会回传一条包含自己IP地址的单播信息给查询的主机

你可能感兴趣的:(tcp\ip)