为啥用ip不可以访问知乎,而百度却可以
在知乎的征途上,我们尝试探寻域名的奥秘。通过ping知乎的域名,我们获得响应的服务器ip。随后,在浏览器中尝试访问这个ip,结果却收到拒绝访问的回应。用同样的方式访问百度,却畅通无阻。这其中究竟是何原因?
我们知道,IPv4的ip地址资源有限,如同稀缺的矿产,无法满足每个人对全球ip的渴望。对于全球IP和私有IP的疑惑,我曾在文章中详细探讨过。为了缓解IP压力,许多网站在发布时,会选择共享服务器给几个域名使用。这种策略下,服务器就如同一位灵活的翻译官,能够准确识别每个域名所对应的资源。
那么,何为呢?简而言之,服务器是一种缓存服务器。当我们想要访问某个网站的资源时,如果服务器距离遥远,响应速度就会变得缓慢。服务器的神奇之处在于,它能将资源分布到各个地方,以便在响应客户端时,快速提供距离客户端较近的资源。
当我们用域名访问知乎时,服务器会根据访问的域名识别你的需求,迅速返回对应的资源。当你使用公网ip访问时,事情就变得复杂起来。因为一个服务器的公网ip往往对应多个域名网站。当你尝试用具体的数字如 118.89.204.192 去访问知乎时,服务器可能会困惑,你究竟是要访问 zhihu.com,还是 a.com 或 b.com 呢?这种不确定性导致它直接拒绝你的访问请求。
你可能会问,当我通过DNS服务器解析域名到ip访问知乎时,和直接用ip访问有什么区别呢?确实,在访问的过程中,DNS服务器会帮我们完成域名的解析。服务器之所以能够识别对应的域名,其实依赖于一个叫做SNI的机制。这个机制能够解决一个服务器对应多个域名时产生的问题。通过SNI机制,服务器可以在建立链接之前知道客户端想要访问的网站。
我们再来探讨一下百度为何既可以用域名也可以用ip访问呢?这背后的原因很简单:百度使用的服务器只对应一个网站域名。换句话说,百度有足够的财力来支持其网站的独立部署和运营。这种策略确保了无论用户是通过域名还是ip访问,都能顺利获取资源。