当前位置:网站首页 > 技术博客 > 正文

cname解析不生效



最近学习DNS相关的知识,看到了CNAME的相关问题,这里做个总结:

CNAME也就是Canonical Name(规范名称),Aliases(别名)。

这个很好理解,以www.baidu.com为例。在我们在时会发现ping的结果如下:

很明显这里可以看出www.baidu.com是www.a.shifen.com的别名。
那么实际的查询过程是什么样子的呢?
个人认为查询过程为(假设现在缓存中没有相关内容):
1. 客户机提交查询www.baidu.com的A记录的请求给本地域名服务器,本地域名服务器则会向
根域名服务器(假设为d.root-servers.net)提交www.baidu.com这个域名的A记录查询
请求,然后d.root-servers.net返回给本地域名服务器一个或多个可以处理.com域的顶
级域名服务器(假设为j.gtld-servers.net)的A记录。
2. 本地域名服务器向j.gtld-servers.net提交关于www.baidu.com的A记录的查询请求,然
后j.gtld-servers.net返回一个或者多个可以处理baidu.com这个域的域名服务器(假设
为ns1.baidu.com)的A记录给本地域名服务器。
3. 本地域名服务器向ns1.baidu.com提交关于www.baidu.com的A记录的查询请求,这时
ns1.baidu.com发现他的记录信息如下:
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
a.shifen.com. 86411 IN NS ns1.a.shifen.com.
a.shifen.com. 86411 IN NS ns5.a.shifen.com.
a.shifen.com. 86411 IN NS ns3.a.shifen.com.
a.shifen.com. 86411 IN NS ns6.a.shifen.com.
也就是说他不能找到www.baidu.com这台主机的IP地址,这时候他就会查看www.baidu.com是不是通过cname得到的Aliases,经过查询发现确实是这样,此时
ns1.baidu.com服务器会将www.baidu.com 1200 IN CNAME www.a.shifen.com这条记
录放入响应报文Rsponse1中,同时他会在他本机上启动一个关于 www.a.shifen.com的A记
录的查询请求,然后将查询结果:
a.shifen.com. 86411 IN NS ns1.a.shifen.com.
a.shifen.com. 86411 IN NS ns5.a.shifen.com.
a.shifen.com. 86411 IN NS ns3.a.shifen.com.
a.shifen.com. 86411 IN NS ns6.a.shifen.com.
同时添加进入刚才的响应报文Rsponse1中,一并返回给本地域名服务器。
4. 本地域名服务器接下来根据刚才的响应报文会找ns1.a.shifen.com去查询
www.a.shifen.com的A记录,这时候ns1.a.shifen.com就会返回给本地域名服务器关于
www.a.shifen.com 的A记录也就是202.108.22.5之类的信息,然后本地域名服务器就会将
结果返回给客户了。客户就可以使用得到的IP地址与对应的主机建立连接了。
以上过程只是个人对DNS查询过程的简单分析和理解。
RFC1034 3.6.2中也可以找到相关的描述如下(附上我拙劣的翻译,呵呵将就着看吧):

CNAME RRs cause special action in DNS software. When a name server fails to find a desired RR in the resource set associated with the domain name, it checks to see if the resource set consists of a CNAME record with a matching class. If so, the name server includes the CNAME record in the response and restarts the query at the domain name specified in the data field of the CNAME record. The one exception to this rule is that queries which match the CNAME type are not restarted.

cname资源记录会引起dns软件特殊的处理动作。当一个域名服务器不能解释所要请求的资源记录时,他会查看这个请求的资源记录是否包含了一个cname记录。如果是,那么这个域
名服务器将会将对应的cname放入响应报文中,同时启动一次针对数据域中关于cname的记录
的查询。

For example, suppose a name server was processing a query with for USC- ISIC.ARPA, asking for type A information, and had the following resource records:
USC-ISIC.ARPA IN CNAME C.ISI.EDU
C.ISI.EDU IN A 10.0.0.52
Both of these RRs would be returned in the response to the type A query, while a type CNAME or * query should return just the CNAME.
比如,假设一个域名服务程序在处理一个关于USC-ISIC.ARPA的A记录的查询,同时他拥
有如下的资源记录:
USC-ISIC.ARPA IN CNAME C.ISI.EDU
C.ISI.EDU IN A 10.0.0.52

版权声明


相关文章:

  • http请求头有哪些内容2025-05-23 22:01:02
  • 迈迪三维设计工具集2025-05-23 22:01:02
  • 公共dns什么意思2025-05-23 22:01:02
  • matlab如何创建一个函数文件2025-05-23 22:01:02
  • windows文件管理软件2025-05-23 22:01:02
  • v2ray全局代理玩游戏2025-05-23 22:01:02
  • 结构体嵌套结构体指针2025-05-23 22:01:02
  • 弹性盒子怎么布局2025-05-23 22:01:02
  • 数据库事务(MySQL——事务(Transaction)详解)2025-05-23 22:01:02
  • scanf函数中*的用法2025-05-23 22:01:02