dns域名解析

前言:DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

  • socket 
    • C/S模式 
      • Clients:发起应用请求的程序
      • Server:相应请求(提供服务)的程序 
        • 服务器端的程序必须监听在一个socket上(Socket=IP+Port),且套接字必须在客户端和服务端都有
    • 传输层协议:TCP , UDP , SCTP 
      • TCP :transmission control protocol 面向连接的协议,双方在互相通信的时候,需要建立虚链路,虚连接
      • UDP:user datagram protocol 无连接的协议,双方在互相通信的时候,不需要建立虚链路,虚连接
  • DNS(domain name service)应用层协议 
    • 属于C/S模式
    • 监听的端口:53/udp, 53/tcp
    • www.baidu.com: FQDN( full qualified damain name )
    • top level domain 
      • 组织域:.com , .net , .org , gov , edu , mil
      • 国家域:.cn , hk , tw , .jp
    • DNS查询类型 
      • 递归查询:从客户机到本地设置的DNS服务器
      • 迭代查询:从根服务器到各个子服务器
  • 通常的DNS查询过程
1)当用户在浏览器输入域名的时候,首先会在本地的hosts文件中查找,如果hosts文件中没有对应域名的IP地址,那么就会发起一个DNS协议的网络请求,对DNS根服务器的53号端口发起一个UDP请求,根服务器在解析浏览器发送的DNS请求之后,会查找本地的DNS数据库,在本地的数据库查找完毕之后会通过网络响应给客户端。那么,这个时候客户端就拿到了域名对应的IP地址,就可以访问服务器了。
2)对于用户第一次输入一个域名的时候,先会查找本地的hosts文件,如果hosts文件没有找到,那么将会在本地的DNS缓存中查找,如果本地缓存中没有找到,那么就会去找DNS服务器了。那么当DNS服务器返回解析到的IP地址给用户的时候,将会先将域名对应的IP地址暂存至缓存
    • DNS的查询分类 
      • 递归查询和迭代查询的区别 
        • (1)递归查询 
          • 递归查询是客户端面向本地的DNS服务器的一种查询方式,在该模式下运营商的DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
        • (2)迭代查询 
          • 迭代查询是运营商的DNS 服务器代理用户的DNS请求,面向全球的DNS服务器进行的查询。当客户机发送查询请求时是递归查询,而运营商的DNS服务器会首先请求根DNS 服务器,而根DNS服务器并不直接回复查询结果,而是告诉运营商DNS服务器另一台DNS 服务器地址,运营商DNS服务器再向这台DNS 服务器提交请求,依次循环直到拿到查询的结果为止。

 

Alt text

 

 

DNS解析 

    • DNS名称解析方式 
      • 名称—>IP:正向解析
      • IP—>名称:反向解析
      • 注意:二者的名称空间,非为同一个空间,非同一颗树,因此,也不是同一个解析库
    • DNS服务器类型 
      • 负责解析至少一个域 
        • 主名称服务器
        • 辅助名称服务器
      • 不负责域解析:缓存名称服务器
    • 一次完整的DNS查询请求所经过的流程 
      • Client--->hosts文件--->DNS Local Cache--->服务商的DNS server (recursion) ---> DNS服务器 
        • 自己负责解析的域:直接查询数据库并返回答案
        • 不是自己负责的解析域:server cache —> iteration(迭代)

 

posted @ 2017-09-24 18:37  ~小学生~  阅读(246)  评论(0编辑  收藏  举报