zoukankan      html  css  js  c++  java
  • 关于域名系统DNS解析IP地址的一些总结

    关于域名系统DNS(Domain Name System)

    从域名中解析出IP地址。

    DNS主要由3部分组成:

    ① 名称解析器(resolver)
    ② 域名空间(domain name space)
    ③ 名称服务器(name server)

    DNS服务器获取域名空间的部分信息的方法:

    ① 由管理员编辑一个原始区域文件;
    ② 从其他名称服务器那里复制区域文件;
    ③ 通过向其他DNS服务器查询来获取具有一定时效的缓存信息。

    名称服务器的3种主要类型:

    ① 主(primary)名称服务器:拥有一个区域文件的原始版本的服务器。

    ② 次(secondary)名称服务器:从其他主名称服务器那里复制一个区域文件。是一个只读版本。次名称服务器通过区域传输(zone transfer)跟随主名称服务器上的区域文件进行变化。

    ③ 惟高速缓存(caching-only)名称服务器:没有区域文件。它的职责是帮助名称解析器完成名称解析,并缓存解析结果,便于以后使用。当惟高速缓存名称服务器第一次启动时,他没有存储任何DNS信息。它是在启动之后,通过缓存查询的结果来逐渐建立DNS信息。缓存表项的生存时间TTL由提供授权解析结果的名称服务器决定。该服务器将查询的生存时间和名称解析一起返回。

    域名解析

    TCP/IP 的域名系统是一个有效的、可靠的、通用的、分布式的 名称——地址 映射系统。

    域名解析有两种方式:正向解析和反向解析。

    ① 正向解析:根据域名查询对其对应的IP地址或其他相关信息。

    ② 反向解析:根据主机的IP地址查询其对应的域名。
    DNS在名称空间中设置了一个称谓in-addr.arpa的特殊域,专门用于反向解析。
    为了能够使反向解析用与正向解析相同的方法进行解析,反向解析将IP地址的字节倒过来写,构成反向解析的“名称空间”。如:地址是202.119.80.126的主机的域名写成126.80.119.202.in-addr.arpa。

    DNS服务器和客户端属于TCP/IP模型的应用层,DNS既可以使用TCP,也可以使用UDP,使用的是TCP/UDP的53号端口。

    DNS接收两种类型的解析:递归解析和反复解析

    ① 递归解析(递归查询):

    图1    递归解析(递归查询)

    要求名称服务器系统一次性完成名称——地址变换。
    递归查询强制指定的DNS服务器对请求做出响应(响应要么是一个包含相应解析结果的成功的响应,要么是一个失败的响应)。
    本地的DNS服务器可能需要通过再查询一些其他的DNS服务器才能完成解析,当DNS服务器从其他服务器得到响应后,再向客户端发送回答。

    ② 反复解析(迭代查询):

    图2    反复解析(迭代查询)

    要求客户端本身反复寻求名称服务器的服务来获得最终的解析结果。
    过程:名称服务器收到请求后,若能够给出解析结果,则返回最终结果到客户端;如果本名称服务器无法给出解析结果,则返回给请求者它认为能够给出解析结果的服务器的IP地址。

    请求者收到该IP地址后,将向该地址发送解析请求,直到获得最终的解析结果或失败的响应。

    名称服务器在没有任何可以回答的信息时,将返回一个失败的响应。

    怎样提高解析效率

    可以采用两步名称解析机制和高速缓存技术解决这个问题。

    ① 两步名称解析机制

    Ⅰ. 先通过本地名称服务器进行解析;
    Ⅱ. 如果不行,再采用自顶向下的方法搜索。

    优点:既提高了效率,又保证了域名管理的层次结构。

    ② 高速缓存
    在名称服务器中使用高速缓存技术,存放最近解析过的 名称——地址 映射和描述解析该名称服务器位置的信息。

    优点:可以避免每次解析非本地名称时都进行自顶向下的搜索,从而减少非本地名称解析带来的开销。

    缺点:若授权名称服务器中的 名称——地址 映射已经发生了变化。而高速缓存未能作出相应的刷新,会有一个有效性的问题,缓存失效,从而导致解析错误。

    有效性问题解决办法:

    服务器向解析器报告缓存信息时,必须注明该信息是非授权的,同时还要指出能够给出授权解析结果的名称服务器的地址。

    此外,高速缓存中的每一个映射表项都有一个生存时间TTL,一旦某个表的TTL时间到期,便将它从缓存中删除。

    本文链接:http://www.cnblogs.com/xsilence/p/6034467.html

  • 相关阅读:
    Eclipse之JSP页面的使用
    Eclipse拷贝动态的web工程修改context root的值
    Redis的Cluster配置
    企业大数据战略定位
    批处理引擎MapReduce编程模型
    Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice)
    Listary 文件操作神器
    TextMesh Pro SpriteAsset Load From Assetbundle
    TextMesh Pro Emoji Align With Text(表情和文字对齐)
    使用Mkdocs构建你的项目文档
  • 原文地址:https://www.cnblogs.com/xsilence/p/6034467.html
Copyright © 2011-2022 走看看