zoukankan      html  css  js  c++  java
  • TCP/IP详解学习笔记(10)-- DNS:域名系统

    1.DNS

         DNS 是计算机域名系统(Domain Name System 或Domain Name Service) 的缩写,它是由解析器以及域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。DNS使用TCP与UDP端口号都是53,主要使用UDP,服务器之间备份使用TCP。
    • 域名解析过程:
      • 当某个应用进程需要将主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,将待解析的域名放在DNS请求报文中,以UDP数据报方式发给本地域名服务器。本地域名服务器在查找域名后,将对应的IP地址放在回答的报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
    • 域名结构:
      • 域名:任何一个链接在因特网上的主机或路由器,都拥有一个唯一的层次结构名字,该名字为域名。
      • 域:名字空间中的一个可被管理的划分,可以继续划分为子域。
      • 设计原则:域名的结构由若干个分量组成,各分量之间用点隔开,如:….三级域名.二级域名.顶级域名
        • 每一级域名都由英文字母和数字组成(不超过63个字符,不区分大小写字母),除连字符外不能使用其他标点符号。
        • 类别最低的域名写在最左边,级别最高的顶级域名写在最右边
        • 完成的域名不超过255个字符。
    • 域名的层次结构如图所示
    2.DNS的报文格式
         DNS定义了一个用于查询和响应的报文格式。这个报文由12字节长的首部和4个长度可变的字段组成
    • 标识字段:由客户程序设置并由服务器返回结果。客户程序通过他来确定响应与查询是否匹配。
    • 标志字段:16bit的标志字段被划分为若干子段,如图所示

      

      • QR:0表示查询报文,1表示响应报文
      • opcode:0标准查询,1反向查询,2服务器状态请求。
      • AA:表示“授权回答”,该名字服务器是授权于该域的。
      • TC:表示“可截断的”,使用UDP时,它表示当应答的总长度超过512字节时, 只返回前512个字节。
      • RD:表示“期望递归”。这个表示告诉名字服务器必须处理这个查询,也称为一个递归查询。
      • RA:表示“可用递归”。如果名字服务器支持递归查询,则在相应中将该比特设置为1。
      • zero:3bit为0
      • rcode:返回码字段。0为没有差错,3名字差错。
    • 问题部分
      • 问题部分中每个问题的格式如图所示,通常只有一个问题:
      • 查询名是要查找的名字,它是一个或多个标识符的序列。
      • 每个问题有一个查询类型,而每个相应也有一个类型。大约有20个不同的类型只,其中有一部分已经过时,最常用的查询类型是A类型,表示期望获得查询名的IP地址。

        

    • DNS报文最后三个字段:回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR的相同格式。如图所示:

      

      • 域名是记录中资源数据对应的名字
      • 类型说明RR的类型码
      • 生存时间是客户程序保留该资源记录的秒数
    3.DNS高速缓存
         为了减少Internet上的DNS的通信量,所有的名字服务器均使用高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
  • 相关阅读:
    C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!
    Java8的新特性以及与C#的比较
    点旋转坐标变换
    vc++返回模块路径
    为什么不要 "lock(this)" ? lock object 并是readonly(转载)
    《黄帝内经》要义
    C++多线程编程简单实例
    c++ 获取文件大小
    c# 获取文件夹大小
    自动驾驶仿真工具的下载与安装
  • 原文地址:https://www.cnblogs.com/newwy/p/3229977.html
Copyright © 2011-2022 走看看