Dns域名解析服务器

前言

域名解析服务器的介绍

域名服务器的类型划分

 DNS域名解析的过程

为什么需要DNS解析域名为IP地址?

通俗理解Dns

DNS劫持

DNS污染

Dns面试经验


前言

DNS是一个应用层协议,用来获取域名对应的IP地址

域名解析服务器的介绍

 DNS(Domain Name System)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。

 DNS系统使用的是网络的查询,那么自然需要有监听的port。DNS使用的是53端口,在/etc/services(搜索domain)这个文件中能看到。通常DNS是以UDP这个较快速的数据传输协议来查询的,但是没有查询到完整的信息时,就会再次以TCP这个协议来重新查询。所以启动DNS时,会同时启动TCP以及UDP的port53。

域名服务器的类型划分

Dns域名解析服务器_第1张图片

 DNS域名解析的过程

Dns域名解析服务器_第2张图片

1、在浏览器中输入www . qq .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域的服务器收到请求后,如果自己无法解析,它就会找一个管理qq.com的DNS服务器地址给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。

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

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

114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS。

8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。

为什么需要DNS解析域名为IP地址?

  首先计算机在网络上通讯时只能识别IP地址(网络通讯大部分是基于TCP/IP协议,而TCP/IP是基于IP地址的),比如我要在浏览器中访问百度的地址,我可以在地址栏直接输入14.215.177.39就能访问到百度的首页。但是我们无法记住更多的IP地址。那么域名就出现了,域名是由一串用”.”分隔的唯一名字。所以现在我们访问网站的时候,就可以在浏览器地址栏中输入域名(www.baidu.com),那么DNS就会把域名翻译成IP,然后访问IP。

Dns域名解析服务器_第3张图片

通俗理解一遍

浏览器:@浏览器缓存,你知道www.baidu.com对应的IP么?

  浏览器缓存:知道,是xxxx

  浏览器:好的,我去访问啦!

浏览器缓存:不知道

浏览器:@系统缓存,你知道www.baidu.com对应的IP么?

  系统缓存:我看下hosts哦,找到了,是xxxx

  浏览器:好的,我去访问啦~

系统缓存:我看下hosts哦,哎呀没有找到哎

浏览器:好的,我无能为力了,@客户机想想办法

客户机:我去问问@本地DNS服务器,你知道www.baidu.com对应的IP么?

  本地DNS服务器:我去DNS服务器缓存中找找,找到了,是xxxx

  客户机:@浏览器,是xxxx,你去访问吧

  浏览器:好的,我去访问啦#

本地DNS服务器:我去DNS服务器缓存中找找,哎呀没有找到哎

本地DNS服务器:想个办法,先去找大哥@根DNS服务器,你知道www.baidu.com对应的IP么?

根DNS服务器:我知道com DNS服务器的IP,你叫他给你查

本地DNS服务器:好的,@com DNS服务器,你知道www.baidu.com对应的IP么?

com DNS服务器:我知道baidu.com DNS服务器的IP,你叫他给你查

本地DNS服务器:怎么开始踢皮球了@baidu.com DNS服务器,你知道www.baidu.com对应IP么?

baidu.com DNS服务器:我这里查到了,IP是xxxx

本地DNS服务器:太开心了@客户机IP是xxxx。这么麻烦,先记到DNS服务器缓存,免得下次又这么折腾。

客户机:@浏览器 IP是xxxx

浏览器:好的,我去访问啦

 

DNS劫持

①DNS决定的是我们的域名将解析到哪一个IP地址的记录,是基于UDP协议的一种应用层协议。这种攻击的前提是攻击者掌控了你的本地DNS服务器。

②攻击者劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致用户对该域名地址进行访问的时候,由原来的IP地址转入到修改后的IP地址。结果就是让正确的网址不能解析或者是被解析到另一个网址的IP,实现获取用户资料或者破坏原有网址正常服务的目的。

Dns域名解析服务器_第4张图片

④由于域名劫持往往只能在特定的被劫持的网络范围内进行,所以在此范围外的DNS服务器能够返回正常的IP地址,或者修改DNS以及直接IP访问。 

Dns域名解析服务器_第5张图片

 

一般而言,用户上网的DNS服务器都是运营商分配的,所以在这个节点上,运营商可以做一些事情,比如,你去访问www.a.com,正常DNS应该返回10.0.0.1,而运营商劫持后,会返回一个运营商的中间服务器IP,访问该服务器会一致性的返回302(暂时重定向),让用户浏览器跳转到预处理好的带广告的网页,在该网页中再通过iframe打开用户原先访问的地址。 

 

DNS污染

①DNS污染又称域名服务器缓存投毒(DNS cache poisoning),它和DNS劫持的不同之处,在于污染针对的是DNS缓存,是在查询信息到达目标DNS服务器前,经过的节点上做手脚,而劫持是DNS服务器中记录的是错误的内容。(总结下就是DNS劫持是修改DNS服务器,DNS污染是修改DNS缓存。)

②举例:

对于GFW来说,DNS劫持用于国内服务器,因为可以修改服务器中的DNS记录,而对于国外服务器GFW无法更改其内容,故采用DNS污染的方式篡改用户收到的信息。其中的过程是,当你向国外DNS服务器查询DNS记录时,这些流量走到国际出口带宽的时候会遇到GFW的关键字审查,如果上了黑名单,GFW会立即向你返回一个虚假的DNS记录。上面也说到DNS走的是UDP协议,加上DNS查询结果只认最快返回的,所以一定是先收到了GFW给你返回的虚假DNS记录,就算马上你收到了真正的来自国外DNS的回复,也会被你的系统无视掉。这种攻击也被称为中间人攻击。

Dns域名解析服务器_第6张图片

 

面试经验

 一:在浏览器中输入www.baidu.com,按enter键发生了什么

1.Dns解析,ip+port

(1)查询本机浏览器的缓存,查到了返回ip给浏览器

(2)查询操作系统的缓存;ipconfig/displaydns

Dns域名解析服务器_第7张图片

 (3)操作系统中/etc/hosts文件  ip和名字的映射关系

(4)访问本地dns服务器,dns服务器给我返回解析的ip(如果本地没有的话)

Dns域名解析服务器_第8张图片

Dns域名解析服务器_第9张图片

 本地域名服务器(114.114....)去访问根域名服务器(.), 根域名服务器不会解析(www.baidu.com),根域名服务器会告诉本地域名服务器:com顶级域名服务器在哪儿(IP)
 本地域名服务器(114.114....)去访问顶级域名服务器(com), com顶级域名服务器也不会解析(www.baidu.com), 顶级域名服务器会告诉本地域名服务器, baidu二级域名服务器在哪儿(IP)        

本地域名服务器(114.114....)去访问二级域名服务器(baidu), baidu二级域名服务器也不会解析(www.baidu.com), 二级域名服务器会告诉本地域名服务器,www三级域名服务器在哪儿(ip)
本地域名服务器(114.114....)去访问三级域名服务器(www), www三级服务器解析www.baidu.com,如果解析成功了,返回IP给本地域名服务器

本地域名服务将ip返回给浏览器

2.tcp连接

3.http请求

HTTP协议工作过程

概述:

浏览器进行DNS域名解析,得到对应的IP地址

根据这个IP,找到对应的服务器建立连接(三次握手)

建立TCP连接后发起HTTP请求(一个完整的http请求报文)

服务器响应HTTP请求,浏览器得到html代码(服务器如何响应)

浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)

浏览器对页面进行渲染呈现给用户

数据传输完成,发送断开连接请求,服务器关闭TCP连接(四次挥手)

二:递归查询,迭代查询

1. DNS解析(1-4): 递归查询, (5-8): 迭代查询
    1)查询浏览器的缓存:   查到了返回IP给浏览器
    2)查询操作系统的缓存:  ipconfig/displaydns
    3)操作系统中/etc/hosts:  ip和名字的映射关系
    4)访问本地dns服务器,dns服务器给我返回解析后的IP
   5)本地域名服务器(114.114....)去访问根域名服务器(.), 根域名服务器不会解析(www.baidu.com),根域名服务器会告诉本地域名服务器:com顶级域名服务器在哪儿(IP)
   6)本地域名服务器(114.114....)去访问顶级域名服务器(com), com顶级域名服务器也不会解析(www.baidu.com), 顶级域名服务器会告诉本地域名服务器, baidu二级域名服务器在哪儿(IP)        
   7)本地域名服务器(114.114....)去访问二级域名服务器(baidu), baidu二级域名服务器也不会解析(www.baidu.com), 二级域名服务器会告诉本地域名服务器,www三级域名服务器在哪儿(ip)
   8)本地域名服务器(114.114....)去访问三级域名服务器(www), www三级服务器解析www.baidu.com,如果解析成功了,返回IP给本地域名服务器

本地域名服务器将IP返回给浏览器

你可能感兴趣的:(Rhce,服务器,http,面试)