DNS原理概念详解

简介:

【基础概念】

1 不讲dns的历史,只讲现如今已经存在dns,和如何使用dns

dns: domain name server (名称服务器)  常用做域名的翻译器

很多场景要用到名称服务器

如: ssh shop-web01.beta

首先ssh 协议要调用dns解析的库(解析器),然后把解析出来的IP地址,发起ssh连接!

还有ftp软件等等

应用模型如下图:


wKiom1c8Z9DyJLH0AACyRXTtNy8098.png

【 名称服务器中的名词解释有(很难理解)】

名称服务器: nameserver 存储域命名空间信息的程序

域命名空间: 就是那颗倒树(如图)

域名:FQDN 完全限定域名 

域: domain 命令空间中的一颗子树 sjtu.edu.cn 就像linux目录中的目录

子域: 就像linux目录中还有目录一样,即子目录

资源记录: 数据类c(lass) 如A记录,提供查询的条目

授权: 设计域名系统的目录就是分散管理,授权就是实现的手段。 

区域: zone 紧紧是某个一集体的完整信息。也就是一个文件,区域的内容是从文件或者另外一个名称服务器加载而来的。加载过来后,该名称服务器就可对外宣称对该区域具有权威。

master slave 名称服务器

区域传送: master——> slave

区域文件: zone file (zone file 从主 区域传送到slave)

root名称服务器(全球有13个逻辑服务器)

解析器: reslover 就是访问名称服务器的客户端程序(提供发起查询和接受响应的功能)

解析: 从域命名空间中检索数据

递归

迭代

缓存(可定都是存在内存的) window下清理  ipconfig /flushdns命令  查看: ifconfig /displaydns  显示dns的缓存,而在linux下  dns客户端在Unix下,DNS客户端只是几个例程,负责转发和接受查询的功能,并不缓存。

参考:

http://my.oschina.net/lenglingx/blog/425020

wKiom1c8aA6TJLNcAAJ8_CDCi74046.png


生存时间TTL: 缓存的时间

地址到名称的映射: 一般都是公司内部DNS用,和以前的域名生效,美国的一些早期域名!

DNS的构造也是向linux的目录一样的树状

root目录 

顶级域(一级域)

二级域(不要说成二级域名)

子域



wKiom1c8aDSQa0LuAAA3eZ_6Ix4371.png



注意:

1 域名名空间要求,同一个父节点下的兄弟节点不能有相同的标签(和linux统一目录下不能有两个一样文件名)

2 树种每个节点都有一个标签(不超过63 位,且不包括 . 号的), 空标签是为 root保留的!

3 域名是 从节点本身开始,沿着路径一直读到root,并用 “ .” 来分隔

4 www.stju.edu.cn.    其实是(www.stju.edu.cn.“ ”)  最后一个点号后面其实是个空标签

5 向这种绝对域名有时被被称为完全限定域名 FQDN

6 顶级域是root的子域,二级域是顶级域的子域

7 一条资源记录

ftp.stju.edu.cn.  IN  A  202.120.58.157

解释其中的 IN 和 A

 IN表示的是使用Internet(任何基于TCP/IP 的internet),当然还有其他的老式协议网络类,如Chaosnet协议的网络类,使用Hesiod软件的网络类。但我们看到的都将是IN

A是一种记录type类型,A表示名称到地址的映射 还有其他的type 如{SOA| NS | PTR| Other| CNAME}

8 授权: 和DNS查询原理理解在一起比较容易理解。

比如: 交通大学这个域中sjtu.edu.cn 下面的 ftp.sjtu.edu.cn. www.sjtu.edu.cn. bbs.sjtu.edu.cn.  这些该怎么设定,交通大学的这个组织可行管理和上一级edu.cn. 这个域无关!  edu.cn 这个域只关心 我有一个指针到你那里(访问sjtu.edu.cn  这个域的东西, 一律发到我执行的 那台或多台 交通大学组织的DNS名称解析服务器)。

9. 域和区域:


wKioL1c8aWLyUxSgAABZ7FCm_iI300.png


wKioL1c8aWLB5egZAABmQz59i9E759.png



wKiom1c8aHmAeDT8AACgi6v_5mo215.png




区分迭代和递归的区别

迭代的效果: 就是如向root查询ftp.stju.edu.cn 返回的值第一次是 你去查询cn吧,在发请求到cn时,返回的值有迭代到了 你去请求edu吧。。。。一次迭代下去!

for i in a,b,c,d:

print i

递归: 就是我给你 解析器给本地dns发的递归请求,你本地服务器一定要给我最终答案(能找到或者找不到),不管是何种办法给我返回! 你都要递归出来

地址到名称的映射:

在Internet域命名空间中,就是in-addr.arpa域

如谷歌 nslookup 216.58.221.68

反向解析的结果

68.221.58.216.in-addr.arpaname = hkg08s14-in-f4.1e100.net.

原理图是:

读法也是从叶子节点到根节点!



wKioL1c8aanT3OvlAACJ6EXQSwQ521.png



缓存:

1 linux 下dns客户端 和 window不一样,linux下客户端默认不缓存 除非有 nscd软件安装了。 service nscd {restart,reload}清缓存,缓存只是名称服务器做的事情!名称服务器会进行缓存

2 TTL参数来设置dns默认的缓存时间,但要记住是你解析的域名在别人dns中缓存的时间

比如: 你在学校内部 访问www.baidu.com 那么这个www.baidu.com. 域名的缓存,将是停留在 你学校的DNS名称服务器上的(缓存时间是baidu.com这个域的TTL值决定的)













#####################   ######################################

参考:

http://www.zytrax.com/books/dns/ch7/xfer.html#allow-update




allow-query: 允许哪些IP客户端进行查询使用DNS服务; 一般是是:  allow-query     { any; };

allow-transfer  如果有辅助DNS,是否充许的IP列表(slave DNS)可以同步zone文件,The default behaviour is to allow zone transfers to any host。如: allow-transfer  { 10.10.100.22; 222.73.117.198; 21.32.2.181; 21.32.2.182; 21.32.2.183; 21.32.2.184; 10.10.100.201; };


also-notify   只有master端配置, 修改配置后主动给slave发送NOTIFY消息  also-notify     { 10.10.100.22; 222.73.117.198; 21.32.2.181; 21.32.2.182; 21.32.2.183; 21.32.2.184; 10.10.100.201; };


allow-update  allow-update 只在zone中定义 指定哪些主机允许为主域名服务器提交动态 DNS 更新。默认为拒绝任何主机进行更新。


allow-update {key "update-key";};  或者  allow-update {10.0.1.2;}; // DDNS this host only 




下面一般不需要的配置:

allow-notify: slave端配置, 控制允许发送NOTIFY消息的master, 默认是 master 里配置的ip列表

notify: master和slave都可以配置, 默认是yes, 当配置修改后, 就会发送NOTIFY消息给zone文件里配置的NS和also-notify里的ip列表


notify-source: 默认是*, 表示当前的主机ip, 可以指定某个ip和port, ip必须在slave的master中包含




allow-update { address_match_list };

allow-update { !172.22.0.0/16;};

allow-update defines an address_match_list of hosts that are allowed to submit dynamic updates for master zones, and thus this statement enables Dynamic DNS. The default in BIND 9 is to disallow updates from all hosts, that is, DDNS is disabled by default. This statement is mutually exclusive with update-policy and applies to master zones only. The example shows DDNS for three zones: the first disables DDNS explicitly, the second uses an IP-based list, and the third references a key clause. The allow-update in the first zone clause could have been omitted since it is the default behavior. Many people like to be cautious in case the default mode changes.


// named.conf fragment

// key clause is shown only for illustration and would

// normally be included in the named.conf file

key "update-key" {

    ....

};

....

zone "example.net" in{

    type master;

    allow-update {none;}; // no DDNS by default

    ....

};

....

zone "example.com" in{

....type master;

    allow-update {10.0.1.2;}; // DDNS this host only

    ....

};

zone "example.org" in{

    type master;

    allow-update {key "update-key";};

    ....

};

In the example.org zone, the reference to the key clause "update-key" implies that the application that performs the update, say nsupdate, is using TSIG and must also have the same shared secret with the same key-name. This statement may be used in a zone, view or an options clause.

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1774662如需转载请自行联系原作者


cuizhiliang

相关文章
|
3月前
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
2月前
|
存储 JSON 数据格式
ElasticSearch基础概念解析
以上就是ElasticSearch的基础概念。理解了这些概念,你就可以更好地使用ElasticSearch,像使用超级放大镜一样,在数据海洋中找到你需要的珍珠。
133 71
|
5月前
|
存储 缓存 算法
HashMap深度解析:从原理到实战
HashMap,作为Java集合框架中的一个核心组件,以其高效的键值对存储和检索机制,在软件开发中扮演着举足轻重的角色。作为一名资深的AI工程师,深入理解HashMap的原理、历史、业务场景以及实战应用,对于提升数据处理和算法实现的效率至关重要。本文将通过手绘结构图、流程图,结合Java代码示例,全方位解析HashMap,帮助读者从理论到实践全面掌握这一关键技术。
164 14
|
6月前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
239 3
|
2月前
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
290 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
2月前
|
机器学习/深度学习 缓存 自然语言处理
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
Tiktokenizer 是一款现代分词工具,旨在高效、智能地将文本转换为机器可处理的离散单元(token)。它不仅超越了传统的空格分割和正则表达式匹配方法,还结合了上下文感知能力,适应复杂语言结构。Tiktokenizer 的核心特性包括自适应 token 分割、高效编码能力和出色的可扩展性,使其适用于从聊天机器人到大规模文本分析等多种应用场景。通过模块化设计,Tiktokenizer 确保了代码的可重用性和维护性,并在分词精度、处理效率和灵活性方面表现出色。此外,它支持多语言处理、表情符号识别和领域特定文本处理,能够应对各种复杂的文本输入需求。
274 6
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
|
2月前
|
传感器 人工智能 监控
反向寻车系统怎么做?基本原理与系统组成解析
本文通过反向寻车系统的核心组成部分与技术分析,阐述反向寻车系统的工作原理,适用于适用于商场停车场、医院停车场及火车站停车场等。如需获取智慧停车场反向寻车技术方案前往文章最下方获取,如有项目合作及技术交流欢迎私信作者。
154 2
|
3月前
|
机器学习/深度学习 算法 数据挖掘
解析静态代理IP改善游戏体验的原理
静态代理IP通过提高网络稳定性和降低延迟,优化游戏体验。具体表现在加快游戏网络速度、实时玩家数据分析、优化游戏设计、简化更新流程、维护网络稳定性、提高连接可靠性、支持地区特性及提升访问速度等方面,确保更流畅、高效的游戏体验。
117 22
解析静态代理IP改善游戏体验的原理
|
3月前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
239 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
3月前
|
Java 数据库 开发者
详细介绍SpringBoot启动流程及配置类解析原理
通过对 Spring Boot 启动流程及配置类解析原理的深入分析,我们可以看到 Spring Boot 在启动时的灵活性和可扩展性。理解这些机制不仅有助于开发者更好地使用 Spring Boot 进行应用开发,还能够在面对问题时,迅速定位和解决问题。希望本文能为您在 Spring Boot 开发过程中提供有效的指导和帮助。
151 12

相关产品

  • 云解析DNS
  • 推荐镜像

    更多