由ping百度引发的思考

问题概述

在检查linux网络是否与外网连通时,发现ping www.baidu.com会转为ping www.a.shifen.com,而ping baidu.com是指向正常的域名以及IP地址。裸域名(无三级域名)baidu.comwww.baidu.com的子域名之间的解析是否有不同?

DNS的分级查询过程

域名解析时,先查询本地HOST文件,HOST文件无再向本地域名服务器发出DNS请求。本地DNS查询本地缓存,若无则向根域名服务器发出递归查询请求(根域名->顶级域名->授权域名)或是本地进行迭代查询。使用dig +trace baidu.com命令可以跟踪DNS迭代查询过程。

从DNS返回的结果入手

使用命令dig www.baidu.com可以发现,DNS返回了一个CNAME(Canonical Name,规范名称记录,返回另一个域名,即当前查询的域名是另一个域名的跳转),将www.baidu.com映射到www.a.shifen.com另外两条A记录返回域名指向的IP地址。通过这两个IP地址均可访问百度首页(不支持SSL证书,显示不安全),但对于curl -v www.a.shifen.com,则会返回302(资源临时转移),并会跳转到提示错误的页面。

对于dig baidu.com,DNS返回了2条IP地址记录。使用curl -v可知,baidu.com解析出的IP对应的是一个跳转页面,使用浏览器访问http://220.181.38.148/网页会跳转到http://www.baidu.com/。然后网站后端依据url地图的设定,http请求将转为https。可以看到最终访问的网站IP为14.215.177.39,也就是www.a.shifen.com对应的IP地址。

小结

依据上述的实验结果可知,baidu.com是指向一个存有跳转页面的服务器的域名,跳转到www.baidu.com。而后访问www.baidu.com时,因为CDN借助CNAME将访问的地址代理到对应的CDN服务器,故DNS请求解析将得到www.a.shifen.com对应的多个IP地址,最终由14.215.177.39这台缓存服务器给我们提供了服务。www.a.shifen.com是一个CNAME名。

posted @ 2021-03-12 14:54  hellcat9  阅读(676)  评论(0编辑  收藏  举报