为什么直接用IP不能访问知乎的网站,而百度却可以?

转载自:公众号【车小胖谈网络]

打开cmd,输入pingbaidu.com,然后把得到的ip地址111.13.101.208输入浏览器的地址栏,可以打开百度。但我重复操作pingzhihu.com,得到ip地址54.223.189.245,输入地址栏,返回的却是405 not allowed。想请教一下大家,这是为什么呢?

正文

大型网站依靠自身稀稀落落的服务器很难满足网页“秒开”的用户需求,会加入CDN加速的队伍。

问题来了,CDN服务器一个公网IP,可能hosted多个客户网站(a.com, b.com,c.com),当浏览器主动连接时,CDN服务器如何知道是连接哪个客户网站呢?

SNI

Server Name Indication,那么用户浏览器只要填入:

CDN服务器可以根据SNI的值知晓,浏览器原来想连接知乎的网站,完成TLS安全连接,并把资源返回浏览器。

裸IP地址访问

用户突然不使用域名,而是直接使用IP地址访问了,这让CDN服务器有点茫然失措。

SNI = “54.223.189.245”

SNI已经无法帮助CDN服务器,分辨用户到底是想访问哪个网站了。

与其返回错误的资源,还不如拒绝服务。

直接使用IP=111.13.101.208为何可以访问http://baidu.com?

计算机通信里,如果一个地址或端口会引起歧义或冲突,是需要坚决避免的。

反过来说,如果一个地址不会引起歧义,可以放心大胆使用。

如果IP=111.13.101.208对应的就是http://baidu.com网站服务器,或专用CDN服务器(只服务http://baidu.com),即使使用IP访问有何不可呢?

问题又来了,百度服务器需要提供“111.13.101.208”的数字证书,如果提供不出,依然无法https访问网站!

通常数字证书都是为域名签发的,很少会为IP地址签发证书。但也有为IP地址签发证书的,只要IP地址在签发期间专属于客户。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190128B0WIMN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券