dns_dnspy - CSDN
dns 订阅
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。 展开全文
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
信息
英文缩写
DNS
外文名
DomainName System
中文名
域名系统
域名系统基本介绍
域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成,记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。虽然因特网上的节点都可以用IP地址惟一标识,并且可以通过IP地址被访问,但即使是将32位的二进制IP地址写成4个0~255的十位数形式,也依然太长、太难记。因此,人们发明了域名(Domian Name),域名可将一个IP地址关联到一组有意义的字符上去。用户访问一个网站的时候,既可以输入该网站的IP地址,也可以输入其域名,对访问而言,两者是等价的。例如:微软公司的Web服务器的IP地址是207.46.230.229,其对应的域名是www.microsoft.com,不管用户在浏览器中输入的是207.46.230.229还是www.microsoft.com,都可以访问其Web网站。一个公司的Web网站可看作是它在网上的门户,而域名就相当于其门牌地址,通常域名都使用该公司的名称或简称。例如上面提到的微软公司的域名,类似的还有:IBM公司的域名是www.ibm.com、Oracle公司的域名是www.oracle.com、Cisco公司的域名是www.cisco.com等。当人们要访问一个公司的Web网站,又不知道其确切域名的时候,也总会首先输入其公司名称作为试探。但是,由一个公司的名称或简称构成的域名,也有可能会被其他公司或个人抢注。甚至还有一些公司或个人恶意抢注了大量由知名公司的名称构成的域名,然后再高价转卖给这些公司,以此牟利。已经有一些域名注册纠纷的仲裁措施,但要从源头上控制这类现象,还需要有一套完整的限制机制,这个还没有。所以,尽早注册由自己名称构成的域名应当是任何一个公司或机构,特别是那些著名企业必须重视的事情。有的公司已经对由自己著名品牌构成的域名进行了保护性注册。
收起全文
精华内容
参与话题
  • 终于有人把域名和DNS服务器给写明白了

    万次阅读 多人点赞 2020-05-10 16:39:17
    终于有人把域名和DNS服务器给写明白了

    前言逗逗乐

    开局一个图,自己先体会一下,为什么会这样? 一起带着这个疑问,来看这篇文章吧。
    在这里插入图片描述

    一、DNS概述

    DNS:域名系统(Domain Name System);说到域名就有必要了解一下域的概念。

    1、域

    域表示一个范围,域内可以容纳许多主机,并非每一台接入Internet的主机都必须具有一个域名地址,但是每一台主机都必须属于某个域,通过该域的域名服务器可以查询和访问到这一台主机。域名采用层次命名结构:域.子域(.子域 (.子域)),它体现了一种隶属关系。如下图所示:

    在这里插入图片描述

    2、域名服务器

    域名服务器实现域名地址与IP地址的映射。Internet中设置一系列的域名服务器,域名服务器数据库记录本域内的主机名和IP地址的映射信息,以及上一级域名服务器的IP地址等,并以客户-服务器模式(C/S模式)响应客户端的请求。

    3、DNS的工作过程

    如下图所示,是某个学校的校园网:
    在这里插入图片描述

    内网用户就可以通过218.2.135.1这台域名服务器来解析内网的域名了。

    像校内办公的WWW服务器,这台服务器肯定不能面向广大的互联网,如果公开面向所有人的话,会存在一定的风险。所以校内办公,那么校内办公也是需要访问服务器的,例如:211.133.92.29这台服务器,那么这台域名服务器就起到作用了。

    如果用户浏览器地址栏中输入http://lib.xhu.edu.cn ,客户端发送请求到本地的DNS服务区(211.133.92.29).询问http://lib.xhu.edu.cn的IP地址。 本地的DNS服多器查看是否在城名P地址表中,如果是,就回复应答;如果不是就从上一级查起。上一级DNS服务器中如果没有,再上上一级DNS服务器查询。

    img

    注:图片来自博客 从输入url到页面加载完都做了什么

    ​ 在上图过程中本地域名服务器完成的就是迭代的过程,本地域名服务器先去找根域名服务器,根域名服务器告诉它去找.com顶级域名服务器,而后本地服务器又去询问.com域名服务器,.com域名服务器告诉他去找google.com域名服务器,google.com域名服务器正是负责解析www.google.com这个域名的服务器,返回权威答案给本地域名服务器。

    ​ 客户端即是递归去查询,仅发出一次解析www.google.com域名的请求给本地服务器,剩下的事情就是等待答案。

    4、DNS服务器种类

    DNS定义多种类型的服务器,每种服务器在域名服务系统中所起的作用也不一样,基本上可以分为: DNS主服务器、DNS从服务器、DNS 缓存服务器和转发服务器。

    • (1) 主服务器(master server);
    • (2) 从服务器(slave server);
    • (3) 缓存服务器(cache server);
    • (4) 转发服务器(forward server)。

    (1)主服务器(master server)

    每个网络中至少有一台主服务器解析网络上的域名请求,通过本地维护更新有关服务器授权管理域的最精确度信息。主服务器具有最权威的回答机制,能够完成任何关于授权管理域的查询。

    下图所示在一个内网中,只有一台DNS服务器。这个单台服务器可以支撑一个比较小的单位的域名查询,但是不足以支撑一个庞大的域名使用群体。
    在这里插入图片描述

    (2) 从服务器(slave server)

    在-个比较大的网络中,为了确保主服务器的可用性,最好是架设几台从服务器,这样一旦主服务 器不能工作时,还有从服务器工作。另一个优点是从服务器可以分担负载,以确保所有的主机都有比较靠近的域名服务器,方便访问。

    如下图所示,就可以简单的表达主从关系。进而可以做到负载均衡的作用。
    在这里插入图片描述

    (3) 缓存服务器(cache server)

    缓存服务器没有任何域名数据库文件,记录发送到主服务器之前的查询结果,一且获得答案, 该服务器就将答案缓存起来以免将来对同一信息查询。任何重复的请求都可以由缓存服务器应答,不必再查询主服务器或者从服务器。

    如下图所示就是使用了缓存DNS服务器的结构图,使用了缓存DNS服务器之后,如果DNS域名第一次被查询了,就会被DNS缓存服务器给缓存,第二次再查询的时候,就会很快等优点。

    在这里插入图片描述

    下午是我找的一个,比较好的解释了这个缓存服务器的作用,和过程。

    浅析DNS缓存技术及应用考虑-InfoQ

    (4) 转发服务器(forward server)

    当DNS server 不能解析相关DNS请求时会被转送特定的服务器上,用户可以设置网络中的DNS服务器 转发服务器来完成此到Internet功能。转发服务器器将要解析的DNS请求转发到网络以外的服务器。

    下图也可以诠释转发DNS服务器的工作过程,就是负责转发。

    DNS之四---实现DNS的转发功能- 努力奋斗~~ - 博客园

    二、使用BIND搭建DNS服务器前奏

    (一)BIND的介绍

    BIND(Berkeley Internet Name Daemon),是由加州大学伯克莱分校所研发出来的BSD Unix中的一部分,现在由ISC组织负责维护与发展。是现今互联网上最常使用的DNS域名系统。

    BIND的域名服务器可以作为区域的主服务器、从服务器或者缓存服务器。虽然主服务器和缓存服务器在逻辑上是不同的,但是可以放在不同的服务器上运行。主服务器只为本地客户提供递归查询则不需要暴露在互联网上,因此可以放在防火墙后面。

    (二)安装BIND

    在任何操作系统上都不会自带着BIND服务,所以要想实现DNS服务功能,就必须先安装bind相关软件包。

    首先查看是否已经存在:

    [root@localhost ~]# 
    [root@localhost ~]# rpm -qa |grep bind
    [root@localhost ~]# 
    

    如果不存在就可以安装了:

    [root@localhost ~]# yum -y install bind
    ....
    安装过程省略,太多了
    

    可以再次查看是否安装:(出现下面这些,则安装成功)

    [root@localhost ~]# rpm -qa |grep bind
    bind-libs-lite-9.11.4-16.P2.el7_8.2.x86_64
    bind-9.11.4-16.P2.el7_8.2.x86_64
    bind-license-9.11.4-16.P2.el7_8.2.noarch
    bind-libs-9.11.4-16.P2.el7_8.2.x86_64
    [root@localhost ~]# 
    

    (三)卸载BIND

    支持yum和rpm等都可以卸载,这里只说明用yum怎么卸载,具体rpm的方式可以自行网络上查询下。

    因为可以使用rpm -qa |grep bind查询出来安装的具体的软件包:

    [root@localhost ~]# rpm -qa |grep bind
    bind-libs-lite-9.11.4-16.P2.el7_8.2.x86_64
    bind-9.11.4-16.P2.el7_8.2.x86_64
    bind-license-9.11.4-16.P2.el7_8.2.noarch
    bind-libs-9.11.4-16.P2.el7_8.2.x86_64
    [root@localhost ~]# 
    

    在shell中支持把查询后的结果作为变量的方式传递给另一个命令,咱们就可以使用这种方式一下子卸载,从而不必关心依赖的问题。

    [root@localhost ~]# yum -y remove $(rpm -qa |grep bind)
    
    ....
    
    省略...
    
    ....
    
    
    删除:
      bind.x86_64 32:9.11.4-16.P2.el7_8.2                                               
      bind-libs.x86_64 32:9.11.4-16.P2.el7_8.2                                          
      bind-libs-lite.x86_64 32:9.11.4-16.P2.el7_8.2                                     
      bind-license.noarch 32:9.11.4-16.P2.el7_8.2                                       
    
    完毕!
    [root@localhost ~]# 
    

    再次查询如果没有就说明卸载成功:

    [root@localhost ~]# rpm -qa |grep bind
    [root@localhost ~]# 
    

    (四)bind的配置文件

    管理DNS的主要配置文件有6个,他们分别是:/etc/named.conf/etc/named.rfc1912.zones/var/named.localhost/var/named.loopback/var/named.ca。其中/etc/named.conf/etc/named.rfc1912.zones共同组成了bind的主配置文件,但是不包含DNS的数据库。它们的作用配置全局参数,调配正向和反向数据库文件

    1、主配置文件/etc/named.conf

    /etc/named.conf配置文件存在的目的就是定义named服务进程管理和维护所需要的配置文件等。使named服务进程能够知道其维护的每一个域和区配置文件的名字和其目录位置。

    **主配置文件/etc/named.conf**的内容如下:

    如果你没有vim的话,建议你安装上,这样有个好处就是会看到五彩缤纷的配置文件。

    [root@localhost ~]# vim /etc/named.conf
    bash: vim: 未找到命令
    [root@localhost ~]# yum -y install vim
    

    内容:(为了方便查看,我去掉了大量的注释)

    精彩配图:
    在这里插入图片描述

    [root@localhost ~]# cat /etc/named.conf
    options {
    	listen-on port 53 { 127.0.0.1; };
    	listen-on-v6 port 53 { ::1; };
    	directory 	"/var/named";
    	dump-file 	"/var/named/data/cache_dump.db";
    	statistics-file "/var/named/data/named_stats.txt";
    	memstatistics-file "/var/named/data/named_mem_stats.txt";
    	recursing-file  "/var/named/data/named.recursing";
    	secroots-file   "/var/named/data/named.secroots";
    	allow-query     { localhost; };
    
    
    	recursion yes;
    
    	dnssec-enable yes;
    	dnssec-validation yes;
    
    	/* Path to ISC DLV key */
    	bindkeys-file "/etc/named.root.key";
    
    	managed-keys-directory "/var/named/dynamic";
    
    	pid-file "/run/named/named.pid";
    	session-keyfile "/run/named/session.key";
    };
    
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    
    zone "." IN {
    	type hint;
    	file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    

    (1)options语句块

    服务器的全局配置选项及一些默认设置。

    //监听端口,也可写为 { 127.0.0.1; 192.168.139.46; }

    `listen-on port 53 { any; };`
    

    //IPV6的表达

    `listen-on-v6 port 53 { ::1; }; `
    

    //区域文件存储目录

    `directory       "/var/named";  `
    

    //域名缓存文件的位置和文件名

    `dump-file       "/var/named/data/cache_dump.db";`
    

    //域名服务器的统计信息文件

    `statistics-file "/var/named/data/named_stats.txt";`
    

    //-------------------------

    `memstatistics-file "/var/named/data/named_mem_stats.txt";`
    

    //服务器记录named进程ID的文件路径

    `pid-file        "/var/run/named/named.pid";`
    

    //其他DNS服务器的地址,如果域名服务器无法解析时,将请求交由168.95.1.1; 139.175.10.20来解析。

    `forwarders     { 168.95.1.1; 139.175.10.20; }; `
    

    //指定允许进行查询的主机IP,所有的电脑都可以查用any

    `allow-query    { any; };  ` 
    

    //指定允许接受区域传送请求的主机,说明白一点就是辅dns定义,比如辅dns的ip是192.168.139.5,那么可以这样定义{ 192.168.139.5; },要不然主辅dns不能同步,当然,{}里的也可以用下面提到的acl。

    `allow-transfer { none; };` 
    

    //allow-source:指定从哪一个源IP地址(或端口)中执行区域配置数据传输,获取配置数据副本,这个选项英语主服务器的allow-transfer相对应

    // `query-source  port 53;`  :当前域名服务器查询不到时,用它指定查询其他域名服务器时用的IP和端口号
    
    // `query-source-v6 port 53;`
    
    //`recursion`:指定当前递归查询是否由服务器代替客户机执行,默认值为yes。
    
    //`allow-recursion`:细化控制域名服务器的递归查询。
    

    (2)logging语句块

    指定服务器日志记录的内容和日志信息来源

    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    

    (3)zone语句块

    hint只针对.域进行设置。

    type:hint

    根NS的设置,也就是.域的服务器设置。因为我们知道,客户端从指定的NS上找不到记录后,将会出现两种情况,一种向.域服务器请求查询。一种将请求转发到上一级NS服务器。这里的设置是指第一种。

    zone "." IN {
            type hint;
            file "named.ca";
    };
    

    (4)include语句块

    include语句块:用于组合指定的配置,可以提高配置文件的模块化

    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    

    2、/etc/named.rfc1912.zones 配置文件

    配置解析库主配置文件

    一图胜千言

    在这里插入图片描述

    zone "localhost.localdomain" IN {
    	type master;
    	file "named.localhost";
    	allow-update { none; };
    };
    
    zone "localhost" IN {
    	type master;
    	file "named.localhost";
    	allow-update { none; };
    };
    
    zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
    	type master;
    	file "named.loopback";
    	allow-update { none; };
    };
    
    zone "1.0.0.127.in-addr.arpa" IN {
    	type master;
    	file "named.loopback";
    	allow-update { none; };
    };
    
    zone "0.in-addr.arpa" IN {
    	type master;
    	file "named.empty";
    	allow-update { none; };
    };
    

    3、正向与反向数据配置文件

    数据文件默认在/var/named/目录下:

    [root@localhost ~]# ll /var/named/
    总用量 16
    drwxrwx---. 2 named named    6 4月   7 10:41 data
    drwxrwx---. 2 named named    6 4月   7 10:41 dynamic
    -rw-r-----. 1 root  named 2253 4月   5 2018 named.ca
    -rw-r-----. 1 root  named  152 12月 15 2009 named.empty
    -rw-r-----. 1 root  named  152 6月  21 2007 named.localhost
    -rw-r-----. 1 root  named  168 12月 15 2009 named.loopback
    drwxrwx---. 2 named named    6 4月   7 10:41 slaves
    [root@localhost ~]# 
    

    图片比较清晰:

    在这里插入图片描述

    三、实战使用BIND搭建DNS服务器

    在这里插入图片描述

    (一)DNS主服务器搭建实战

    1、环境准备

    操作系统:Centos7

    IP:192.168.9.105/24

    本机dns地址的配置可以参考:

    [root@localhost ~]# cat /etc/resolv.conf
    # Generated by NetworkManager
    nameserver 192.168.9.105
    nameserver 202.102.128.68
    nameserver 202.102.152.3
    [root@localhost ~]# 
    

    2、配置主配置文件

    在配置的时候,一定要先备份一下,不然遇到错误了,就比较麻烦了。这里只提醒一次,之后请自行备份哦,初学者要养成习惯。

    [root@localhost ~]# cp -p /etc/named.conf /etc/named.conf.bak
    [root@localhost ~]# 
    

    打开/etc/named.conf:

    [root@localhost ~]# vim /etc/named.conf
    

    配置内容如下:

    在这里插入图片描述

    为了方便大家后期学习,代码也给放上:

    [root@localhost ~]# cat /etc/named.conf
    options {
    	listen-on port 53 { any; };
    	listen-on-v6 port 53 { ::1; };
    	directory 	"/var/named";
    	dump-file 	"/var/named/data/cache_dump.db";
    	statistics-file "/var/named/data/named_stats.txt";
    	memstatistics-file "/var/named/data/named_mem_stats.txt";
    	recursing-file  "/var/named/data/named.recursing";
    	secroots-file   "/var/named/data/named.secroots";
    	allow-query     { any; };
    
    	recursion yes;
    
    	dnssec-enable no;
    	dnssec-validation no;
    
    	/* Path to ISC DLV key */
    	bindkeys-file "/etc/named.root.key";
    
    	managed-keys-directory "/var/named/dynamic";
    
    	pid-file "/run/named/named.pid";
    	session-keyfile "/run/named/session.key";
    };
    
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    
    zone "." IN {
    	type hint;
    	file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    

    3、配置named.rfc1912.zones 文件

    在这里插入图片描述

    zone "taobao" IN {
            type master;
            file "taobao.zone";
            allow-update { none; };
    };
    
    
    #注意此处,因为我的网络的范围是:192.168.9.0/24的,这里就要区一个范围,而且是倒着的
    zone "9.168.192.in-addr.arpa" IN {
            type master;
            file "192.arpa";
            allow-update { none; };
    };
    

    4、配置正反向数据库解析文件

    因为正反向的数据库文件都起好了名字,所以这里要拷贝成自己命名的文件。

    [root@localhost ~]# cp -p /var/named/named.empty /var/named/192.arpa
    [root@localhost ~]# 
    [root@localhost ~]# cp -p /var/named/named.localhost /var/named/taobao.zone
    [root@localhost ~]# 
    [root@localhost ~]# ll /var/named/
    总用量 24
    -rw-r-----  1 root  named  152 12月 15 2009 192.arpa
    drwxrwx---. 2 named named    6 4月   7 10:41 data
    drwxrwx---. 2 named named    6 4月   7 10:41 dynamic
    -rw-r-----. 1 root  named 2253 4月   5 2018 named.ca
    -rw-r-----. 1 root  named  152 12月 15 2009 named.empty
    -rw-r-----. 1 root  named  152 6月  21 2007 named.localhost
    -rw-r-----. 1 root  named  168 12月 15 2009 named.loopback
    drwxrwx---. 2 named named    6 4月   7 10:41 slaves
    -rw-r-----  1 root  named  152 6月  21 2007 taobao.zone
    [root@localhost ~]# 
    

    在这里插入图片描述

    (1)配置正向解析文件

    编辑文件

    [root@localhost ~]# vim /var/named/taobao.zone 
    

    在这里插入图片描述

    内容如下:

    $TTL 1D
    @       IN SOA  taobao.com. rname.invalid. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns.taobao.com.
            MX 5    mail.taobao.com.
    mail    A       192.168.9.106
    dns     A       192.168.9.105
    www     A       192.168.9.107
    ftp     A       192.168.9.108
    

    (2)配置反向解析文件

    打开

    [root@localhost ~]# vim /var/named/192.arpa 
    

    内容如下:

    $TTL 3H
    @       IN SOA  taobao.com. rname.invalid. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns.taobao.com.
            MX 5    mail.taobao.com.
    106     PTR     mail.taobao.com.
    105     PTR     dns.taobao.com.
    107     PTR     www.taobao.com.
    108     PTR     ftp.taobao.com.                         
    

    在这里插入图片描述

    5、启动named

    [root@localhost ~]# 
    [root@localhost ~]# systemctl start named
    [root@localhost ~]# 
    [root@localhost ~]# 
    

    如果没有问题的话,就代表启动成功了

    6、测试

    如果没有此命令的话就会显示:

    [root@localhost ~]# nslookup
    bash: nslookup: 未找到命令
    

    可以安装一下:

    [root@localhost ~]# 
    [root@localhost ~]# yum -y install bind-utils
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.aliyun.com
     * extras: mirrors.aliyun.com
     * updates: mirror.bit.edu.cn
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 bind-utils.x86_64.32.9.11.4-16.P2.el7_8.2 将被 安装
    --> 解决依赖关系完成
    
    依赖关系解决
    
    ==============================================================================
     Package         架构        版本                          源            大小
    ==============================================================================
    正在安装:
     bind-utils      x86_64      32:9.11.4-16.P2.el7_8.2       updates      259 k
    
    事务概要
    ==============================================================================
    安装  1 软件包
    
    总下载量:259 k
    安装大小:584 k
    Downloading packages:
    bind-utils-9.11.4-16.P2.el7_8.2.x86_64.rpm               | 259 kB   00:00     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      正在安装    : 32:bind-utils-9.11.4-16.P2.el7_8.2.x86_64                 1/1 
      验证中      : 32:bind-utils-9.11.4-16.P2.el7_8.2.x86_64                 1/1 
    
    已安装:
      bind-utils.x86_64 32:9.11.4-16.P2.el7_8.2                                   
    
    完毕!
    
    

    然后就可以了:

    [root@localhost ~]# 
    [root@localhost ~]# nslookup
    > 
    

    测试:

    我在win10上把dns改成了DNS服务器的地址:

    在这里插入图片描述

    测试结果:

    出现下面这个结果就ok了,非权威应答是真正淘宝的域名。自己可以尝试着去解析一下其他的。

    C:\Users\80429>nslookup
    默认服务器:  dns.taobao.com
    Address:  192.168.9.105
    
    >
    > taobao.com
    服务器:  dns.taobao.com
    Address:  192.168.9.105
    
    非权威应答:
    名称:    taobao.com
    Addresses:  140.205.220.96
              140.205.94.189
    
    >
    

    7、关闭named

    [root@localhost ~]# systemctl stop network
    

    8、重启named

    [root@localhost ~]# systemctl restart network
    

    (二)DNS主从服务器搭建实战

    …后续更新

    (三)DNS缓存服务器搭建实战

    …后续更新

    文末说明

    如果对你有帮助,可以分享给你身边的朋友。或者给俺点个大大的赞,点赞就是给我最大的支持,感谢。
    水平有限,难免会有疏漏或者书写不合理的地方,欢迎交流讨论。
    作者:TrueDei
    作者主页:https://truedei.blog.csdn.net/
    原文地址:https://truedei.blog.csdn.net/article/details/106037921
    转载说明:如需转载请注明原地址和作者名。

    展开全文
  • DNS域名解析

    万次阅读 多人点赞 2018-04-29 14:58:09
    域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网...

    转载自:https://www.cnblogs.com/idmask/p/4485836.html

    文章中存在少量个人理解,可能不太对,欢迎指出.

    一、域名系统

    1.域名系统概述

    域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。

    我们都知道,IP地址是由32位的二进制数字组成的。用户与因特网上某台主机通信时,显然不愿意使用很难记忆的长达32位的二进制主机地址。即使是点分十进制IP地址也并不太容易记忆。相反,大家愿意使用比较容易记忆的主机名字。但是,机器在处理IP数据报时,并不是使用域名而是使用IP地址。这是因为IP地址长度固定,而域名的长度不固定,机器处理起来比较困难。

    因为因特网规模很大,所以整个因特网只使用一个域名服务器是不可行的。因此,早在1983年因特网开始采用层次树状结构的命名方法,并使用分布式的域名系统DNS。并采用客户服务器方式。DNS使大多数名字都在本地解析(resolve),仅有少量解析需要在因特网上通信,因此DNS系统的效率很高。由于DNS是分布式系统,即使单个计算机除了故障,也不会妨碍整个DNS系统的正常运行。

    域名到IP地址的解析是由分布在因特网上的许多域名服务器程序共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。

    域名到IP地址的解析过程的要点如下:

    1. 当某一个应用需要把主机名解析为IP地址时,该应用进程就调用解析程序,并称为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。
    2. 本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用程序获得目的主机的IP地址后即可进行通信。
    3. 若本地域名服务器不能回答该请求,则此域名服务器就暂时称为DNS的另一个客户,并向其他域名服务器发出查询请求。

    //用一个图总结下就是:

    这里写图片描述

    这种过程直至找到能够回答该请求的域名服务器为止。此过程在后面作进一步讨论。


    2.因特网的域名结构

    由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。

    从语法上讲,每一个域名都是有标号(label)序列组成,而各标号之间用点(小数点)隔开。

    如下例子所示:
    这里写图片描述

    1.这是中央电视台用于手法电子邮件的计算机的域名,它由三个标号组成,其中标号com是顶级域名,标号cctv是二级域名,标号mail是三级域名。

    DNS规定,域名中的标号都有英文和数字组成,每一个标号不超过63个字符(为了记忆方便,一般不会超过12个字符),也不区分大小写字母。

    级别最低的域名写在最左边,而级别最高的字符写在最右边。
    由多个标号组成的完整域名总共不超过255个字符。

    DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。

    编号 类型 详情
    (1) 国家顶级域名nTLD 采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
    (2) 通用顶级域名gTLD 最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
    (3) 基础结构域名(infrastructure domain) 这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。(2)通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。

    来一个大概图:
    这里写图片描述

    3、域名服务器

    如果采用上述的树状结构,每一个节点都采用一个域名服务器,这样会使得域名服务器的数量太多,使域名服务器系统的运行效率降低。所以在DNS中,采用划分区的方法来解决。

    一个服务器所负责管辖(或有权限)的范围叫做区(zone)。
    各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。

    总之,DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是DNS服务器实际管辖的范围。

    区 <= 域。

    下图是区的不同划分方法的举例。假定abc公司有下属部门x和y,部门x下面有分三个分布们u,v,w,而y下面还有下属部门t。图a表示abc公司只设一个区abc.com。这是,区abc.com和域abc.com指的是同一件事。但图b表示abc公司划分为两个区:abc.com和y.abc.com。这两个区都隶属于域abc.com,都各设置了相应的权限域名服务器。不难看出,区是域的子集。

    这里写图片描述
    下图是以上图b中abc公司划分的两个区为例,给出了DNS域名服务器树状结构图。这种DNS域名服务器树状结构图可以更准确地反映出DNS的分布式结构。图中的每一个域名服务器都能够部分域名到IP地址的解析。当某个DNS服务器不能进行域名到IP地址的转换时,它就会设法找因特网上别的域名服务器进行解析。

    从下图可以看出,因特网上的DNS服务器也是按照层次安排的。每一个域名服务器只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为下面四种不同的类型。

    这里写图片描述

    根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。所以根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。需要注意的是,在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

    顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。

    权限域名服务器:负责一个“区”的域名服务器。

    本地域名服务器:本地服务器不属于下图的域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。

    • 从”根域名服务器”查到”顶级域名服务器”的NS记录和A记录(IP地址)
    • 从”顶级域名服务器”查到”次级域名服务器”的NS记录和A记录(IP地址)
    • 从”次级域名服务器”查出”主机名”的IP地址

    4、域名的解析过程

    注意:

    一、主机向本地域名服务器的查询一般都是采用递归查询。

    所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

    二、本地域名服务器向根域名服务器的查询的迭代查询。

    迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

    下图给出了这两种查询的差别

    这里写图片描述

    5.下面举一个例子演示整个查询过程:

    假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是上图a的几个查询步骤:

    Created with Raphaël 2.1.2 1、主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。 2、本地服务器采用迭代查询。它先向一个根域名服务器查询。 3、根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。 4、本地域名服务器向顶级域名服务器dns.com进行查询。5、顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。 6、本地域名服务器向权限域名服务器dns.abc.com进行查询。 7、权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。 8、本地域名服务器最后把查询结果告诉m.xyz.com。

    下面用代码看一下:

    2.关于DNS解析的TTL参数:

    我们在配置DNS解析的时候,有一个参数常常容易忽略,就是DNS解析的TTL参数,Time To Live。TTL这个参数告诉本地DNS服务器,域名缓存的最长时间。用阿里云解析来举例,阿里云解析默认的TTL是10分钟,10分钟的含义是,本地DNS服务器对于域名的缓存时间是10分钟,10分钟之后,本地DNS服务器就会删除这条记录,删除之后,如果有用户访问这个域名,就要重复一遍上述复杂的流程。

    其实,如果网站已经进入稳定发展的状态,不会轻易更换IP地址,我们完全可以将TTL设置到协议最大值,即24小时。带来的好处是,让域名解析记录能够更长时间的存放在本地DNS服务器中,以加快所有用户的访问。设置成24小时,其实,还解决了Googlebot在全球部署的服务器抓取网站可能带来的问题,这个问题麦新杰专门有一篇博文,请参考:“Googlebot无法访问您的站点”问题理解和处理方法

    阿里云之所以只将TTL设置成10分钟,是为了让域名解析更快生效而已。因为之前的解析会在最长10分钟之后失效(本地DNS服务器将对应的解析条目删除),然后新的解析生效。如果是24小时,这个生效的时间最长就是24小时,甚至更长(本地DNS服务器要有用户请求,才会发起查询)。

    3.IP地址分类

    最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。

    序号 类别 解释
    1 A类IP地址 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。
    2 B类IP地址 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。
    3 C类IP地址 一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
    4 D类地址用于多点广播(Multicast)。 D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。224.0.0.0到239.255.255.255用于多点广播 。
    5 E类 E类IP地址 以“llll0”开始,为将来使用保留。240.0.0.0到255.255.255.254,255.255.255.255用于广播地址。全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

    在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:

    • A类地址:10.0.0.0~10.255.255.255
    • B类地址:172.16.0.0~172.31.255.255
    • C类地址:192.168.0.0~192.168.255.255

    A类地址的第一组数字为1~126。其中0代表任何地址,127为回环测试地址,注意,数字0和 127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。

    B类地址的第一组数字为128~191。C类地址的第一组数字为192~223。
    1. A类地址 A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0;A类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。
    2. B类地址B类地址的表示范围为:128.0.0.0~191.255.255.255,默认网络掩码为:255.255.0.0;B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。
    3. C类地址 C类地址的表示范围为:192.0.0.0~223.255.255.255,默认网络掩码为:255.255.255.0;C类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。

    实际上,还存在着D类地址和E类地址。但这两类地址用途比较特殊,在这里只是简单介绍一下:D类地址称为广播地址,供特殊协议向选定的节点发送信息时用。E类地址保留给将来使用。

    参考:
    http://blog.sina.com.cn/s/blog_15b5e88870102wi4w.html

    http://www.ruanyifeng.com/blog/2016/06/dns.html

    展开全文
  • 什么是DNS

    万次阅读 2018-08-23 18:43:58
    什么是DNS 域名系统(DNS)是因特网的电话簿。人类通过域名在线访问信息,如nytimes.com或espn.com。Web浏览器通过Internet协议(IP)地址进行交互。DNS将域名转换为IP地址,以便浏览器可以加载Internet资源。 ...

    什么是DNS

    域名系统(DNS)是因特网的电话簿。人类通过域名在线访问信息,如nytimes.comespn.comWeb浏览器通过Internet协议(IP)地址进行交互。DNS将域名转换为IP地址以便浏览器可以加载Internet资源。

    连接到Internet的每个设备都有一个唯一的IP地址,其他计算机可以使用该IP地址来查找设备。DNS服务器无需人类记忆IP地址,如192.168.1.1(在IPv4中),或更复杂的新字母数字IP地址,如2400cb0020481 :: c629d7a2(在IPv6中)。

    DNS如何工作?

    DNS解析过程涉及将主机名(例如www.example.com)转换为计算机友好的IP地址(例如192.168.1.1)。Internet上的每个设备都会获得一个IP地址,该地址是查找相应Internet设备所必需的 - 就像使用街道地址查找特定的家庭一样。当用户想要加载网页时,必须在用户键入其Web浏览(example.com)和找到example.com网页所需的机器友好地址之间进行翻译。

    为了理解DNS解析背后的过程,了解DNS查询必须在其间传递的不同硬件组件非常重要。对于Web浏览器,DNS查找在幕后发生,除了初始请求之外,不需要来自用户计算机的交互。

     

    加载网页涉及4DNS服务器:

    • DNS recursor - recursor可以被认为是一个图书管理员,被要求在图书馆的某个地方找到一本特定的书。DNS recursor是一个服务器,旨在通过Web浏览器等应用程序从客户端计算机接收查询。通常,recursor负责发出其他请求以满足客户端的DNS查询。
    • 根名称服务器 - 根服务器是将人类可读主机名转换(解析)为IP地址的第一步。它可以被认为是图书馆中指向不同书籍书籍的索引 - 通常它可以作为对其他更具体位置的参考。
    • TLD名称服务器 - 顶级域名服务器(TLD)可以被视为库中特定的书架。此名称服务器是搜索特定IP地址的下一步,它托管主机名的最后一部分(在example.com中,TLD服务器是“com”)。
    • 权威名称服务器 - 这个最终名称服务器可以被认为是书架上的字典,其中可以将特定名称翻译成其定义。权威名称服务器是名称服务器查询中的最后一站。如果权威名称服务器可以访问所请求的记录,它将把请求的主机名的IP地址返回给发出初始请求的DNS Recursor(图书管理员)。

    权威DNS服务器和递归DNS解析器之间有什么区别?

    这两个概念都指的是与DNS基础结构不可分割的服务器(服务器组),但每个服务器执行不同的角色并且位于DNS查询管道内的不同位置。考虑差异的一种方法是递归解析器位于DNS查询的开头,而权威的名称服务器位于最后。

     

    递归DNS解析器

    递归解析器是响应来自客户端的递归请求并花时间跟踪DNS记录的计算机。它通过发出一系列请求直到它到达请求记录的权威DNS名称服务器(或者如果没有找到记录则超时或返回错误)来完成此操作。幸运的是,递归DNS解析器并不总是需要发出多个请求才能跟踪响应客户端所需的记录缓存是一种数据持久性过程,它通过在DNS查找中提前提供请求的资源记录来帮助缩短必要的请求。

     

    权威DNS服务器

    简而言之,权威DNS服务器是实际持有并负责DNS资源记录的服务器。这是DNS查找链底部的服务器,它将使用查询的资源记录进行响应,最终允许Web浏览器发出请求以访问访问网站或其他Web资源所需的IP地址。权威的名称服务器可以满足来自其自身数据的查询,而无需查询其他来源,因为它是某些DNS记录的最终真实来源。

    值得一提的是,在查询针对子域(如foo.example.comblog.cloudflare.com)的情况下,将在权威名称服务器之后添加一个额外的名称服务器,该名称服务器负责存储子域的CNAME记录。

    许多DNS服务与Cloudflare提供的服务之间存在关键差异。不同的DNS递归解析器(如Google DNSOpenDNSComcast等提供商)都维护DNS递归解析器的数据中心安装。这些解析器允许通过优化的DNS优化计算机系统集群进行快速简便的查询,但它们与Cloudflare托管的名称服务器根本不同。

    Cloudflare维护基础设施级名称服务器,这些服务器是Internet功能不可或缺的一部分。一个关键的例子是远程服务器网络,Cloudflare部分负责托管。F根是负责每天数十亿Internet请求的根级DNS名称服务器基础结构组件之一。我们的Anycast网络使我们处于一个独特的位置,可以在不中断服务的情况下处理大量DNS流量。

    DNS查找的步骤是什么?

    在大多数情况下,DNS涉及将域名转换为适当的IP地址。要了解此过程的工作原理,有助于在从Web浏览器到DNS查找过程再次返回时遵循DNS查找的路径。我们来看看这些步骤。

    注意:DNS查找信息通常会在查询计算机内部缓存或在DNS基础结构中远程缓存。DNS查找通常有8个步骤。缓存DNS信息时,将从DNS查找过程中跳过步骤,这样可以更快地完成。下面的示例概述了没有缓存任何内容时的所有8个步骤。

    DNS查找中的8个步骤:

    1. 用户在Web浏览器中键入“example.com”,查询将进入Internet并由DNS递归解析程序接收。
    2. 解析器然后查询DNS根名称服务器(。)。
    3. 然后,根服务器使用顶级域(TLD)DNS服务器(例如.com或.net)的地址响应解析器,该服务器存储其域的信息。在搜索example.com时,我们的请求指向.com TLD。
    4. 解析器然后向.com TLD提出请求。
    5. 然后,TLD服务器使用域名服务器example.com的IP地址进行响应。
    6. 最后,递归解析器向域的名称服务器发送查询。
    7. 然后,example.com的IP地址将从名称服务器返回到解析程序。
    8. 然后DNS解析器使用最初请求的域的IP地址响应Web浏览器。

    一旦DNS查找的8个步骤返回了example.comIP地址,浏览器就能够发出对网页的请求:

    1. 浏览器向IP地址发出HTTP请求。
    2. 该IP处的服务器返回要在浏览器中呈现的网页(步骤10)。

    什么是DNS解析器?

    DNS解析器是DNS查找中的第一站,它负责处理发出初始请求的客户端。解析器启动查询序列,最终导致URL被转换为必要的IP地址。

    注意:典型的未缓存DNS查找将涉及递归和迭代查询。

    区分递归DNS查询和递归DNS解析器很重要。查询是指对需要解析查询的DNS解析器发出的请求。DNS递归解析器是接受递归查询并通过发出必要请求来处理响应的计算机。

     

    DNS查询的类型有哪些?

    在典型的DNS查找中,会发生三种类型的查询。通过使用这些查询的组合,用于DNS解析的优化过程可以导致行进距离的减少。在理想情况下,缓存记录数据将可用,允许DNS名称服务器返回非递归查询。

    3种类型的DNS查询:

    1. 递归查询 - 在递归查询中,DNS客户端要求DNS服务器(通常是DNS递归解析程序)将使用请求的资源记录响应客户端,或者如果解析程序无法找到记录,则会响应错误消息。
    2. 迭代查询 - 在这种情况下,DNS客户端将允许DNS服务器返回它可以的最佳答案。如果查询的DNS服务器与查询名称不匹配,则它将返回对域名称空间的较低级别具有权威性的DNS服务器的引用。然后,DNS客户端将对引用地址进行查询。此过程将继续使用查询链中的其他DNS服务器,直到发生错误或超时。
    3. 非递归查询 - 通常在DNS解析器客户端向DNS服务器查询其有权访问的记录时会发生这种情况,因为它对记录具有权威性,或者记录存在于其缓存中。通常,DNS服务器将缓存DNS记录以防止额外的带宽消耗和上游服务器的负载。

    什么是DNS缓存?DNS缓存在哪里发生?

    缓存的目的是将数据临时存储在一个位置,从而提高数据请求的性能和可靠性。DNS缓存涉及将数据存储在更靠近请求客户端的位置,以便可以更早地解析DNS查询,并且可以避免在DNS查找链中进一步查询,从而改善加载时间并减少带宽/ CPU消耗。DNS数据可以缓存在各种位置,每个位置将存储DNS记录一段时间,该时间生存时间(TTL)决定

    浏览器DNS缓存

    默认情况下,现代Web浏览器设计为在一段时间内缓存DNS记录。这里的目的很明显; DNS缓存越接近Web浏览器,为了检查缓存并对IP地址发出正确的请求,必须采取的处理步骤越少。当请求DNS记录时,浏览器缓存是为请求的记录检查的第一个位置。

    chrome中,您可以转到chrome// net-internals / #dns查看DNS缓存的状态。

    操作系统(OS)级DNS缓存

    操作系统级DNS解析程序是DNS查询离开计算机之前的第二个也是最后一个本地停止。设计用于处理此查询的操作系统内部的进程通常称为存根解析程序DNS客户端。当存根解析器从应用程序获取请求时,它首先检查自己的缓存以查看它是否具有该记录。如果没有,则它将本地网络外部的DNS查询(带有递归标志集)发送到Internet服务提供商(ISP)内的DNS递归解析器。

    递归解析器DNS缓存

    ISP内部的递归解析器收到DNS查询时,如同之前的所有步骤一样,它还将检查所请求的主机到IP地址转换是否已存储在其本地持久层内。

    递归解析器还具有其他功能,具体取决于它在缓存中的记录类型:

    1. 如果解析程序没有A记录,但确实拥有权威名称服务器的NS记录,它将直接查询这些名称服务器,绕过DNS查询中的几个步骤。此快捷方式可防止从root和.com名称服务器(在我们的example.com搜索中)中进行查找,并有助于更快地解析DNS查询。
    2. 如果解析器没有NS记录,它将向TLD服务器发送查询(在我们的例子中为.com),跳过根服务器。
    3. 万一解析器没有指向TLD服务器的记录,它将查询根服务器。此事件通常在清除DNS缓存后发生。
    展开全文
  • 详解DNS域名解析全过程

    万次阅读 多人点赞 2018-09-05 16:21:57
    关于dns域名解析的大致过程很多人都知道,但有些细枝末节的东西容易遗忘,今天有空整理一下,作为以后复习用,如有不对的地方,还望指正。解析大致过程如图(不喜欢看图的可以直接跳过):   当一个用户在地址...

    关于dns域名解析的大致过程很多人都知道,但有些细枝末节的东西容易遗忘,今天有空整理一下,作为以后复习用偷笑,如有不对的地方,还望指正。解析大致过程如图(不喜欢看图的可以直接跳过大笑):

     

    当一个用户在地址栏输入www.taobao.com时,DNS解析有大致十个过程惊恐,如下:

     

    1. 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。

     

    2. 如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。

     

     

     

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

     

    3.  如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

     

     

    4. 如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析

     

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

     

    6. 此时LDNS再发送请求给上一步返回的gTLD

     

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

     

    8. Name Server根据映射关系表找到目标ip,返回给LDNS

     

    9. LDNS缓存这个域名和对应的ip

     

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

     

    写完了,真的累啊!大哭

    展开全文
  • DNS详解

    千次阅读 2018-06-03 18:24:24
    DNS域名解析 术语解释: 根域,就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯。根域服务器我们知道...
  • 自己动手实现DNS协议

    2019-10-05 10:59:43
    介绍DNS是干什么的; 介绍DNS是如何工作的; 介绍DNS请求与响应的消息格式; 编程实现一个简单的DNS服务器; 2. DNS是啥 关于DNS是啥,想必学过计算机网络的应该都知道,它是Domain Name System的简写,中文翻译...
  • 2. 实现与源码简析 (一个用户DNS请求与响应过程:通过域名取IP地址)     3. 更建全的DNS架构     thanks&best regards mars.fu June 1 2012, Friday ShenZhen Rainy&Warm If you have...
  • 架构 DNS原理及其解析过程

    千次阅读 2018-06-07 10:12:26
    作者:郭无心链接:...DNS原理及其解析过程为什么需要DNS解析域名为IP地址? 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134...
  • 解BUG的过程中碰到了DNS相关的内容,折腾网站和域名邮箱时也对DNS做了一些配置,发现对一些细节有点记不清晰了,因此很有必要重新温习一下这方面的知识。学过网络的应该记得现代计算机通信的基石是TCP/IP协议,...
  • 【应用层】DNS协议

    千次阅读 2019-05-26 20:48:20
    DNS提供的服务 互联网的域名结构 DNS服务器的分布 DNS的工作原理 二、DNS提供的服务 域名系统 DNS(Domain Name System) 提供的服务很简单,就是将便于人们使用的机器名字转换为IP地址。 我们都知道用户与互联网上...
  • 免费公共DNS服务器大全

    万次阅读 2019-11-06 15:48:09
    港澳台地区DNS 国外公共DNS 老D推荐使用:目录国内常用公共DNS114 DNS: (114.114.114.114;114.114.115.115)114DNS安全版 (114.114.114.119;114.114.115.119)114DNS家庭版 (114.114.114.110;114....
  • 笔记本出现“默认网关不可用”

    万次阅读 2015-02-28 21:50:08
    过年回家要蹭网给米老师发邮件,结果出现了“默认网关不可用”。在网上用了很多软件修复也不管用,最后发现是我设置的问题,下面我就给大家看看我是怎样设置好的。 先看一张图片: 图片上的问题是“默认网关不可用...
  • 常用dns114.114.114.114与8.8.8.8的区别

    万次阅读 2018-01-29 09:44:39
     114.114.114.114和8.8.8.8,这两个IP地址都属于公共域名解析服务DNS其中的一部分,而且由于不是用于商业用途的,这两个DNS都很纯净,不用担心因ISP运营商导致的DNS劫持等问题,而且都是免费提供给用户使用的。...
  • DNS服务器可能不可用

    万次阅读 2019-10-04 20:37:26
    背景是:从武汉到上海,能够ping通网关,不能ping通DNS服务器,可以上网,但是某个网页显示DNS可能不可用 如下图:网页无法打开,用windows诊断的结果 然后是在运行cmd中输入ipconfig/all 查看网关和DNS服务器...
  • dns beacon 创建listener 假设我的二级域名为 test.com。 设置域名的A记录例如 bk.test.com,值为自己的工网ip。 再设置几个ns记录,例如game.test.com,ns记录的值写成bk.test.com。 dns host(stager)设置vps...
  • DNS

    千次阅读 多人点赞 2019-06-04 10:39:53
    DNS(Domain Name System)是一个层次化、分布式域名系统,为接入互联网的设备提供服务。它关联域名到ip上,提供将域名转化为ip的服务。 域名(domain)由ascii码的子集组成,可含字符a-z,A-Z,0-9或-。域名具有层次...
  • C/C++实现DNS劫持

    万次阅读 多人点赞 2020-06-23 08:34:54
    C/C++实现DNS劫持 什么是DNS? 每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了...
  • dns

    千次阅读 2016-08-31 01:19:34
    什么是公用dns? 对于广大网民而言,头疼的问题之一就是宽带服务商强行劫持DNS,随之而来的就是满屏乱飞的广告,简直就是挥之不去的恶梦。本人一普通的不能再普通的网民一份子,自然也深受其苦,投诉无门之下,...
  • Linux中搭建DNS服务器

    万次阅读 多人点赞 2020-08-04 12:25:08
    目录 ...DNS(Domain Name Service)域名解析服务,就是将域名和 ip 之间做相应的转换,利用 TCP 和 UDP 的53号端口DNS系统作用: 正向解析:根据域名查找对应的ip地址 反向解析:根据ip地址查...
  • linux下DNS配置及域名解析服务

    万次阅读 多人点赞 2018-08-23 12:03:44
    一.DNS(Domain Name System,域名系统)  因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP...
1 2 3 4 5 ... 20
收藏数 472,102
精华内容 188,840
关键字:

dns