计算机网络之DNS

计算机网络之DNS

  • 一、DNS解析
    • 1. 基本概念
    • 2. 解析流程
      • 2.1 简述
      • 2.2 域名的层级关系
      • 2.3 域名解析的具体过程
        • 2.3.1 递归查询(不推荐)
        • 2.3.2 迭代查询(推荐)
        • 2.3.3 高速缓存(进阶)
    • 3. DNS常见威胁
      • 3.1 DNS劫持
      • 3.2 DNS污染
    • 4. DNS的连接方式
  • 二、附加:浏览器输入url到主页的过程

一、DNS解析

1. 基本概念

  • DNS:DNS是域名系统,它是应用层的协议,负责将域名转化为IP,以供传输层建立TCP连接。
  • 作用:主机可以通过主机名或者IP地址被识别,人们喜欢便于记忆的主机名表示,而路由器则喜欢定长的、有着层次结构的IP地址。为了满足这些不同的偏好,我们就需要一种能够进行主机名到IP地址转换的目录服务,域名系统(DNS)作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

2. 解析流程

2.1 简述

  • 当我们在浏览器地址栏中输入某个Web服务器的域名时。首先用户主机会首先在自己的DNS高速缓存中查找该域名所应的IP地址。
    计算机网络之DNS_第1张图片

  • 如果没有找到,则会向网络中的某台DNS服务器查询,DNS服务器中有域名和IP地映射关系的数据库。当DNS服务器收到DNS查询报文后,在其数据库中查询,之后将查询结果发送给用户主机。
    计算机网络之DNS_第2张图片

  • 现在,用户主机中的浏览器可以通过Web服务器的IP地址对其进行访问了。
    计算机网络之DNS_第3张图片

2.2 域名的层级关系

层级关系特点

  • 因特网采用层次树状结构的域名结构。
  • 域名的结构由若干个分量组成,各分量之间用“.”隔开,分别代表不同级别的域名。
  • 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。
  • 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
  • 完整的域名不超过255个字符。
  • 域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
  • 各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。

因特网域名空间

计算机网络之DNS_第4张图片

  • 上图展示了DNS服务器的部分层次结构,从上到下依次为根域名服务器、顶级域名服务器和权限域名服务器。域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。

域名服务器的分类

  • 根域名服务器
    根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。
  • 顶级域名服务器
    这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
  • 权限域名服务器
    这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
  • 本地域名服务器
    本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。

域名的解释

  • 域名的定义方式为:三级域名.二级域名.顶级域名.,最后一个.代表根域名,我们通常省略不写。

2.3 域名解析的具体过程

2.3.1 递归查询(不推荐)

如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户端的身份,向其他根域名服务器继续发出查询请求报文,即替主机继续查询,而不是让主机自己进行下一步查询。
举例解释:假设主机 (IP地址为m.xyz.com) 想知道域名y.abc.com的IP地址。
计算机网络之DNS_第5张图片

  • 主机首先向其本地域名服务器进行递归查询。
  • 本地域名服务器收到递归查询的委托后,也采用递归查询的方式向某个根域名服务器查询。
  • 根域名服务器收到递归查询的委托后,也采用递归查询的方式向某个顶级域名服务器查询。
  • 顶级域名服务器收到递归查询的委托后,也采用递归查询的方式向某个权限域名服务器查询。
  • 当查询到域名对应的IP地址后,查询结果会在之前受委托的各域名服务器之间传递,最终传回给用户主机。
2.3.2 迭代查询(推荐)

当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP 地址,要么告诉本地服务器下一步应该找哪个域名服务器进行查询,然后让本地服务器进行后续的查询。
举例解释:假设主机 (IP地址为m.xyz.com) 想知道域名y.abc.com的IP地址。
计算机网络之DNS_第6张图片

  • 主机首先向其本地域名服务器进行递归查询。
  • 本地域名服务器采用迭代查询,它先向某个根域名服务器查询。
  • 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器的IP地址。
  • 本地域名服务器向顶级域名服务器进行迭代查询。
  • 顶级域名服务器告诉本地域名服务器,下一次应查询的权限域名服务器的IP地址。
  • 本地域名服务器向权限域名服务器进行迭代查询。
  • 权限域名服务器告诉本地域名服务器所查询的域名的IP地址。
  • 本地域名服务器最后把查询的结果告诉主机。
2.3.3 高速缓存(进阶)

计算机网络之DNS_第7张图片

  • 为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
  • 由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
  • 不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。

3. DNS常见威胁

3.1 DNS劫持

计算机网络之DNS_第8张图片

基本概念

  • DNS劫持指DNS服务器被控制,用户查询DNS时,服务器直接返回它想让你看到的结果(转到劫持者指定的网站)。DNS劫持一般为互联网服务提供商ISP所为,用于提供自己的广告之类的。

原理

  • 通过某些手段取得某些域名的解析记录控制权,进而修改这些域名的解析结果,导致对该域名的访问由原IP地址转入到劫持者指定的IP。

解决

  • 手动更换公共 DNS 服务器,绕过被劫持的 DNS 服务器。

3.2 DNS污染

计算机网络之DNS_第9张图片

基本概念

  • 又称DNS缓存投毒,通过制造一些虚假的域名服务器数据包,将域名指向不正确的IP地址。

原理

  • 由于域名查询没有任何认证机制,且通常是基于无连接不可靠的UDP协议,查询者只接受最先到达且格式正确的查询结果(后来的查询结果均被丢弃),因此可以通过对UDP的53端口上的域名查询进行IDS入侵检测,一旦发现相匹配的域名查询请求,就立刻伪装成目标域名的解析服务器返回虚假的查询结果,不过由于缓存过期时间的限制,污染的域名不是一成不变的,若某个污染过的域名缓存记录过了缓存过期时间后没有对其进行再污染,则该域名的污染就会消失。

解决

  • 绕过被污染的非权威DNS服务器,直接访问干净的公共DNS服务器。
  • 在本机直接绑定hosts,绕过DNS解析过程。(但由于IP地址会变更,故本机的hosts也需要不断更新)。
  • 对于无法绕开的DNS服务器,需要使用混淆/加密代理让它无法识别、篡改DNS数据。(该方法也可以绕过IP黑名单机制)。

4. DNS的连接方式

  • DNS既使用TCP又使用 UDP。
  • 当进行区域传送(主域名服务器向辅助域名服务器传送变化的那部分数据)时会使用TCP,因为数据同步传送的数据量比一个请求和应答的数据量要多,而TCP允许的报文长度更长,因此为了保证数据的正确性,会使用基于可靠连接的 TCP。
  • 当客户端向DNS服务器查询域名 ( 域名解析) 的时候,一般返回的内容不会超过UDP报文的最大长度,即512字节。用UDP传输时,不需要经过 TCP三次握手的过程,从而大大提高了响应速度,但这要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。

二、附加:浏览器输入url到主页的过程

计算机网络之DNS_第10张图片1. 用户在某网页输入URL并回车后,浏览器主进程会新开一个网络线程,发起HTTP请求。
2. 浏览器会进行DNS查询,将域名解析为IP地址。
3. 浏览器获得IP地址后,通过三次握手向服务器请求建立TCP连接。
4. 浏览器向服务器发起HTTP请求。
5. 服务器处理请求,返回HTTP响应。
6. 浏览器的渲染进程解析并绘制页面。
7. 浏览器和服务器通过四次挥手断开TCP连接。

你可能感兴趣的:(简单总结版-计算机网络,网络,网络协议,http)