浅谈DNS

什么叫域名解析

域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。

域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。

DNS的查询过程

当DNS客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。

l 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。(完整网域名称由主机名称与母网域名称两部分所组成,例如有一部服务器的本地主机名为myhost,而其母域名为example.com,那指向该服务器的完整网域名称就是myhost.example.com。虽然世界上可能有很多服务器的本地主机名是myhost,但myhost.example.com是唯一的,因此完整网域名称能识别该特定服务器。)

l 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。

l DNS域名的指定类别。对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。

另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代,即DNS服务器之间的交互查询就是迭代查询。 DNS 查询的过程如下图所示。

举一个例子来详细说明解析域名的过程,假设我们要访问的站点时:www.163.com, 域名解析的过程如下所示:

1. 在浏览器中输入www.163.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2. 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3. 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

4. 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

5. 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(163.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找163.com域服务器,重复上面的动作,进行查询,直至找到www.163.com主机。

6. 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

DNS记录常见类型

l A记录解析

记录类型选择“A”;记录值填写空间商提供的主机IP地址;MX优先级不需要设置;TTL设置默认的3600即可。

l CNAME记录解析

CNAME类型解析设置的方法和A记录类型基本是一样的,其中将记录类型修改为“CNAME”,并且记录值填写服务器主机地址即可。

l MX记录解析

MX记录解析是做邮箱解析使用的。记录类型选择MX,线路类型选择通用或者同时添加三条线路类型为电信、网通、教育网的记录;记录值填写邮局商提供的服务器IP地址或别名地址;TTL设置默认的3600即可,MX优先级填写邮局提供商要求的数据,或是默认10,有多条MX记录的时候,优先级要设置不一样的数据。

国际根域名服务器

互联网上的域名可谓千姿百态,但从域名的结构来划分,总体上可把域名分成两类,一类称为“国际顶级域名”,一类称为“国内域名”。

一般国际域名的后缀大多诸如com,net.gov.edu”等国际通用域”,这些不同的后缀分别代表了不同的机构性质。比如.com表示的是商业机构,.net表示的是网络服务机构,.gov表示的是政府机构,.edu表示的是教育机构。

由于互联网的发展是从美国开始的,因此,美国一直保持着对互联网域名及根服务器的控制。目前,全球共有13台套根域名服务器,其中美国10个,欧洲2个(位于英国和瑞典)、亚洲1个(位于日本),并在全球部署有三百多个根镜像服务节点,在中国大陆地区有5个,覆盖了F、I、J、L 根。其中,F 根由ISC(Internet Systems Consortium)机构与CNNIC合作,在北京建设了两个F根镜像服务节点,由中国电信和CNNIC分别提供网络接入;Verisign与中国联通合作,在北京建设了J根镜像服务器,中国联通提供接入。另外两个由CNNIC提供网络机房环境分别与Netnod、ICANN合作,在北京建设了I、L根镜像服务节点。目前中国还有相关机构继续与国际合作实施更多的根镜像节点。

中国的镜像服务器

国内域名的后缀通常要包括“国际通用域”和“国家域”两部分,而且要以“国家域”作为最后一个后缀。以ISO31660为规范,各个国家都有自己固定的国家域,如:cn代表中国、us代表美国、uk代表英国等。

国内域名的后缀通常要包括“国际通用域”和“国家域”两部分,而且要以“国家域”作为最后一个后缀。以ISO31660为规范,各个国家都有自己固定的国家域,如:cn代表中国、us代表美国、uk代表英国等。

也许正是因为看到IPv4即将退出,以及中国在IPv6上的迅猛发展,美国才允许中国于2003年和2004年开通根域名服务器的中国镜像服务器,也就是引进了域名根服务器的F镜像服务器(大致的说,镜像服务器就是原根服务器的克隆服务器)和J镜像服务器及顶级域名.COM .NET的镜像服务器,国内从此有了域名根服务器的镜像服务器,当时这些镜像服务器安装在中国电信,后来随着国家将中国电信按照南北两大块拆分办法,将中国电信拆分为江南的中国电信与江北的中国网通两大公司,目前F镜像服务器安装在中国电信,J镜像服务器和.COM .NET镜像服务器则安装在中国网通。

有了域名根服务器的镜像服务器后,国内解析.CN域名和COM域名就不用到国外的域名根服务器获得顶级索引了,这将从根本上提高国内网络访问速度。这意味着,自2004年以后中国网民访问com.net网站时,域名解析将不再由设置在境外的域名服务器提供服务,而是直接由设置在中国电信的“F镜像服务器”和设置在中国网通的“J镜像服务器”来提供。

linux下使用dig命令查看根服务地址:

anycast

前面提到,全球部署有三百多个根镜像服务节点(mirror),因此可以较好的抵抗针对其所进行的分布式拒绝服务攻击(DDoS),而这种安全性是通过任播(anycast)来实现的。

任播(anycast)是一种网络地址和路由的策略,使得资料可以根据路由拓朴来决定送到“最近”或“最好”的目的地。任播是与单播、广播和多播不同的方式。

l 在单播中,在网络地址和网络节点之间存在一一对应的关系。

l 在广播和多播中,在网络地址和网络节点之间存在一对多的关系:每一个目的地址对应一群接收可以复制资讯的节点。

l 在任播中,在网络地址和网络节点之间存在一对多的关系:每一个地址对应一群接收节点,但在任何给定时间,只有其中之一可以接收到传送端来的资讯。

通俗一点来说,Anycast可以把好多台机器整成一个公网IP地址,然后通过BGP宣告给运营商,从而实现客户端就近访问,以及节点失败后,服务自动转移等功能。Anycast最佳的应用环境就是DNS,一般DNS查询走的都是UDP协议,IP Anycast 结合 BGP的为DNS全球冗余及加速提供天然的条件。

在互联网中,通常使用边界网关协议(BGP)来实现Anycast。

在网络上,任播可以用来帮助抵御DDOS并减少它们的效率。既然流量是导到最近的而非攻击者程式能控制的节点,洪水攻击流量将被分散到最近的节点。这通常意味着并非所有的节点被影响。这通常是一个布署任播位址的重要理由。

DNS是整个互联网运行的基础之一,怎么强调它的重要性都不为过。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • redis配置详解(中英文)

    V2.8.21: (中英字幕同步) # Redis configuration file example #* Redis 配置文件例子 # Note on...

    三丰SanFeng
  • github 提交报403 forbidden的错误解决

    创建本地仓库与github的传输 这里假设你的仓库地址为/user/test.git,email地址为youremail@example.com,使用的时候替换...

    三丰SanFeng
  • 无锁编程(七) - 实战

    数据与进程对等的处理 场景:某服务需要支持海量用户,在一台物理机器上运行了多个进程/线程。对于数据应该如何处理以保证安全快速的访问数据呢? 解决方案:“分” 分...

    三丰SanFeng
  • Linux DNS 服务器安装、配置和维护

    每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相对...

    马哥linux运维
  • Linux DNS 服务器安装、配置和维护

    每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相...

    小小科
  • 最全面的 DNS 原理入门

    DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。

    哲洛不闹
  • DNS域名服务器,我们使用免费WIFI真的安全吗?

    KS Knowledge Sharing 知识分享 现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享 DNS内...

    互扯程序
  • 五分钟了解网络连接

    笔者最近阅读大量网络原理相关书籍,因此总结出此文,读完本文,读者们应该要了解下面名词:

    Dwyane
  • 恶意域名的阻止:Quad9DNS服务

    这个被称为Quad9(在服务获得的9.9.9.9互联网协议地址之后)的免费公共域名服务系统,旨在阻止与僵尸网络,网络钓鱼攻击和其他恶意Internet主机...

    躲在树上的域小名
  • DNS

    版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.ne...

    zy010101

扫码关注云+社区

领取腾讯云代金券