版权声明:本文为苦逼的码农原创。未经赞成禁止任何形式转载,特别是那些复制粘贴到别的平台的,不然,一定追究。欢迎你们多多转发,谢谢。浏览器
咱们先来ping知乎的域名,而后能够获得响应的服务器的ip缓存
以后咱们用浏览器来访问这个ip,结果以下服务器
被拒绝访问了。工具
而用ip来访问百度,则没啥问题,如图网站
访问知乎的时候,域名能够访问,ip不能够访问,这到底是为啥?.net
咱们知道,ipv4的ip地址是很是有限的,若是每一个人都想拥有一个全球ip,那确定是不够分配的,不知道啥是全球ip的能够看我这篇文章:谈谈NAT:什么?全球IP和私有IP是什么鬼?cdn
因此,不少网站在发布的时候,是有可能几个域名共用一个CDN服务器的。视频
稍微解释下CDN是啥: CDN服务器能够说是一种缓存服务器。当咱们要访问某个网站的资源时,若是该网站的服务器离咱们很远,这样的话响应速度就会很慢,为了让响应速度快一些,咱们能够把资源分布放在各个地方,而后响应客户端的时候,把离客户端较近的资源传送给他blog
当咱们用域名访问知乎的时候,CDN服务器能够根据访问的域名知道你想要的是哪一个网站的资源,而后直接给你返回对应的资源。ip
可是当你用公网ip访问就不同了,因为一个CDN服务器的公网ip对应多个域名网站,他不知道你想要的是哪一个网站的资源,也就是说,当你用 118.89.204.192 去访问知乎的时候,CDN服务器不知道你要访问的是 zhihu.com,仍是访问 a.com 或 b.com,因此他也干脆明了点,直接拒绝你的访问。
有人可能会问,我输入域名以后,DNS服务器帮我自动解析成对应的ip,去访问知乎的时候,也仍是用ip访问的啊,这貌似和ip访问没啥区别啊。
确实,访问的时候,DNS服务器都会帮们我把域名解析成ip去访问,CDN服务器之因此可以检测到对应的域名,实际上是这样的:
当客户端用域名访问知乎的时候,DNS会解析成对应的ip去访问CDN服务器,而后CDN服务器能够根据SNI机制得到该ip对应的来源域名,而后返回对应的资源。
这里稍微简单粗暴解释下SNI机制:该机制主要是用来解决一个服务器对应多个域名时产生的一些问题,经过这种机制,服务器能够提早知道(还没创建连接)客户端想要访问的网站,想要知道更加具体的我已经给大家准备好文章:blog.csdn.net/firefile/ar…
知道了用域名能够访问知乎,而用ip不能够访问知乎以后,咱们再来讲说百度。
为啥百度ip和域名均可以访问呢?
这其实很简单,就是百度用的CDN服务器,只对应一个网站域名呗,说白了,就是百度有钱!
有收获?不妨点个赞,让更多的人看到这篇文章!
最后推广下个人公众号:苦逼的码农:公众号里面已经有100多篇原创文件,也分享了不少实用工具,海量视频资源、电子书资源,关注自提。点击扫码关注哦。 戳我便可关注,