逃亡 發表於 2020-2-22 09:58:00

带你简单了解域名系统DNS

<h2 id="带你简单了解域名系统dns">带你简单了解域名系统DNS</h2>
<h3 id="一域名简介">一、域名简介</h3>
<h4 id="11dns服务的作用">1.1.DNS服务的作用</h4>
<p>负责解析域名,将域名解析成IP地址。</p>
<h4 id="12域名系统概述">1.2.域名系统概述</h4>
<ul>
<li>由于32位的IP地址并不容易记忆,人们往往喜欢记忆网站的域名。所以当我们访问网站时,是通过输入的域名解析为对应IP地址,对该IP地址进行访问的。</li>
<li>名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为<strong>域名服务器</strong>。</li>
</ul>
<h4 id="13因特网的域名结构">1.3.因特网的域名结构</h4>
<ul>
<li>
<p>因特网采用了<strong>层次树状结构</strong>的命名方法。</p>
</li>
<li>
<p>任何一个连接在因特网上的主机或路由器,都有一个<strong>唯一</strong>的层次结构的名字,即<strong>域名</strong>。</p>
</li>
<li>
<p>域名的结构由标号序列组成,各标号之间用<strong>点</strong>隔开:</p>
</li>
</ul>
<p><img src="https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/6.2.%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9FDNS/1.png" alt="image-20200130223946093" loading="lazy"></p>
<ul>
<li>上图的各标号:三级域名、二级域名等分别代表不同级别的域名。</li>
</ul>
<h4 id="14域名只是个逻辑概念">1.4.域名只是个逻辑概念</h4>
<ul>
<li>域名只是个逻辑概念,并不代表计算机所在的物理地点。</li>
<li>变长的域名和使用有助记忆的字符串,是为了便于人来使用。而 IP 地址是定长的 32 位二进制数字则非常便于机器进行处理。</li>
</ul>
<h4 id="15顶级域名-tld-top-level-domain">1.5.顶级域名 TLD (Top Level Domain)</h4>
<ul>
<li>
<p>国家顶级域名 <strong>nTLD</strong>:如: <strong>.cn</strong> 表示中国,<strong>.us</strong> 表示美国,<strong>.uk</strong> 表示英国,等等。</p>
</li>
<li>
<p>通用顶级域名 <strong>gTLD</strong>:最早的顶级域名是:</p>
<p><strong>.com</strong> (公司和企业);</p>
<p><strong>.net</strong> (网络服务机构);</p>
<p><strong>.org</strong> (非赢利性组织);</p>
<p><strong>.edu</strong> (美国专用的教育机构);</p>
<p><strong>.gov</strong> (美国专用的政府部门);</p>
<p><strong>.mil</strong>(美国专用的军事部门);</p>
<p><strong>.int</strong>   (国际组织);</p>
<p>新增的有:</p>
<p><strong>.aero</strong> (航空运输企业);</p>
<p><strong>.biz</strong> (公司和企业);</p>
<p><strong>.cat</strong>(加泰隆人的语言和文化团体);</p>
<p><strong>.coop</strong> (合作团体);</p>
<p><strong>.info</strong> (各种情况);</p>
<p><strong>.jobs</strong> (人力资源管理者);</p>
<p><strong>.mobi</strong> (移动产品与服务的用户和提供者);</p>
<p><strong>.museum</strong> (博物馆);</p>
<p><strong>.name</strong>(个人);</p>
<p><strong>.pro</strong> (有证书的专业人员);</p>
<p><strong>.travel</strong> (旅游业);</p>
</li>
<li>
<p>基础结构域名(infrastructure domain):这种顶级域名只有一个,即 <strong>arpa</strong>,用于反向域名解析,因此又称为反向域名。</p>
</li>
</ul>
<h4 id="16因特网的域名空间">1.6.因特网的域名空间</h4>
<p><img src="https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/6.2.%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9FDNS/2.png" alt="image-20200130230206784" loading="lazy"></p>
<p>比如域名:www.cnblogs.com 。该域名由三部分组成:三级域名www;二级域名cnblogs;顶级域名com;每部分之间用<strong>点</strong>隔开。</p>
<p>需要注意的是:</p>
<ul>
<li>域名也可以由两部分组成、四部分组成,域名组成部分数量是不定的;</li>
<li>并非所有的域名都以www开头,也可以使用其他的三级域名比如:mail.cnblogs.com 。只不过按照习惯通常把www作为域名的开头。</li>
</ul>
<h4 id="17关于域名注册">1.7.关于域名注册</h4>
<p>为了保证域名的唯一性,需要相关机构管理,我们想要申请域名则必须花钱购买。在购买域名时只需要选择相应的顶级域名和二级域名,若这两部分组成的域名全球唯一,那么在此基础上加上三级域名、四级域名组成的域名也都是全球唯一。</p>
<p>比如购买了域名:cnblogs.com,在此域名基础上派生出www.cnblogs.com 、mail.cnblogs.com等都是免费的,只要你有服务器派生出多少个域名都只用缴纳cnblogs.com一个域名的费用。并且由于cnblogs.com的全球唯一性,所以其派生出的域名都是全球唯一的。</p>
<p><img src="https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/6.2.%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9FDNS/3.png" alt="image-20200131145513870" loading="lazy"></p>
<hr>
<h3 id="二域名服务器">二、域名服务器</h3>
<ul>
<li>
<p>域名服务器的作用为,把网站域名解析成对应的IP地址。</p>
</li>
<li>
<p>一个服务器所负责管辖的(或有权限的)范围叫做<strong>区</strong>(zone)。</p>
</li>
<li>
<p>每一个区设置相应的<strong>权限域名服务器</strong>,用来保存该区中的所有主机的域名到IP地址的映射。</p>
</li>
</ul>
<h4 id="21树状结构的-dns-域名服务器">2.1.树状结构的 DNS 域名服务器</h4>
<p>域名服务器有以下四种类型 :</p>
<ul>
<li>根域名服务器</li>
<li>顶级域名服务器</li>
<li>权限域名服务器</li>
<li>本地域名服务器</li>
</ul>
<p>关系为:</p>
<p><img src="https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/6.2.%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9FDNS/4.png" alt="image-20200131160847037" loading="lazy"></p>
<blockquote>
<p><strong>根域名服务器:</strong></p>
</blockquote>
<ul>
<li>
<p>根域名服务器是最重要的域名服务器。根域名服务器并不直接把域名直接转换成 IP 地址,而是存储着所有的顶级域名服务器的域名及其 IP 地址。在使用迭代查询时,根域名服务器把下一步应当查找的顶级域名服务器的 IP 地址告诉本地域名服务器。</p>
</li>
<li>
<p>当本地域名服务器无法解析特定的域名时,首先求助于根域名服务器。</p>
<p>比如某本地域名服务器负责abc.com区域的域名解析,当本地用户输入abc.cn时,该本地域名服务器无法对其进行解析,于是第一时间求助于根域名服务器,询问负责.cn的顶级域名服务器的IP地址。</p>
</li>
<li>
<p>在因特网上共有13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从a 一直到 m(前13 个字母)。</p>
</li>
<li>
<p>根域名服务器共有 13 套装置,它由分布在世界各地的许多台作为根域名服务器的机器组成。目的是为了方便用户,使世界上大部分 DNS 域名服务器都能<strong>就近</strong>找到一个根域名服务器。</p>
<p>这些根域名服务器相应的域名分别是:</p>
<p>a.rootservers.net;</p>
<p>b.rootservers.net;</p>
<p>…</p>
<p>m.rootservers.net;</p>
</li>
</ul>
<blockquote>
<p><strong>顶级域名服务器(即 TLD 服务器)</strong></p>
</blockquote>
<ul>
<li>
<p>这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。</p>
<p>比如顶级域名服务器.CN负责所有以.CN结尾的域名的解析。</p>
</li>
<li>
<p>当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。</p>
</li>
</ul>
<blockquote>
<p>**权限域名服务器 **</p>
</blockquote>
<ul>
<li>
<p>负责一个区的域名服务器。</p>
<p>比如:在顶级域名服务器.com负责下的权限域名服务器abc.com,负责的是所有以abc.com结尾的域名的解析。</p>
</li>
<li>
<p>当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。</p>
<p>比如:在权限域名服务器abc.com负责下的用户查询域名xyz.com,该权限域名服务器无法告诉客户最终结果,而是告诉客户权限域名服务器xyz.com的IP地址。</p>
</li>
</ul>
<blockquote>
<p>**本地域名服务器(默认域名服务器) **</p>
</blockquote>
<ul>
<li>本地域名服务器即在权限域名服务器下的负责更小区域的域名服务器。比如某个大学里面的域名服务器,某公司的域名服务器。</li>
<li>当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。</li>
<li>可以安装字节的DNS服务器(本地域名服务器)。</li>
</ul>
<h4 id="22提高域名服务器的可靠性">2.2.提高域名服务器的可靠性</h4>
<ul>
<li>DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是<strong>主域名服务器</strong>,其他的是<strong>辅助域名服务器</strong>。</li>
<li>当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。</li>
<li>主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。</li>
</ul>
<h4 id="23域名解析过程举例">2.3.域名解析过程举例</h4>
<p><img src="https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/6.2.%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9FDNS/5.png" alt="image-20200131171858751" loading="lazy"></p>
<p>如图:根DNS的IP地址为100,里面存储着顶级域名服务器:com、net、edu、cn等的IP地址;顶级域名服务器com中存储着域名www.baidu.com对应的IP地址;顶级域名服务器net中存储着www.inhe.net对应的IP地址。</p>
<p>当指定DNS服务器IP地址为192的用户输入www.baidu.com域名时,IP地址为192的本地域名服务器没有查询到域名的信息,于是求助于IP地址为101的顶级域名服务器com。经查询,该顶级域名服务器(com)正好存储有该网址对应的IP地址,于是把域名解析出的IP地址告诉本地域名服务器,本地域名服务器再告诉用户。于是用户得以通过IP地址该网站。</p>
<p>当该用户输入www.inhe.net域名时,先在用户指定的本地域名服务器中查询,发现没有该域名的信息。于是本地域名服务器求助于顶级域名服务器com,com也没找到域名信息。于是顶级域名服务器com求助于根DNS服务器,根DNS服务器找到顶级域名服务器net的IP地址并把它告诉com,于是com通过IP地址102找到顶级域名服务器net,net找到www.inhe.net对应的IP地址后再告诉顶级域名服务器com,com再告诉本地域名服务器,本地域名服务器再告诉用户。最后用户得以通过该网站的IP地址访问该网站。</p>
<p>可见,顶级域名服务器com不知道的域名可以求助于根DNS服务器,根DNS服务器会告诉它去哪找相应域名,最后总能得到域名解析结果。所以,只要用户指定了一处DNS服务器,无论是88.88.88.88还是22.22.22.22,能把全球的域名解析出来。</p>
<blockquote>
<p><strong>总结</strong></p>
</blockquote>
<ul>
<li>
<p>主机向本地域名服务器的查询一般都是采用<strong>递归查询</strong>。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。</p>
<p>递归查询(较少用):</p>
<p><img src="https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/6.2.%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9FDNS/6.png" alt="image-20200131172925759" loading="lazy"></p>
</li>
<li>
<p>本地域名服务器向根域名服务器的查询通常是采用<strong>迭代查询</strong>。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。</p>
<p>迭代查询:</p>
<p><img src="https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/6.2.%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9FDNS/7.png" alt="image-20200131173003442" loading="lazy"></p>
</li>
</ul>
<blockquote>
<p><strong>域名服务器的高速缓存</strong></p>
</blockquote>
<ul>
<li>每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。</li>
<li>可大大减轻根域名服务器的负荷,使因特网上的 DNS 查询请求和回答报文的数量大为减少。</li>
<li>为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)。</li>
</ul>
<h4 id="24安装自己的dns服务器">2.4.安装自己的DNS服务器</h4>
<p>自己的DNS服务器相当于负责区域更小的本地DNS服务器。</p>
<blockquote>
<p><strong>适用场景</strong></p>
</blockquote>
<ul>
<li>
<p>提供内网网站的域名解析服务。</p>
<p>比如学校内网中可能存在许多的网站,这些网站仅供内部使用,并不在互联网上开放,域名可能与互联网中的部分网站冲突。这时可以再内网中安装一个DNS服务器,提供内网网站的域名解析服务。</p>
<p>并且内网的DNS服务器也知道互联网中的根域名服务器地址,只要内网DNS服务器能够访问互联网,当内网用户访问外网时也能提供相应的域名解析服务。</p>
</li>
<li>
<p>降低到Internet的域名解析流量。</p>
<p>即使无内部网站,假如校园内网2000人使用,每人访问百度时都要发送一个数据包给外网的DNS服务器进行域名解析,造成的网络流量是不可忽视的,若安装了内网DNS服务器只要有一个人访问百度,发送了一个数据包给外网的DNS服务器解析出来的IP地址会在内网DNS服务器上缓存一段时间,该段时间内内网的其余用户访问百度时,内网DNS服务器都能直接告诉它们缓存的IP地址,由此节省了重复域名解析造成的大量网络流量。</p>
</li>
<li>
<p>存在域环境。</p>
</li>
</ul>
<p><strong>查看域名地址</strong></p>
<p>可通过以下命令在命令行窗口查看域名地址:以搜狐网为例</p>
<pre><code>nslookup www.sohu.com
</code></pre>
<p><img src="https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/6.2.%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9FDNS/8.png" alt="image-20200131222443410" loading="lazy"></p>
<p>“非权威应答”表示,该域名的解析是借助外网的其他DNS服务器的。</p>


</div>
<div id="MySignature" role="contentinfo">
    多抽出1分钟来学习,让你的生命更加精彩!<br><br>
来源:https://www.cnblogs.com/AhuntSun-blog/p/12344285.html
頁: [1]
查看完整版本: 带你简单了解域名系统DNS