zoukankan      html  css  js  c++  java
  • 计算机网络相关:应用层协议(一):DNS

    DNS
    1.概念
     DNS是:
     1)  一个有分层的DNS服务器实现的分布式数据库
     2)一个使得主机能够查询分布式数据库的应用协议
     它运行在UDP之上,默认使用53号端口
     主要功能 是将主机域名转换为其背后的IP地址。
    2.简单过程
    举例说明,当某个用户主机上的浏览器请求URL"www.kkshishabi.com/index.html" ,这个过程中DNS做了什么?
      为了能使主机将http请求报文发送到目标服务器www.kkshishabi.com,主机必须获得服务器的IP地址,所以:
      1)该台主机上必须运行着DNS应用的客户端。
      2)浏览器从上述URL中抽取出主机名 www.kkshishabi.com ,并将其发送给DNS应用的客户端。
      3)DNS客户端向DNS服务器发送一个包含主机名的请求。
      4)DNS客户端最终会收到一份回答报文,其中含有对应于该主机名的IP地址。这个映射结果会被传递到调用DNS的应用程序(此处为浏览器)中。
      5)一旦浏览器接收到来自DNS的IP地址,它就能够向位于该IP地址80号端口的HTTP服务器进程发起一个TCP连接。
    由此可知:
     1>从用户主机调用应用程序的角度看,DNS是一个提供简单、直接的转换服务的黑盒子。
     2>DNS可能会为web应用带来额外的延迟,所以一般需要将IP地址缓存到“附近的”DNS服务器中。
    3.其他功能服务
      主机别名。简单来说,有着复杂主机名的主机可能拥有多个别名,应用程序可以调用DNS来获得主机别名对应的规范主机名和IP地址。一般经常在浏览器输入的地址可能只是一个主机别名。
      邮件服务器别名。功能类似主机别名,提供邮件服务器别名及其对应的解析功能。
      负载分配。繁忙的站点可能被冗余分布在多台服务器上,每台服务器均运行在不同的端系统上,每个有着不同的IP地址。由于这些冗余的Web服务器。一个IP地址集合就会与规范主机名联系起来,DNS数据库中就存储着这些IP,因此当用户对某个IP集合对应的服务器主机名发出DNS请求时,DNS服务器就用IP地址的整个集合响应,并在每个回答中循环这些地址的次序。
    4.DNS服务器的层级结构
     
                                                 根DNS服务器
                                             /                        
            顶级域服务器(TLD)                  顶级域服务器(TLD)
         /                                                                 /                        
    权威DNS服务器       权威DNS服务器         权威DNS服务器    权威DNS服务器
     
    DNS服务器采用分布式层次结构,由最上面的根DNS服务器负责返回TLD的IP地址,而TLD(管理com 、org、edu等)则负责返回权威服务器的IP地址,权威服务器则为公司、大学等所使用,负责返回与主机名(比如sb.department.company.com)联系的IP地址。
       一台主机为了获得目标主机的IP地址(假设要获得的IP地址sb.department.company.com),会先向本地DNS服务器发送查询请求报文,本地DNS服务器(后文用Local)会向根DNS服务器(后文用Root)发送查询报文,Root收到后注意到其前缀(这里为com),则向Local返回负责com的TLD的IP地址,Local收到回复后则又会向对应的TLD发送查询报文,TLD收到后会返回对应的权威DNS服务器(假设为dns.company.com)的IP地址,然后Local又向权威DNS服务器发送查询报文,权威DNS则返回sb.department.company.com的IP地址。此过程共经过了4次查询,所以如果不使用DNS缓存的话可能会造成很大的时间延迟。
    5.DNS缓存
       在一个请求链中,当某DNS服务器接受一个DNS回答时,它能够将该回答的信息缓存在本地存储器中,比如上文的本地DNS服务器在接受到sb.department.company.com的IP地址后,会将其缓存起来,这样下次有同样的DNS请求来查询该主机的IP地址时,本地DNS就直接返回缓存好的IP地址,大大减少了查询时间。
    6.DNS记录和报文
       DNS记录是一个包含了下列字段的4元组:
       (Name,Value,Type,TTL)
       TTL是该记录的生存时间,即决定了该记录从DNS缓存中删除的时间。
       Type即记录类型,决定了Name和Value的值。
              1)如果Type = A,则Name为主机名,Value为IP地址。
              2)如果Type = NS,则Name是个域(如baidu.com),而Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。
              3)如果Type = CNAME,则Value是别名为Name的主机对应的规范主机名。
              4)如果Type = MX,则Value是个别名为Name的邮件服务器的规范主机名。
       DNS报文:只有两种,查询报文和回答报文。报文格式如下:
    PS:没想到sb.department.company.com 竟然有人注册了- -。
    参考资料
     《计算机网络 自顶向下方法 第6版》 机械工业出版社      【美】  James F.Kurose & Keith W.Ross
  • 相关阅读:
    vim 乱码问题的方法参考
    Node.js的原型继承函数 util.inherits
    UML类图画法及其之间的几种关系
    repo 小结
    Js_Eval方法
    Js_数组操作
    Js_字体滚动换颜色
    Js_图片轮播
    Jq_网站顶部定时折叠广告
    Js_网站右下角悬浮视窗可关闭广告
  • 原文地址:https://www.cnblogs.com/0kk470/p/7878209.html
Copyright © 2011-2022 走看看