• DNS解析域名的过程


    一、DNS解析域名的过程

      1、大的过程可分为三步:

        (1)、在缓存中查找是否之前解析过

        (2)、在windows系统的host文件中查找

        (3)、请求DNS服务器

      2、小的过程可分为十步:

        (1)、浏览器先检查自己自身有没有解析过该域名,若是解析过直接拿到之前缓存的ip,解析结束。域名被缓存的时间也可通过TTL属性来设置。

        (2)、如果浏览器中没有,会再去找操作系统中的hosts文件,里面有配置好的域名地址及ip,查看该域名是否有对应的ip,若是有,那浏览器会首先使用这个ip地址。

          如图:

          

          像这种:

          

          但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。

        (3)、此时前面两个都没有找到(专业术语叫没有命中),就请求本地域名服务器LDNS(Local DNS Server)来解析,这台服务器放在城市中某个离你很近的角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

        (4)、若是LDNS还没有,就只能跳到Root Server请求解析

        (5)、此时Root Server返回LDNS一个所查询域的主域名服务器地址 (主域名服务器:gTLD Server,国际顶尖域名服务器,如.com .cn .org等)

        (6)、此时LDNS再发送请求到gTLD Server

        (7)、接受请求的gTLD Server查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器

        (8)、Name Server根据关系映射表找到该域名对应的IP,返回给LDNS

        (9)、LDNS接收到ip后先缓存这个域名和对应的ip

        (10)、LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束

        具体解析的图:

        

        原博地址:

        https://blog.csdn.net/m0_37812513/article/details/78775629

      

  • 相关阅读:
    MongoDB 基础命令行
    AngularJS 监控对象属性:$watch和$digest
    AngularJS核心01:如何启动
    免费的编程中文书籍索引
    AngularJS Intellisense in Visual Studio 2012
    SQL Server中Rowcount与@@Rowcount
    VS 关于 .sln 文件和 .suo 文件
    Dart 基础重点截取 Dart 2 20180417
    io.netty.resolver.dns.DnsNameResolverContext
    mybatis BigDecimal Double Long 的坑爹事
  • 原文地址:https://www.cnblogs.com/rgever/p/9724264.html
Copyright © 2020-2023  润新知