随便聊聊

我们知道,网络上传输的数据包是一层一层的包起来的,典型的是mac地址层,ip层,tcp/udp层,应用层数据 这么几个层,那用户在浏览器中打开www.baidu.com数据包如何传到baidu的后端服务器呢?我们这个数据包没有ip层的目标ip啊,http请求怎么知道往哪里发?这个时候,dns系统就介入了,dns系统首先会把这个www.baidu.com的ip地址给找出来! dns系统主要是依靠权威dns,和递归dns来工作的,那权威dns和递归dns都是干嘛的呢?

权威dns(Authority dns)

首先我们来聊一聊权威dns。 权威dns做的事情主要是管理某个或多个特定域的dns服务。一般大一点的公司,都有自己的权威dns

比如所有”.alipay.com”结尾的域名都由alipay来管理所有”.alibaba.com”结尾的域名都由alibaba来管理(alipay和alibaba实际又是同一家公司来管理)所有“.baidu.com”结尾的域名都由baidu来管理alibaba和baidu各管各的,没有交互。<>那整个域名系统,如何跑起来的呢,不然你说你管理alibaba.com的所有域名,我说我也管理alibaba.com的所有域名,不就乱套了么。

光说是没有用的,必须要到相关注册局机构去注册。

  1. 最上面是根域。
  2. 一级域要去根上注册,像com域,net域就属于一级域
    • Com域(也就是所有以“.com”结尾的老祖com域)要去根上注册com域的域名服务器(nameserver)列表。
    • Net域(也就是所有以”.net”结尾的老祖net域)要去根上注册net域的域名服务器(nameserver)列表。
  3. 二级域一般要到一级域上去注册
    • alibaba.com要到com域去注册自己的域名服务器nameserver列表
    • baidu.com也要到com域去注册自己的域名服务器nameserver列表

那你说a.b.c这个域名的一级域是谁,当然是“c”了,但是c域就没有在根上面去注册,所以这个域名是个无效的域名。 这样的一些实际管理域名系统的dns都是权威dns就这样一级一级的注册。

整个域名系统就连起来了,就变成了这么个东西

所以dns叫做分布式的域名系统,分布在世界上面的各个管理域名的公司或机构,有些情况用户只想简单的把自己的ip转化为某个域名,而不想管理整个域,那这个时候他就可以去买域名,有些公司是专门卖域名的。比如alibaba.com完全可以卖任何以“.alibaba.com”结尾的域名,只是alibaba.com不会这么干,这样做一些钓鱼网站来挂自己的网站,也以alibaba.com结尾的话,用户不就很容易被钓鱼了么,比如我支付宝付款的时候我只看跳转后的域名是否是以alipay.com结尾的,如果不是我就不敢付款)

递归DNS(Recursion DNS)

那用户访问www.alibaba.com,请求又是如何到alibaba的权威dns服务器上面找到www.alibaba.com的ip呢?

这个时候递归dns(我们一般叫做local dns)就介入了。

用户首先要直接配置自己的dns服务器,一般你拨号上网,或者在公司里面上网,我们windows系统都已经预想配置好了递归dns服务器的ip地址,当然自己也可以修改

RHEL Linux系统是/etc/resolv.conf配置文件来配置。

一个用户访问www.alibaba.com的过程如下(可放大图片观察)

其中有几点补充

  1. 递归dns也就是我们常说的缓存dns,local dns,公共dns(提供专门递归服务的dns),这样一步步的从根“.”到"com",再到“alibaba.com”,最后到“www.alibaba.com”的过程叫做递归过程
  2. Dns请求一般是udp报文(也可以是tcp的报文),所以同样也是要有源ip,目标ip,等等这些网络数据包的底层信息,递归过程的每一步,目标ip都必须是很明确的
  3. 各个域的namserver实际上是有多台的,比如根的namserver的ip有13个,com的namserver的ip也有13个,递归dns在进行递归时需要选择其中一个ip作为目标ip进行下一步请求即可(目前主流dns实现软件,如bind会选择延时最小的那个ip作为下一步请求的目标ip)
  4. 大家不用担心根域,或者com域就那么几个ip,能不能接受的了全球的dns请求能不能抗的住的问题。这只是个目标ip,基于ip的负载均衡技术多的很,dns中用的多的是anycast技术,一个ip实际上对了很多个物理服务器,到各个权威nameserver上,也有lvs,ospf等等一些负载均衡技术把同一个ip对应到多个物理服务器上面。
  5. 递归dns还会把图中递归第一步,第二步,第三步向各级权威dns发起的请求结果给缓存到自己的内存中,直到这条结果的ttl超期失效(超期时间一般为几分钟到几小时几天等等),在这个ttl超期之前,任何其他用户发起的www.alibaba.com的dns请求,递归dns都会直接从自己的内存中把缓存结果直接返回给客户端(不会去递归了)。如果ttl超期了,才会去重新递归。
  6. 有的dns既是权威dns,又是递归dns,这并不冲突,这种dns在遇到域名是自己管理的域的后缀结尾时,会直接进行应答(无论是否存在结果),如果不是自己管理的域的后缀域名,则进行递归,同样吧递归结果进行缓存。

聊聊dns攻击

我们顺便聊聊dns攻击问题,典型的有拒绝服务攻击,dns劫持等。

  1. 拒绝服务攻击这种是对各种应用(不止是dns应用)都很常见的攻击,大家也都知道,我们构造数据包直接调用驱动,或者使用现成的pktgen改吧改吧,或者用dpdk,或者干脆多一点肉机,随意伪造源ip,dns请求(或者什么http请求,arp请求等等),一秒钟打出几百万或者几千万个包打出很大流量的请求来,不是什么难的事情(不是所有公司的系统都有很强的防攻击措施),而带宽就这么大,硬件的能力也好操作系统的能力也好就这么大,正常的客户请求就进不来而无法服务了,从而达到了攻击。
  2. Dns劫持攻击也有,伪造dns响应是很简单的,或者直接在上级dns上面配置泛域名,但是容易被发现,但是即使容易被发现,一旦进行了劫持,后果也是不堪设想的,比如前段时间根被劫持了,我们从上图的递归dns向各级权威dns询问www.alibaba.com的ip是多少,根的nameserver或者com的nameserver本来是不应该直接告诉递归dns www.alibaba.com的ip到底是多少的,必须要到alibaba.com的权威dns才能得到最终结果,可是根却在第一步递归过程中,就告诉递归dns我知道www.alibaba.com的ip(当时好像是任何域名请求到根的namserver,根的namserver都直接给返回了同一个错误的ip),是y.y.y.y(一个错误的ip)了,这样最后产生http请求的时候,目标ip就完全不对了,而由于各个递归dns ttl超期之后都会先从根递归,这样所有域名就都被劫持了,整个互联网也就崩溃了。
  3. 另外泛域名这种,举个简单的例子,如果我是根的namserver,我配置一个泛域名 ,让其ip为1.1.1.1,那么所有到根进行查询的任何域名查询,都会得到直接响应说ip是1.1.1.1,那打开任何网页,数据包的目标ip就都是1.1.1.1了,不堪设想。小点来说如果我是com的namserver,配置一个泛域名,.com,那所有以”.com”结尾的域名也都不堪设想了,根本走不到各个公司去做dns查询这一步。

如有错误,欢迎指正。

【DNS】简单聊聊DNS如何工作的更多相关文章

  1. 简单谈谈DNS的工作原理及实践

    DNS协议简介 dns(Domain Name System)是一个全球化的分布式数据库系统,用于存储域名和互联网IP地址的映射关系.dns协议是计算机协议栈应用层中,应用最广泛的协议之一.用户每一次 ...

  2. BIND的进程一:DNS简单配置与的主从配置

    DNS的简单配置和DNS的主从配置   摘要:DNS(Domain-Name Server) ,DNS的服务起到的作用就是名称解析,在网络通讯来说计算机与计算机是通过IP地址相互通信的, 当是IP地址 ...

  3. 简单理解DNS解析流程(一)

    0x0 简单理解dns DNS服务器里存着一张表 表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一 浏览器访问某个域名,实际上是访问它的ip地址 所以浏览器需要知道域名对应的ip地址 如 ...

  4. 简单说说DNS劫持_firefox吧_百度贴吧

    简单说说DNS劫持_firefox吧_百度贴吧 DNSSEC

  5. 通过开源程序同时解决DNS劫持和DNS污染的问题

    我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址.常用的手段有:DNS劫持和DNS污染.关于DNS劫持和DNS污染的区别,请查找 ...

  6. 【转】DNS劫持和DNS污染的区别

    什么是DNS服务器? 简单来说,DNS服务器就是域名管理系统. DNS(Domain Name System)是域名解析服务器的意思. DNS服务器是干什么的? DNS服务器在互联网的作用是:把域名转 ...

  7. <转>浅谈DNS体系结构:DNS系列之一

    浅谈DNS体系结构 DNS是目前互联网上最不可或缺的服务器之一,每天我们在互联网上冲浪都需要DNS的帮助.DNS服务器能够为我们解析域名,定位电子邮件服务器,找到域中的域控制器……面对这么一个重要的服 ...

  8. DNS劫持和DNS污染的区别

    我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址.常用的手段有:DNS劫持和DNS污染. 什么是DNS劫持 DNS劫持就是通过劫 ...

  9. 什么是DNS劫持和DNS污染?

    什么是DNS劫持和DNS污染? http://blogread.cn/it/article/7758?f=weekly 说明 我们知道,某些网络运营商为了某些目的,对 DNS 进行了某些操作,导致使用 ...

随机推荐

  1. okHttp使用

    本文转载自:http://www.cnblogs.com/qifengshi/p/5405550.html okHttp是一个http请求框架,相当于android原生的httpclient和http ...

  2. 在Eclipse中对自动封装的设定颜色

    在Eclipse中,对自动封装进行特别着色提醒的方法:windows-->Preference-->java-->Editor-->Syntax Coloring-->j ...

  3. linux命令:gzip

    1.命令介绍: gzip用来压缩或解压文件,对文本文件的压缩率有60~70%. 2.命令格式: gzip [选项] 文件/目录 3.命令参数: -a或--ascii  使用ASCII文字模式. -c或 ...

  4. HTTP 响应头信息

    HTTP 响应头信息 HTTP请求头提供了关于请求,响应或者其他的发送实体的信息. 在本章节中我们将具体来介绍HTTP响应头信息.

  5. Blender2.5快捷键

    General--通用 ESC Stops ongoing operation--停止当前操作 TAB Toggles Edit/Object mode--切换编辑/物体模式 ZKEY Toggles ...

  6. 图片上传安全性问题,根据ContentType (MIME) 判断其实不准确、不安全

    图片上传常用的类型判断方法有这么几种---截取扩展名.获取文件ContentType (MIME) .读取byte来判断(这个什么叫法来着?).前两种都有安全问题.容易被上传不安全的文件,如木马什么的 ...

  7. 前端:js

    JavaScript: 参考文章: http://www.cnblogs.com/wupeiqi/articles/5369773.html http://javascript.ruanyifeng. ...

  8. 海洋女神建新installshield交流群了,原来的老群都满了,请加新群哦,记得认真填写验证信息

    群号511751143 海洋女神installshield群

  9. Android activity和service的生命周期对比

    1Activity生命周期 七个方法 1. void onCreate(Bundle savedInstanceState) 当Activity被第首次加载时执行.我们新启动一个程序的时候其主窗体的o ...

  10. java连接sql server2005

    转自:http://blog.sina.com.cn/s/blog_889b58310100zqyz.html 一:配置 第一步:在网上下载SQLServer2005的驱动包 http://www.m ...