一、DNS 是啥?

DNS 是洋文“Domain Name System”的缩写,直译过来就是“域名系统”。

二、DNS 有啥用?

咱们每天打交道的这个互联网,其底层的基石是“IP”。IP 是“Internet Protocol”的缩写,中文就“互联网协议”(光看名字就知道这玩意儿很重要)。咱们日常用的那些互联网软件(浏览器、聊天工具、下载工具、等等)在工作时,必须依靠【IP地址】才能进行网络数据传输。

“IP地址”是设计给软件用滴——虽然软件很容易处理,但对于人类而言,却很难记忆。于是,后来又发明了 DNS。有了 DNS,人类就不需要记住长长的一串 IP地址,而只需记住“域名”(域名通常更短,也更具有可读性,例如www.g.cn)。

比如你上网的时候,只需在地址栏输入网站的“域名”,而不用输入网站的“IP地址”。然后电脑系统会利用 DNS 来把“域名”翻译成“IP地址”。这个翻译的过程术语叫“域名解析/DNS解析”。

三、域名的结构是咋样?

域名是按照“树形结构”组织的。不懂得啥是“树形结构”的同学,可以对照一下电脑硬盘上的目录结构。域名的结构和目录结构很类似,目录结构是用“斜杠”作分隔符,而域名是用小数点作分隔符。两者的主要区别在于:目录结构名称的形式是从左到右(上级在左,下级在右),而域名是从右到左(上级在右,下级在左)。

以网易的域名为例:

3g.163.com 的上级域名是 .163.com

163.com 的上级域名是 .com

这里的 .com 就被称为顶级域名(Top-Level Domain,简称 TLD),跟 .com 类似的那些 .net .org .gov 也是顶级域名。还有那些以国家/地区的代码命名的(比如 .cn .tw .hk .jp 等等)也是顶级域名。

四、“域名解析”是咋实现?

如果你曾经配置过电脑的网卡,应该记得上面除了有IP地址、掩码等设置,还有一项设置是“DNS服务器/域名服务器”。这项设置就是用来帮助你的电脑进行域名解析的。你可以把这个“DNS服务器”想象成114查号台。每当电脑需要翻译某个域名,就找这个域名服务器查询,然后域名服务器会告诉你的电脑,要查询的域名对应的IP地址是啥。

下面简单说一下,你的电脑进行域名解析的过程。

为了叙述方便,以网易为例。当你在浏览器的地址栏中输入 www.163.com,然后敲回车,这时候电脑软件会进行如下一系列事情。

1. 首先根据输入的网址,提取出域名(

2. 如果你在系统中配置了 Hosts 文件,那么电脑会先查询 Hosts 文件,看这个www.163.com 否已经在 Hosts 里面有了对应的记录。如果有,直接就可以拿到该记录中的 IP地址,过程就结束了。

3. 如果 Hosts 里面没有这个别名,那么电脑会看你有没有设置域名服务器(DNS 服务器)。如果你的系统没有设置域名服务器,那电脑就没辙了,浏览器直接会报错,说网站的域名无法解析。过程就结束了。

4. 如果你设置过“域名服务器”,那么电脑会向这个域名服务器发送一个域名查询(DNS query)的请求,然后等候域名服务器的回应。

5. 如果域名服务器始终没有回应(比如域名服务器挂了,或域名服务器的IP填错了,或请求被 拦截了),那么电脑还是没辙(浏览器会报错)。

6. 如果域名服务器回应了,那么你的电脑就可以根据域名服务器的应答信息,得到该域名的 IP地址。之后浏览器就会向这个 IP地址 对应的 Web 端口发送 HTTP 请求。

通常情况下,电脑拿到的(DNS服务器)应答信息是正确的——也就是说,应答中的 IP地址 确实对应那个域名——这种情况下,你的网络软件就可以正常工作了。

但是在某些国家,例如CHAOXIAN,电脑拿到的 DNS 应答有可能是【错的】。为啥会这样捏,本文的后半部,俺会介绍一下“域名劫持”和“域名污染”。

五、域名服务器如何知道这些信息?

(一)域名的缓存

大伙儿平时使用的域名服务器,技术术语叫“递归域名服务器”。“递归服务器”是面向普通网友的。刚才介绍“域名解析”的时候提到的服务器就是“递归服务器”。

“递归服务器”的内部通常会有一个 DNS记录 的缓存——这个缓存是为了提高查询效率的。当某台电脑向递归服务器发起域名查询时,递归服务器首先看自己的缓存中有没有该域名的记录,如果有,直接就回复该记录给查询的电脑。

万一对方想要查询的域名没找到,咋办捏?这时候就要进行缓存的同步。

(二)缓存的同步

下面就拿网易的域名为例,说说这种情况的处理流程。

1. 对方查询3g.163.com 这个域名,“递归服务器”发现自己的缓存中没有

2. “递归服务器”会先去找“根域名服务器”帮忙,“根服务器”会告诉“递归服务器”说:这个域名属于 com 这个分支之下,你去找 com 这个域名的“权威服务器”,这个权威服务器的 IP地址 是 xxx。

3. 然后“递归服务器”根据拿到的这个 xxx地址,又去找“com 域名的权威服务器”。“com 域名的权威服务器”告诉它:你应该去找“163.com 域名的权威服务器”,这个权威服务器的 IP地址 是 yyy

4. 然后“递归服务器”又屁颠屁颠地去找“163.com 域名的权威服务器”。这时候“163.com 域名的权威服务器”才会告诉它,3g.163.com 这个域名的 IP地址 到底是多少。

大伙儿看到没有?整个过程如同“踢皮球”,效率是很低的。所以俺前面提到,“递归域名服务器”必须得有一个缓存,以此来优化效率(不用每次查询都来一次“踢皮球”)。

(三)同步的周期

说完了“域名的同步”,顺便提一下“同步的周期”。

因为互联网上的域名信息是有可能发生变化的。比如增加了某个新域名,注销了某个旧域名,或者某个域名对应的 IP地址 变了。所以,“递归服务器”上保留的缓存中,每一条域名记录都有一个生命周期(可能是几分钟,也可能是几小时)。如果某条记录的生命周期过了,就会被删除,然后重新同步。

六、啥是“域名劫持”?

刚才说了,域名服务器上都会保存一大堆的域名记录(每条记录包含“域名”和“IP地址”)。当收到域名查询的时候,域名服务器会从这堆记录中找到对方想要的,然后回应给对方。

如果域名服务器上的某条记录被【人为修改】了(改成错的),那么一旦要查询这条记录,得到的就是错误的结果。这种情况称之为“域名劫持”。

★谁有“域名劫持”的企图?

“域名劫持”通常是电信运营商(ISP)干的好事儿。很多宽带用户用的域名服务器就是 ISP 提供给你的。

举例:

前几年曾经出现过:某个 ISP 跟某网站勾结,把维基百科的流量重定向到XX。具体搞法是:该 ISP 篡改自己的域名服务器的记录,把里面跟维基百科 相关的域名记录的 IP地址 修改为XX的 IP地址。如此一来,假设你用的是这个 ISP 的域名服务器,当你在浏览器输入 http://zh.wikipedia.org/的时候,你的电脑查询到的 IP地址 其实是XX的 IP地址,所以浏览器打开的是“XX”的主页。

★如何对付“域名劫持”?

刚才说了,“域名劫持”的根源在于:域名服务器上的记录被人给改了。要对付这种耍流氓,最直接的办法就是不要使用这种流氓 ISP 提供的域名服务器,改用国外那些比较靠谱的。目前口碑最好的,大概是 Google 提供的两个域名服务器,IP地址 分别是 8.8.8.8 和 8.8.4.4 ——这俩不光是地址好记,更重要的是,不会耍流氓。

七、啥是“域名污染”?

先提醒一下:“域名污染”这个词还有其它几个别名,分别是“域名欺骗”、“域名缓存投毒”(洋文叫:DNS cache poisoning)。今后看到这几个别名,要晓得是同一个意思。

“域名污染”的原理,简单说来是这样滴:当你的电脑向域名服务器发送了“域名查询”的请求,然后域名服务器把回应发送给你的电脑,这之间是有一个时间差的。如果某个攻击者能够在域名服务器的“DNS应答”还没有到达你的电脑之前,先伪造一个错误的“DNS应答”发给你电脑。那么你的电脑收到的就是错误的信息,并得到一个错误的 IP地址。

★谁有“域名污染”的企图?

从技术上讲,只要攻击者能够位于“你”和“域名服务器”的传输线路中间,那么攻击者就有机会搞“域名污染”。能够做到这点的,可能是一个黑客/骇客,也可能是 ISP。

★某国家防火墙的两种“域名污染”

刚才俺解释了“域名污染”的原理,那种形式不妨称为“直接污染”。由于某国家防火墙的特殊性,它不但可以做到“直接污染”,还可以做到“间接污染”。而普通的骇客顶多只能做到“直接污染”,难以做到“大范围的间接污染”。

那么这两种污染有啥区别捏?且听俺细细道来。

◇某国家防火墙部署在哪?

首先有必要先扫盲一下“某国家防火墙(其实是一种IDS,也就是入侵检测系统)的部署位置”。X国互联网只有少数几个国际出口(名气较大的是:A出口、B出口、C出口)。如果你要访问国外网站,你的网络数据流就必定会经过其中的某个“国际出口”。

◇某国家防火墙的直接污染

因为某国家防火墙部署在国际出口。如果你用的是【国外的】域名服务器,你的“DNS请求”必定会经过国际出口;同样,域名服务器的“DNS应答”必定也会经过国际出口才能到你的电脑。这一来一回就给某国家防火墙 提供了机会。

这种污染就是俺所说的“直接污染”。

◇某国家防火墙 的间接污染

刚才介绍了“使用国外域名服务器会被直接污染”。那如果你用的是【国内的】域名服务器捏?就会被“间接污染”。过程如下:

1. 比方说你用的是电信的 DNS服务器,然后你想要访问某个被不受欢迎的网站。

2. 对于不受欢迎的网站,其网站服务器必定在国外,而且网站的域名肯定也不会使用 CN 之下的域名。所以,被封锁的网站,其上级域名的“权威域名服务器”肯定也是在国外。

3. 当你向“电信的DNS服务器”查询反共网站的域名,这台“电信的DNS服务器”就会去找这个不受欢迎的网站的上一级域名对应的“权威域名服务器”去进行“域名查询”。

4. 因为是从国外进行域名查询,相关的数据流必定要经过国际出口。一旦经过国际出口,就会被 某国家防火墙 污染。

5. 如此一来,“电信的域名服务器”拿到的是已经被污染的域名记录(里面的IP是错的)。而且“电信的域名服务器”会把这条错误的记录保存在自己的域名缓存中。

6. 下次如果有另一个网友也找这台“电信的域名服务”查询这个不受欢迎的网站,也会查到错误的结果。

上述过程不断重复,最终会导致:全国所有的域名服务器,它们的缓存中只要是包含了不受欢迎的网站的记录,记录中的 IP地址 必定是错的(这个错误的 IP地址 也就是 某国家防火墙 伪造的那个)。所以说“间接污染”是很牛逼的,可以把错误的域名记录扩散到全国。

刚才俺说了,“域名污染”也叫“域名缓存投毒”。“投毒”一词真的非常形象——就好象在某条河流的源头下毒,从而把整条河流的水都污染。“域名污染”直接破坏了互联网的基础设施。

原文地址:http://www.music4x.com/post/877

DNS 工作原理是什么,域名劫持、域名欺骗、域名污染又是什么相关推荐

  1. DNS工作原理及解析过程

    1.何为DNS? DNS( Domain Name System)是"域名系统"的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务 ...

  2. 什么是域名劫持?遇到域名劫持要怎么处理

    互联网的应用在我们生活.工作中的应用日益加深,在众多设备的加入下,网络环境也也变得更加复杂.因此,我们在运营网站的过程中,常常出现网站无法打开.或者打开后跳转至其他页面的情况,这就是我们常说的域名劫持 ...

  3. 计算机dns的工作原理,解析DNS工作原理

    DNS是互连网核心协议之一,不管是上网浏览,还是编程开发,都需要了解一点它的知识.本文就来学习DNS工作原理,希望您读完本文也对它有所了解. DNS(Domain Name System)是" ...

  4. dns遭到劫持_被域名劫持了怎么办 域名劫持的几个解决办法域名给别人劫持怎么办...

    做网站的最怕遇到黑帽seo,规矩点的给你加点黑链起码对网站影响不大,但是有些黑客直接接进行域名劫持,强制性获取你的网站流量,在互联网中这种手段简直就是强盗行为,但是虽然很多人痛恨,但是黑帽seo还是无 ...

  5. 域名服务器(DNS)工作原理

    域名服务器工作原理 引言 只要您在互联网上发送电子邮件或浏览Web,您就会用到域名服务器,而您自己可能都不知道您在使用它们.域名服务器(即DNS)是互联网的相当重要且完全隐藏的部分,并且很神奇.域名服 ...

  6. DNS工作原理及过程讲解

    0x00前言 想必大家都知道当今上网浏览web页面或访问其他服务一般都是用域名来访问的,这是由于IP地址不容易记住而且使用不方便,这时候科学家们就发明了域名,从而衍生出了各种大大小小的域名解析服务器( ...

  7. DNS工作原理及其过程

    DNS服务器所提供的服务是完成将主机名或域名转换为IP地址的工作.为什么需要将主机名或域名转换为IP地址的工作呢?这是因为,当网络上的一台客户机访问某一服务器上的资源时,用户在浏览器地址栏中输入的是便 ...

  8. DNS关键词:DNS工作原理、A记录、CNAME记录、MX记录、PTR记录、SOA记录、NS记录

    一.DNS基础:什么是DNS?DNS域名称空间的组织方式?DNS服务的工作过程. http://369369.blog.51cto.com/319630/812889 二.DNS关键词:A记录.CNA ...

  9. 1-趣味解读DNS工作原理——转载疯猫网络科技

    因为只要我们输入百度.腾讯.淘宝的名字,无论它们的服务器在哪里,历经多少轮查询,我们都能找到并访问之.这就是计算机网络中著名的域名系统DNS(Domain Name System),它能实现把一个网站 ...

  10. 小米路由器4A千兆版自定义域名|域名劫持|自定义本地域名

    效果:通过访问域名访问本地资源. 如: 将自己的nas地址定义为nas.cn 1. 获取ssh权限 下载 https://github.com/acecilia/OpenWRTInvasion 安装p ...

最新文章

  1. 基于Atmega8单片机的串口收发程序
  2. Mysql带返回值与不带返回值的2种存储过程
  3. webpack和react_使用React和Webpack进行简单的代码拆分
  4. java正则获取数字_Java通过正则表达式获取字符串中数字的方法示例
  5. jvm lock低性能分析
  6. pythonxy官网下载_spyder安装包
  7. java动态规划求最大子段和_动态规划-最大子段和
  8. IOS 面试个人简历(模板)
  9. uni-app微信小程序短信验证、微信支付
  10. 怎么用计算机弹出soldout,《SOLDOUT2》游戏怎么玩 游戏攻略玩法全面介绍
  11. Markdown字体转换
  12. java启动临时文件_springboot临时文件存储目录配置
  13. 计算机图表制作教程,PPT怎么制作动态图表 PPT动态图表制作教程-电脑教程
  14. 今年双旦期间简直人品爆棚,晒晒我抽中的趣享付趣号卡
  15. Information Retrieval(信息检索)笔记02:Preprocessing and Tolerant Retrieval
  16. 安防行业安全产品分类、趋势分析
  17. Convert的用法
  18. WEB 期末项目 小黑帽书屋
  19. PyTorch 1.0 中文官方教程:空间变换器网络教程
  20. 易买网更多新闻代码_新闻 | 1010新西游记8成功回归等更多资讯

热门文章

  1. nginx 日志问题(\x22)
  2. 出了雷军周鸿祎,湖北却消失在中国互联网版图
  3. php做网络心理测试,php心理测试程序源代码版,求高手帮忙写一个c语言的心理测试程序...
  4. iPhone7 plus分辨率行不行
  5. 做的好不如说得好,老板为什么喜欢听过程汇报?
  6. 语言栏不见了怎么办?
  7. PostScript语言教程(六、图形变换)
  8. 日本語トレーニング(二十一)
  9. Facebook开发者创建APP生成KeyHash
  10. 金融风控领域算法比赛经验分享——翼支付杯大数据建模大赛-季军方案