网络原理——DNS

网络原理——DNS

为什么使用DNS?

互联网上的主机名可以使用多种方式进行标识。一种标识方法是使用它的主机名,然而,主机名几乎没有提供关于主机在互联网中的位置信息,而且因为主机名可能由不定长的字母数字组成,路由器难以处理。由于这些原因,主机使用IP地址进行标识。
识别主机有两种方式,通过主机名或者IP地址。人们喜欢便于记忆的主机名,而路由器喜欢定长的,有层次结构的IP地址。为了折中这些不同的偏好,我们需要一种能进行主机名到IP地址转换的目录服务。这就是域名系统的主要任务。

DNS是什么?

DNS是一个由分层的DNS服务器实现的分布式数据库;一个使得主机能够查询分布式数据库的应用层协议。
DNS通常是运行在BIND软件的UNIX机器上,使用53号端口。DNS协议运行在UDP之上

DNS协议与HTTP、FTP、SMTP协议一样都是应用层协议,原因在于

1、使用客户端-服务器模式运行在通信的主机之间
2、在通信的主机之间通过下面的端到端的运输协议来传送DNS报文

DNS获得服务器IP地址的过程?

运行在用户主机上的一个浏览器(一个HTTP客户端)请求URL页面时会发生什么情况?
为了使用户的主机能够将一个HTTP请求报文发送到Web服务器,这个用户主机必须要获得Web服务器的IP地址,它的做法:

1、同一台用户主机上运行着DNS应用的客户端
2、浏览器从URL中抽取出主机名,并将这台主机名传给DNS应用的客户端
3、DNS客户端向DNS服务器发送一个包含主机的请求
4、DNS客户端最终会收到一份回答报文,其中含有对应于这个服务端主机的IP地址
5、一旦浏览器接收到来自DNS的IP地址,它能够向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接

DNS的工作机理

DNS服务器的层次结构

DNS使用了大量的DNS服务器,它们以层次方式组织,并且分布在全世界范围内。没有一台DNS服务器拥有因特网上所以有主机的映射。相反,这些映射分布在所有的DNS服务器上。大致来说,有三种类型的DNS服务器:根DNS服务器,顶级DNS服务器,权威DNS服务器。这些DNS服务器如图以层级结构组织起来。
在这里插入图片描述
根DNS服务器:有400多个根DNS服务器遍及全世界。根DNS服务器提供顶级DNS服务器(TLD)的IP地址。
顶级域DNS服务器:对于每个顶级域和所有国家的顶级域,都有TLD(顶级域DNS服务器)服务器。TLD服务器提供了权威DNS服务器的IP地址
权威DNS服务器:在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。多数大学和大公司实现和维护它们自己基本和辅助(备份)的权威DNS服务器

本地DNS服务器

严格来说,本地DNS服务器并不属于该服务器的层次结构,但它堆DNS层次结构起着至关重要的作用。
每一个ISP(如一个居民区的ISP或一个机构的ISP)都有一台本地DNS服务器。当主机与某个ISP连接时,该ISP提供一台主机的IP地址,这个主机具有一台或多台本地其本地DNS服务器的IP地址
当主机发出DNS请求时,这个请求北发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中。
在这里插入图片描述

DNS缓存

为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用了缓存技术。
DNS缓存的原理:在一个请求链中,当某个DNS服务器接收到一个DNS回答时,它能将映射缓存在本地存储器中。
如图,每当本地DNS服务器从某个DNS服务器接收到一个回答,它能够缓存包含在该回答中的任何信息。如果在DNS服务器中缓存了一台主机名/IP地址对,另一个对相同主机名的查询到达该DNS服务器时,该DNS服务器就能够提供所要求的IP地址,即使它不是该主机名的权威服务器。由于主机和主机名与IP地址间的映射并不是永久的,DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。
本地的DNS服务器也能够缓存权威服务器的IP地址,因此允许本地DNS绕过查询链中的根DNS服务器。事实上,因为缓存,除了少数DNS查询以外,根服务器被绕过了。

DNS域名解析的过程

一个主机(客户端)想要知道另一个主机(服务器)的IP地址

1、主机首先向它的本地DNS服务器发送一个DNS查询报文。这个查询报文含有被转换的主机名。
2、本地DNS服务器收到客户端请求后,如果缓存里的表格能找到,则它直接返回IP地址,如果没有,本地DNS服务器会将这条报文转发到根DNS服务器。,根DNS服务器是最高层次的,它不会直接用于域名解析,但能知名一条道路
3、根DNS服务器收到来自本地DNS服务器的请求后,会注意它的后缀,并向本地DNS服务器返回负责这个后缀的顶级DNS服务器(TLD)的IP地址列表
4、本地域名服务器收到顶级DNS服务器的地址后,再次向这些TLD服务器之一发送查询报文。
5、该TLD服务器注意到查询报文的后缀。并用权威DNS服务器的IP地址进行响应,这个权威DNS服务器就是负责服务器主机的IP
6、最后,本地DNS服务器直接向权威DNS服务器的IP地址重发查询报文,权威DNS服务器会返回所请求的IP地址进行响应。
7、权威DNS服务器查询后会将对应的IP地址X.X.X.X告诉本地DNS服务器
8、本地DNS服务器再将IP地址返回客户端,客户端和目标建立连接。

为了获得一台主机名的映射,共发送了8份DNS报文:4份查询报文和4份回答报文

查询方式有递归查询迭代查询。上面的步骤中1到3为递归查询,4到6是迭代查询。

如图显示了一条DNS查询连,其中的所有查询都是递归的。,一般而言,从请求主机到本地DNS服务器的查询是递归的,其余查询都是迭代的。

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

灯火不熄

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

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

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

打赏作者

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

抵扣说明:

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

余额充值