ping百度

你会发现ping www.baidu.com的时候,会转为ping www.a.shifen.com。但是ping baidu.com的时候却是普通的ip地址,而且ip地址还会变化。那么出现www.a.shifen.com的原因是什么呢?为什么baidu.comwww.baidu.com的解析地址不同呢?

这里用一句话说就是CNAME的原因(cname:别名),但能由此扩展到以下几个方面

从DNS查找原因

首先我们需要明白www.baidu.combaidu.com是两个完全独立没有任何关系的url地址。所以解析出来的ip地址当然也可以不同。 

我们可以先查看一下www.baidu.com解析的ip地址

nslookup www.baidu.com
nslookup baidu.com
  • 1
  • 2

结果为

可以看到www.baidu.com有一个别名,就是www.a.shifen.com,也就是说在百度的baidu.com域服务器上,有一条c记录。但是www.a.shifen.com是不能被直接访问的,浏览器访问或者curl -v都会被拒绝。

baidu.com这个域名是可以直接访问的,这个域名有3个ip地址,这3个ip是可以直接浏览器访问的,而访问之后就会被直接转为www.baidu.com的域名上。为什么呢?我们后面再说。

DNS访问过程

当我们查询www.baidu.com的地址时,会依次去本地host,本地dns,根域DNS服务器,.com服务器,baidu.com服务器查询。而在baidu.com域服务器里查找到www对应一条c记录,将www.baidu.com映射到www.a.shifen.com。所以会再次去.com域进行对shifen.com进行查询,以同样的方式,最终查到了119.75.216.20这个地址。

疑问:因为shifen.combaidu.com两台域服务器其实是同一台服务器,而baidu.comwww.baidu.com进行别名转换的时候,其实是会直接返回shifen.com域服务器的ip的,有人说会直接访问shifen.com的域服务器,而不需要重新走.com顶级域服务器。我比较支持这观点,但是没试验过,实验的话也会比较麻烦,需要清理掉本地dns的影响。但这个并不重要。

当我们查询baidu.com的时候,也是同样的过程,只不过到了baidu.com域服务器的时候,没有别名转换了,直接返回对应的ip地址。

HTTP/HTTPS访问

  1. 我们会发现浏览器无法直接访问www.a.shifen.com,但是我们却可以访问www.baidu.com,可他们俩解析出来的地址应该是一样的啊。这是因为http请求的时候,会把请求的url写入请求头,服务器会拒绝带www.a.shifen.com域名的请求。

  2. 我们直接访问119.75.216.20,发现是可以获得页面的,这说明百度的服务器就在119.75.216.20这个服务器上,也说明服务器并不拒绝ip直接访问。但是这样访问的话,只能是http的访问,不能使用登录相关的功能了。你使用https://119.75.216.20也没用,因为证书不认识,证书的域名是baidu.com

  3. 但是我们平时访问的时候,都习惯输入baidu.com,而前面我们看到baidu.com的解析ip结果可和www的不一样,那为什么浏览器里访问的域名带不带www的都一样呢。通过

    curl -v baidu.com
    • 1

    我们可以发现结果如下图,返回的是一个很小的页面,他会使浏览器刷新转到www.baidu.com,也就是上面说的119.75.216.20这个服务器。动作跟上面也就一样了。所以其实你访问baidu.com解析出来的ip也是可以的,也会直接跳到https://www.baidu.com 

  4. 那为什么访问http://www.baidu.com的时候会变成https://www.baidu.com呢。这种应该是apache服务器将域名rewrite,转换成https链接进行访问,但是你发现使用ip进行访问是不行的,因为rewriterule是对请求的url进行正则匹配的,所以ip地址是无法进行rewrite的。

猜测思考

为什么为baidu.com分配3个ip地址呢?应该是DNS负载均衡。可以产生ping baidu.com解析的地址都是变化的。因为这个web地址只是返回单个index跳转页面,所以使用DNS负载均衡是满足要求,没什么问题的。而压力最大的www.baidu.com这个地址只有一个ip地址,想必是内网做的负载均衡。

但是百度服务器肯定是遍布全国啊,所以不同地区解析www.baidu.com的地址其实是不同的。如下图所示

左边的是北京地区,而右边的是大连地区的返回结果。也可能是网络服务商的不同返回结果不同。总之这样就会做到负载均衡。而两地对baidu.com域名的解析的结果是相同的,都是那3个ip地址。可能全国都一样吧。 

至于a.shifen.com,这个别名对用户来说没有意义,至于为什么保留这个别名,也不清楚为什么。

ping百度域名时的收获的更多相关文章

  1. MAC本apache+php配置虚拟域名时踩的坑

    昨天在调试Mac自带的Apache+PHP配置域名时,调试的让我怀疑人生.顿时心里一万个草泥马,我就是配置个虚拟域名啊,这么让我受伤 . 1 首先检查一下Apache是否开启, qutao@bogon ...

  2. Linux Ubuntu 能PING IP但不能PING主机域名的解决方法

    ------------------------------------------------------------------------------- vi /etc/nsswitch.con ...

  3. win7在本地windows的hosts文件中,添加新的域名映射后,不生效(问题描述:hosts文件添加自定义域名后,ping 不通域名,但是ping ip可以)

    将原来的hosts文件删除,在C:\Windows\System32\drivers\etc目录下,新建一个新的hosts文件(记住文件不要后缀,不要命名为.txt,本人在此踩过坑,或者可以百度搜索下 ...

  4. 解决redhat linux下IP地址可以ping通,域名无法ping通问题

    解决redhat linux下IP地址可以ping通,域名无法ping通 在/etc/resolv.conf中添点东西 格式如下: nameserver xxx.xxx.xxx.xxx nameser ...

  5. 能ping通域名,却不能上网

    今天遇到了一个奇怪的现象,电脑意外死机,然后重启,再软后就是能够访问ip,也能ping通域名, 就是浏览器无法访问网页. 1. 首先修改了dns ,刷新dns缓存ipconfig /flushdns ...

  6. red hat7 系统可以ping通ip地址但是不能ping通域名

    在red hat7中ifconfig后出现这样的情况,ens33是物理网卡,与eth0一样只是不同的名字.但是只能ping通ip地址不能ping通域名. 解决方法: 在文件 /etc/resolv.c ...

  7. Linux服务器ping不通域名出现的unknown host 错误解决办法

    "ping: unknown host www.baidu.com" 解决方法 如果某台Linux服务器ping不通域名, 如下提示: # ping www.baidu.compi ...

  8. openstack环境下的虚拟机通过浮动IP访问后能ping通外网IP不能ping通域名

    1.环境简介 openstack环境下构造Ubuntu系统的VM,VM配置受管子网和自管子网,同时绑定浮动IP 2.通过浮动IP访问VM后,ping www.baidu.com失败,但是通过IP地址p ...

  9. 解决CentOS下可以ping通ip ping不通域名

    现象:1. ping不通域名,比如 www.qq.com 2. 可以ping通ip,比如 61.135.157.156 分析:1. 查看DNS配置文件 /etc/resolve.conf, 里面的服务 ...

随机推荐

  1. Spark提高篇——RDD/DataSet/DataFrame(一)

    该部分分为两篇,分别介绍RDD与Dataset/DataFrame: 一.RDD 二.DataSet/DataFrame 先来看下官网对RDD.DataSet.DataFrame的解释: 1.RDD ...

  2. JQuery官方学习资料(译):Attributes

    Attributes     元素的属性可以为你的应用程序包含有用的信息,重要的是能够获取和设置它. .attr()方法     .attr()方法是可获取和可设置的,在设置状态下,.attr()可以 ...

  3. dll 已注册 检索 COM 类工厂中 CLSID 为 {XXXX-XXXX-XXX-XXXXX-XXX} 的组件时失败,原因是出现以下错误: 80040154。

    前几天碰到的问题,错误提示“ 检索 COM 类工厂中 CLSID 为 {XXXX-XXXX-XXX-XXXXX-XXX} 的组件时失败,原因是出现以下错误: 80040154.”,然而dll已注册,注 ...

  4. (10)Microsoft office Word 2013版本操作入门_word表格

    1.套用word模板  :点击[文件]---[新建]---选择合适模板创建即可. word中插入[书法字帖]: 2.插入表格 :点击[插入]---[表格]输入行和列 ,固定列宽为“自动”时 默认沾满左 ...

  5. canvas-a11htmlANDcanvas.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 06-HTML-表格标签

    <html> <head>  <title>表格标签学习</title>  <meta charset="utf-8"/> ...

  7. HDU 1527 取石子游戏(威佐夫博弈)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  8. 【20190226】CSS-知识点记录::nth-child,:nth-of-type

    :nth-child: ele:nth-child(k):选择父元素下第k个子元素,且该子元素为ele,若不是,则选择失败,k从1开始计数 ele:nth-child(-n+5):选中前五个子元素,n ...

  9. Dynamics 365-部分用户访问环境缓慢

    链接来自MS MVP 罗勇大神的Dynamics 365中部分账号使用系统明显缓慢怎么办?先这么干! 之前项目中也遇到过客户部分账户访问环境缓慢的问题,在此做个记录,等再碰到了,以此思路进行尝试

  10. 用ABP只要加人即可马上加快项目进展(二) - 分工篇

    2018年和1998年其中两大区别就是: 前端蓬勃发展, 前后端分离是一个十分大的趋势. 专门的测试人员角色被取消, 多出了一个很重要的角色, 产品经理   ABP只要加入即可马上加快项目进展, 选择 ...