小阿轩-云计算·DNS资料

一、DNS简介

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符

用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。

二、DNS工作原理

  1. 客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
  2. 本地的域名服务器首先查询本地的缓存,如果缓存中有该纪录项,则直接把查询的结果返回。
  3. 如果缓存中没有该纪录,本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
  4. 本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
  5. 重复第4步,直到找到正确的纪录。
  6. 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

此外,DNS采用树状结构,最顶层为根域,"."来表示,相应服务器为跟服务器,整个域名空间解析权都归跟服务器所有。但跟服务器无法承担庞大的负载,采用“委派”机制,在根域下设置了一些顶级域,然后将不通顶级域的解析权分别委派给相应的顶级域服务器,同样的道理,为减轻顶级域的压力,又下了若干个二级域,二级域下面又设置三级域。

三、域名系统

1、为什么要有域名

TCP/IP是通过IP地址确定通信对象,如果直接使用IP地址。一方面不利于人类记忆另一方面对于互联网的传输效率来说IP地址只需要4字节,而域名可能有几十个字节,并且不是定长的。

2、域名空间结构

域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。

根域:DNS域名使用中规定由尾部句点’.'来指定名称位于根或者更高层次的域层次结构。

顶级域:用来指示某个国家、地区或者组织。采用三个字符,如com -> 商业公司,edu -> 教育机构,net -> 网络公司,gov -> 非军事政府机构等等。

二级域:个人或者组织在Internet使用的注册名称。采用两个字符,如:cn -> 代表中国,jp -> 日本,uk -> 英国,hk -> 香港等等。

主机:主机名处于域名空间结构中的最底层,主机名和域名结合构成FQDN,主机名是FQDN最左端的部分。

3、DNS解析

解析是一种将域名转换为IP地址的服务,使人们能够通过易于记忆的域名访问互联网上的网站和资源。以下是关于DNS解析的详细介绍:

  • DNS解析的基本原理。DNS系统包括根域服务器顶级域名服务器权威域名服务器本地域名服务器等不同类型的服务器。客户端首先向本地域名服务器查询域名对应的IP地址,如果本地域名服务器无法提供答案,它会向根域服务器发起查询,这个过程可能包括迭代查询和递归查询。迭代查询涉及从根域服务器开始,逐步查询到目标域名的顶级域名服务器、二级域名服务器,直到找到目标IP地址;递归查询则是由客户端直接询问根域服务器,由根域服务器将解析过程委托给其他服务器,并将结果直接返回给客户端。
  • DNS解析的作用。DNS解析不仅提高了域名访问的效率,还保障了域名解析的稳定性。即使单个域名服务器出现故障,也不会影响整个DNS系统的正常运行。
  • DNS解析的其他功能。智能DNS策略解析可以智能地判断访问者的来源,并根据不同的访问者将域名解析成不同的IP地址,实现就近访问机制和负载均衡。

四、DNS服务器

运行DNS 服务器程序的计算机,储存DNS 数据库信息.DNS 服务器会尝试解析客户机的查询请求.

在解答查询时,如果DNS 服务器能提供所请求的信息,就直接回应解析结果,如果该DNS 服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法均失败,则回应客户机没有所请求的信息或请求的信息不存在。

五、DNS缓存

DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存.当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。

六、DNS中查询的方式

  • 本地查询。在本地DNS服务器上进行查询,一般用于缓存查询结果,提高查询速度。
  • 远程查询。向远程DNS服务器发出查询请求,查询该服务器所具备域名解析能力的范围。
  • 递归查询。客户端向DNS服务器发送一个查询请求,DNS服务器会负责查询所有相关的DNS记录,直到找到所需的结果并返回给客户端。
  • 迭代查询。客户端向DNS服务器发送一个查询请求,DNS服务器只返回它所知道的查询结果或者其他可用的DNS服务器的地址,然后客户端继续向新的DNS服务器发送查询请求,直到找到所需的结果。
  • 反向查询。根据一个IP地址查询对应的域名,通常用于确定IP地址的真实身份或跟踪IP地址的拥有者信息。
  • 正向查询。通过域名查找IP地址,这是互联网中最常用的查询方式。
  • 区域查询。查询的范围是一定的局域内,如公司内部,可以提高DNS查询效率,减少请求时的网络流量和延迟。
  • 全局查询。查询的范围是全球,适用于需要全球范围内解析域名的场景。

七、DNS的获取流程

DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为IP地址。
具体过程如下:
①用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了。
②浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如http://www.baidu.com/,并将这个主机名传送给DNS应用的客户端。
③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作)。
④该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址。
⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接。

八、DNS服务的体系架构

DNS服务的作用:把域名解析为IP地址,将IP地址解析为域名。
假设运行在用户主机上的某些应用程序(如Webl浏览器或者邮件阅读器)需要将主机名转换为IP地址。这些应用程序将调用DNS的客户机端,并指明需要被转换的主机名。(在很多基于UNIX的机器上,应用程序为了执行这种转换需要调用函数gethostbyname())。用户主机的DNS客户端接收到后,向网络中发送一个DNS查询报文。所有DNS请求和回答报文使用的UDP数据报经过端口53发送(至于为什么使用UDP,请参看为什么域名根服务器只能有13台呢? - 郭无心的回答)经过若干ms到若干s的延时后,用户主机上的DNS客户端接收到一个提供所希望映射的DNS回答报文。这个查询结果则被传递到调用DNS的应用程序。因此,从用户主机上调用应用程序的角度看,DNS是一个提供简单、直接的转换服务的黑盒子。但事实上,实现这个服务的黑盒子非常复杂,它由分布于全球的大量DNS服务器以及定义了DNS服务器与查询主机通信方式的应用层协议组成。

  • 28
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
docker run --dns 选项的作用是指定容器使用的 DNS 服务器。通过该选项,我们可以在创建容器时指定一个或多个 DNS 服务器的 IP 地址。 在上面的引用中,引用提供了关于配置 DNS 的方法。你可以使用 --dns 选项来指定 DNS 服务器的 IP 地址。例如,使用命令 docker run --dns=8.8.8.8 可以将容器的 DNS 服务器设置为 8.8.8.8。 另外,引用中提到,如果不指定 --dns 选项,容器会自动加载宿主机的 /etc/resolv.conf 文件中的 DNS 配置。 综上所述,docker run --dns 选项可以用来指定容器使用的 DNS 服务器的 IP 地址。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker 【网络】配置dns](https://blog.csdn.net/xixihahalelehehe/article/details/114979382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [docker容器DNS解决方法](https://blog.csdn.net/atzqtzq/article/details/123869074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值