DNS

1.DNS(Domain Name System)
    • 将网站的域名转换为相应的IP。 
    • 如何映射
        – 每个PC保持一个hosts文件
            » www.58.com 10.10.10.10
            » 访问是本地hosts查找IP
            » hosts文件越来越大
            » 没规定命令规则,主机名会冲突 
            » 维护映射关系代价高
        – 应用场景
            » 线下测试
    • 解决上述问题,1983年Paul Mockapetris提出域名系统
    • 分布式数据库系统
    • 一种层次的、基于域的命名方案
    • 一个完整的请求过程如下:
        – 应用程序->DNS服务器发起DNS请求
        – DNS服务器返回该域名对应的IP地址
        – 应用程序根据返回的IP地址请求对应的服务,获取数据
  
2.  • DNS协议
        – Domain_name Time_to_live Class Type Value
            » Domain_name: 指出这条记录适用于哪个域名;
            » Time_to_live: 用来表明记录的生存周期,也就是说最多可以缓存该记录多长时间(后面会讲到缓存机制);
            » Class: 一般总是IN;
            » Type: 记录的类型;
            » Value: 记录的值,如果是A记录,则value是一个IPv4地址。
 
    • 所有域名记录由DNS服务器集群存储
    • 用户计算机不用存储所有的域名->IP映射,hosts文件不大 
    • 规定了域名的命令规则,保证了主机名字不会重复
    • DNS是一个层次的的分布式数据库服务集群 
 
3.– DNS(Domain Name System)解析过程
    • 首先查找本地域名服务器(Local Server)【运营商:电信、联通等】
    • Local Server没有,查找Root服务器
    • Root服务器返回权威服务器地址
    • Local Server继续查找权威服务器
    • 找到后由Local Server返回给用户
    
– 和快递原理一样
    • 中国->城市->区域->商区->小区->门牌号
    • 中国->北京市->朝阳区->酒仙桥->酒仙桥北路甲10号院->58赶集总部
– 域名缓存
    • 不变缓存时间可长期
    • 可变缓存时间短
    • Time to Live字段灵活控制 
 
 
4.DNS劫持
    – 区域域名服务器负责用户解析请求
    – 没有机制保证域名映射是否准确
    – “流氓的域名服务器”更改一些域名的解析结果 
    – 或者区域域名服务器被黑客攻击,恶意修改
    – 引导用户一个错误的目标IP地址
    – 这就是DNS劫持
    – 劫持目标
        • 阻止用户访问某些特定网站
        • 引导用户到广告页面 
 
防DNS劫持解决方案
    – 直接使用IP地址
        • 客户端处理负责均衡 
        • 移动端(Android、iOS)
    – 使用HttpDNS
        • DNS协议->HTTP协议
        • 使用HTTP协议的80端口,取代DNS协议的53端口
        • 绕过DNS协议请求,解决运营Local DNS劫持问题 
posted @ 2017-11-04 10:36  N!CE波  阅读(320)  评论(0编辑  收藏  举报