<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>DNS解析 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/dns%E8%A7%A3%E6%9E%90/</link><description>Recent content in DNS解析 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 06 Aug 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/dns%E8%A7%A3%E6%9E%90/index.xml" rel="self" type="application/rss+xml"/><item><title>DNS解析</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/network/network-008/</link><pubDate>Mon, 28 Jul 2025 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/network/network-008/</guid><description>&lt;p&gt;TCP/IP提供了通过 &lt;code&gt;IP地址&lt;/code&gt; 来连接到设备的功能，但对用户来讲，记住某台设备的IP地址是相当困难的，因此专门设计了一种字符串形式的主机命名机制，这些主机名与IP地址相对应。在IP地址与主机名之间需要有一种转换和查询机制，提供这种机制的系统就是域名系统DNS（Domain Name System）。&lt;/p&gt;
&lt;h2 id="为什么要有dns"&gt;为什么要有DNS？&lt;/h2&gt;
&lt;p&gt;互联网中，一台计算机与其他计算机通信时，通过 &lt;code&gt;IP地址&lt;/code&gt; 唯一的标志自己。此时的IP地址就类似于我们日常生活中的电话号码。但是，这种纯数字的标识是比较难记忆的，而且数量也比较庞大。例如，每个IPv4地址是一个32位长的二进制数字，或者采用点分十进制展示成192.168.1.1这种格式，有接近43亿个的IPv4地址。DNS的作用就是将人类可读的名称转换为机器识别的IP地址，供计算机相互连接。DNS的工作原理和电话簿相似，都是管理名称和数字之间的映射关系。就像我们日常打电话，一般使用人名查找，很少直接输入电话号码一样。当我们上网打开某个网页、视频时，也很少直接使用IP地址，而是在浏览器里输入的URL地址，例如：&lt;code&gt;https://www.huawei.com&lt;/code&gt;，这其实使用的就是计算机的名字，一般称为域名。&lt;/p&gt;
&lt;h2 id="域名的构成"&gt;域名的构成&lt;/h2&gt;
&lt;p&gt;最初设备的域名由字符序列组成、所有设备的域名组成一个未分级的域名结构。未分级的域名结构存在命名冲突、管理维护复杂的缺点。因此，TCP/IP把DNS的域名设计成了分级的树状结构。每个申请加入Internet的国家都要向NIC注册一个顶级域名，顶级域采用组织模式和地理模式的划分模式，如cn代表中国、us代表美国等。&lt;/p&gt;
&lt;p&gt;常见的顶级域名如下表所示。NIC将顶级域的管理权分派给由其指定的管理机构，由这些管理机构再对被授权管理的域继续进行划分，从而形成了二级域。负责划分二级域的管理机构可以授权其下属的管理结构，由它们继续划分域。由此下去，便形成了层次型的Internet域名体系结构。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;顶级Internet域名&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;com&lt;/td&gt;
&lt;td&gt;商业组织&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;edu&lt;/td&gt;
&lt;td&gt;教育机构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gov&lt;/td&gt;
&lt;td&gt;政府机构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mil&lt;/td&gt;
&lt;td&gt;军事部门&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;net&lt;/td&gt;
&lt;td&gt;主要网络支持中心&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;国际组织&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;org&lt;/td&gt;
&lt;td&gt;其他组织&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;国家代码&lt;/td&gt;
&lt;td&gt;国家（按照地理模式划分）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;从语法上讲，每一个域名都是有标号序列组成，而各标号之间用点（小数点）隔开。以www.huawei.com域名为例，从右到左依次是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;com：顶级域名。代表商业组织。&lt;/li&gt;
&lt;li&gt;huawei：二级域名，归属于某个公司自己的域名。&lt;/li&gt;
&lt;li&gt;www：三级域名，表明某个公司提供的是什么服务，www代表普通网页。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dns服务器dns客户端和dns中继"&gt;DNS服务器、DNS客户端和DNS中继&lt;/h2&gt;
&lt;p&gt;网络中与DNS相关的设备角色包括DNS服务器、DNS客户端和DNS中继。&lt;/p&gt;
&lt;h3 id="dns服务器"&gt;DNS服务器&lt;/h3&gt;
&lt;p&gt;DNS服务器是将域名指向对应IP地址的服务器。DNS服务器中保存了一张域名和与之相对应的IP地址的表，以解析消息的域名。&lt;/p&gt;
&lt;p&gt;由于互联网连通的是全球资源，单一的域名服务器不足以支撑全部的地址转换操作，因此全球有多套域名服务器相互配合使用。&lt;/p&gt;
&lt;p&gt;域名是分层结构，域名DNS服务器也是对应的层级结构。通过根域名服务器，依次请求顶级域名服务器和权威域名服务器，最终获取对应IP地址，并将该结果保存在本地域名服务器，以待下次DNS请求使用。当用户再次对同一域名发起访问时，可以直接从本地域名服务器获得结果，无需再次发起全球递归查询。&lt;/p&gt;
&lt;p&gt;表1-2 DNS服务器的分类&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;分类&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;根DNS服务器&lt;/td&gt;
&lt;td&gt;根DNS服务器是最高层次的域名服务器，它知道所有顶级服务器的域名和IP地址，当本地域名服务器无法对域名进行解析时，首先对根域名服务器发起请求。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;顶级域名服务器&lt;/td&gt;
&lt;td&gt;顶级域名服务器负责管理该服务器下的所有二级域名，当收到DNS查询请求时，就会给权威域名服务器相应的回答。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;权威域名服务器&lt;/td&gt;
&lt;td&gt;负责某一个区域的域名服务器。当一个顶级域名服务器还不能给出最后查询回答时，就会告知下一步应当请求的权威域名服务器。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本地域名服务器&lt;/td&gt;
&lt;td&gt;当一个主机发出DNS查询请求时，这个查询请求报文就发送给本地域名服务器。每一个互联网服务提供者ISP都可以拥有一个本地域名服务器。当本地域名服务器无法给出应答时，就会请求最高级的根域名服务器。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="dns客户端"&gt;DNS客户端&lt;/h3&gt;
&lt;p&gt;DNS客户端的作用是接收用户程序（User Program）的DNS请求，并对其作出回应。作为DNS客户端的设备上一般具备以下能力：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;启动DNS解析 要使用DNS客户端功能，需要在设备上打开DNS解析的开关。&lt;/li&gt;
&lt;li&gt;指定服务器的IP地址 要进行DNS域名解析，需要在设备上指定DNS服务器的IP地址。这样才能把查询请求发动到正确的DNS服务器上进行解析。&lt;/li&gt;
&lt;li&gt;指定DNS域后缀搜索列表 DNS客户端所访问的一些服务器或主机的域名后缀往往都是相同的。用户可以预先设置一些域名后缀，在域名解析的时候，用户只需要输入域名的部分字段，系统会自动将输入域名加上不同的后缀进行解析。例如，用户想查询域名“huawei.com”，那么可以在后缀列表中配置com，然后输入“huawei”，系统会自动将输入域名与后缀连接成“huawei.com”进行查询。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="dns中继"&gt;DNS中继&lt;/h3&gt;
&lt;p&gt;当DNS服务器的IP地址发生变化时，用户网络中每个DNS客户端上的配置都需要改变，这样工作量极大并且容易出错。此时，可以通过部署DNS中继解决该问题。DNS客户端上配置DNS中继的IP地址，DNS服务器的IP地址在DNS中继上配置。之后，DNS客户端会将DNS请求报文直接发送给DNS中继，由DNS中继将收到的DNS请求报文转发至DNS服务器。由此，当DNS服务器的IP地址发生变化时，仅需改变DNS中继上的配置即可，简化了网络管理。&lt;/p&gt;
&lt;p&gt;DNS中继的工作原理&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;DNS客户端将DNS请求报文发送给DNS中继，即请求报文的目的地址为DNS中继的IP地址。&lt;/li&gt;
&lt;li&gt;DNS中继收到请求报文后，将报文转发给DNS服务器，通过DNS服务器进行域名解析。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="dns域名解析过程"&gt;DNS域名解析过程&lt;/h2&gt;
&lt;p&gt;通过域名获取对应IP地址的过程称为域名解析。DNS域名解析分为以下两种方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;静态域名解析 静态域名解析是通过静态域名解析表进行的，即手动建立域名和IP地址之间的对应关系表，该表的作用可以将一些常用的域名放入表中。当DNS客户端需要域名所对应的IP地址时，即到静态域名解析表中去查找指定的域名，从而获得所对应的IP地址，提高域名解析的效率&lt;/li&gt;
&lt;li&gt;动态域名解析 动态域名解析需要专用的域名解析服务器（DNS服务器）运行域名解析服务器程序，提供从域名到IP地址的映射关系，负责接收客户提出的域名解析请求。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为提高查询速度，在解析域名时，首先采用静态域名解析的方法，如果静态解析不成功，再采用动态域名解析的方法。&lt;/p&gt;</description></item></channel></rss>