DNS协议简介

dns(Domain Name System)是一个全球化的分布式数据库系统,用于存储域名和互联网IP地址的映射关系。dns协议是计算机协议栈应用层中,应用最广泛的协议之一。用户每一次打开浏览器在互联网上遨游,都伴随着dns协议的工作,帮助我们定位互联网主机和资源。

而作为程序开发者,新项目、新应用上线时,如果需要申请新域名并进行配置和管理,也要求我们对dns协议足够了解。

DNS工作原理

dns系统主要分为权威dns和递归dns。

权威dns

权威dns由域名解析服务商建设,用于域名管理服务,主要工作就是管理某个或多个特定域的dns解析工作。一般较大的公司,如百度、阿里等等,都维护自身的权威dns服务器。小公司注册域名后,往往由域名注册商提供dns解析服务。

比如,所有以“taobao.com”结尾的域名,都由 taobao权威dns来管理和解析。当然,taobao.com权威域名需要向上一级com注册。

权威dns域名系统是有层级的树形结构,每一层权威dns都需要向上一层注册:

(1)最上层是根域名。全球有13台根域名服务器,遍布在各大洲。

(2)顶级域,如com,org,cn等,都需要向根域名服务注册。

(3)各国家、机构、公司等,他们的二级域名需要向顶级域名服务商注册。如taobao.com,baidu.com都需要向com注册。

以上都是权威域名,承担着特定域名的解析和管理工作。

递归dns

递归dns通常有网络服务提供商来建设。通过迭代地向权威dns查询域名,来获取dns解析结果。个人主机在启动后会自动配置好本地dns服务器,递归dns解析服务由本地dns服务器来提供。

在mac上,dns服务器记录在/etc/resolv.conf中。可以用unix*中的dig命令来追踪dns解析过程。

dns查询实践

一,使用dig命令

//详细追溯递归dns解析流程
dig +trace www.taobao.com //直接解析dns
dig www.taobao.com

dig +trace www.taobao.com

(1)向本地dns服务器查询,本地dns服务器返回根服务器地址

(2)向根域名服务器查询,返回com域名服务器地址

(3)向com权威服务器查询,返回taobao.com权威域名服务器地址

(3)向taobao.com权威域名服务器查询,www.taobao.com的CNAME记录和A记录

至此,拿到了dns系统解析的最终结果。

  • 在递归dns中,先查询根域名,在查询com域名,再查询taobao.com域名,逐层查询,是谓递归查询。
  • 每一个权威dns均由多台服务器提供服务,实际中还可以配置相关策略来决定具体选择哪一台进行查询。如果域名配置多个A记录就可以进行简单的负载均衡。
  • 本地dns会缓存每次查询的中间结果,加速dns查询,并且会根据TTL决定域名缓存失效时间。

DNS记录分类

dns服务器中的记录分为多种,每一种有不同的作用,常见的是A记录,CNAME记录,MX记录。

A记录:IP地址记录,记录指向具体的ip地址。

CNAME:主机别名记录,记录指向另一个域名。

MX:邮件服务记录。

NS:域名服务器记录。

DNS劫持

dns协议基于udp协议,属于不可靠协议。GFW屏蔽网站的原理就是劫持并篡改了dns报文。

使用dig命令追踪facebook.com的解析结果

本来应该通过递归dns查询,向com,facebook.com等权威服务器逐层查询,GFW却直接劫持了向根服务器的查询,返回了错误的dns解析结果,导致网站打不开。

简单谈谈DNS的工作原理及实践的更多相关文章

  1. 《浏览器工作原理与实践》<03>HTTP请求流程:为什么很多站点第二次打开速度会很快?

    一个 TCP 连接过程包括了建立连接.传输数据和断开连接三个阶段. 而 HTTP 协议,正是建立在 TCP 连接基础之上的.HTTP 是一种允许浏览器向服务器获取资源的协议,是 Web 的基础,通常由 ...

  2. 《浏览器工作原理与实践》 <12>栈空间和堆空间:数据是如何存储的?

    对于前端开发者来说,JavaScript 的内存机制是一个不被经常提及的概念 ,因此很容易被忽视.特别是一些非计算机专业的同学,对内存机制可能没有非常清晰的认识,甚至有些同学根本就不知道 JavaSc ...

  3. 《浏览器工作原理与实践》<10>作用域链和闭包 :代码中出现相同的变量,JavaScript引擎是如何选择的?

    在上一篇文章中我们讲到了什么是作用域,以及 ES6 是如何通过变量环境和词法环境来同时支持变量提升和块级作用域,在最后我们也提到了如何通过词法环境和变量环境来查找变量,这其中就涉及到作用域链的概念. ...

  4. 《浏览器工作原理与实践》<09>块级作用域:var缺陷以及为什么要引入let和const?

    在前面我们已经讲解了 JavaScript 中变量提升的相关内容,正是由于 JavaScript 存在变量提升这种特性,从而导致了很多与直觉不符的代码,这也是 JavaScript 的一个重要设计缺陷 ...

  5. 《浏览器工作原理与实践》<08>调用栈:为什么JavaScript代码会出现栈溢出?

    在上篇文章中,我们讲到了,当一段代码被执行时,JavaScript 引擎先会对其进行编译,并创建执行上下文.但是并没有明确说明到底什么样的代码才算符合规范. 那么接下来我们就来明确下,哪些情况下代码才 ...

  6. 《浏览器工作原理与实践》<07>变量提升:JavaScript代码是按顺序执行的吗?

    讲解完宏观视角下的浏览器后,从这篇文章开始,我们就进入下一个新的模块了,这里我会对 JavaScript 执行原理做深入介绍. 今天在该模块的第一篇文章,我们主要讲解执行上下文相关的内容.那为什么先讲 ...

  7. 《浏览器工作原理与实践》<06>渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?

    在上篇文章中,我们介绍了渲染流水线中的 DOM 生成.样式计算和布局三个阶段,那今天我们接着讲解渲染流水线后面的阶段. 这里还是先简单回顾下上节前三个阶段的主要内容:在 HTML 页面内容被提交给渲染 ...

  8. 《浏览器工作原理与实践》<05>渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?

    在上一篇文章中我们介绍了导航相关的流程,那导航被提交后又会怎么样呢?就进入了渲染阶段.这个阶段很重要,了解其相关流程能让你“看透”页面是如何工作的,有了这些知识,你可以解决一系列相关的问题,比如能熟练 ...

  9. 《浏览器工作原理与实践》<04>从输入URL到页面展示,这中间发生了什么?

    “在浏览器里,从输入 URL 到页面展示,这中间发生了什么? ”这是一道经典的面试题,能比较全面地考察应聘者知识的掌握程度,其中涉及到了网络.操作系统.Web 等一系列的知识. 在面试应聘者时也必问这 ...

随机推荐

  1. freemarker写select组件报错总结(四)

    1.错误描述 <html> <head> <meta http-equiv="content-type" content="text/htm ...

  2. ubuntu14.04 编译安装highpoint rocketraid 2720驱动

    highpoint官方只有ubuntu12.10驱动,对于ubuntu14.04或者12.04,需要手工编译安装驱动. 基本步骤: 1.下载rocketraid 2720驱动源代码 2.在一台装有ub ...

  3. unix时间戳转换成标准时间(c#)

    //---unix时间戳转换成标准时间(c#)---//     /*     string timeStamp = "1144821796";     DateTime dtSt ...

  4. CentOS中对ext4文件系统做磁盘配额

    1.修改/etc/fstab文件,使ext4文件系统支持磁盘配额. UUID="9e6dc1e8-4fc1-4984-be38-524573572d41" /mnt/ext ext ...

  5. jquery对象和js对象的转化

    jquery对象和js对象的转化   jquery对象只能使用jqury方法,不能使用js的方法,相反的,js对象也只能使用js的方法,如果js对象使用了jquery方法,那么浏览器就会报错. 但是在 ...

  6. 一:学习Linux前准备工作

    1:虚拟机,网站上有很多种类的虚拟机,找一款适合自己用的.我这里使用的是 Virtual Box 下载地址:https://www.virtualbox.org/ 安装虚拟机 一路 Next 就可以. ...

  7. Keras官方中文文档:Keras安装和配置指南(Windows)

    这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全:另一方面,Linux系统下对显卡支持.内存释放以及存储空间调 ...

  8. 第一篇:操纵MySQL数据库(1) - 基于MySQLdb库

    前言 本文讲解在Python语言中使用MySQLdb库操纵MySQL数据库的方法. 准备工作 1. 安装Python和MySQL2. 安装MySQLdb (exe下载地址:http://sourcef ...

  9. POJ 2195 Going Home (费用流)

    题面 On a grid map there are n little men and n houses. In each unit time, every little man can move o ...

  10. 【noip模拟】Fantasia

    Time Litmit: 1000ms      Memory Limit: 256MB Description 给定一张 $N$ 个点.$M$ 条边的无向图 $G$ .每个点有个权值$W_i$. 我 ...