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

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

正文

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

当用户访问http://www.zhihu.com时,域名解析到距离用户最近的CDN服务器的公网IP,浏览器于是与公网IP对应的CDN服务器建立连接。

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

SNI

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

SNI = “www.zhihu.com”

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

裸IP地址访问

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

029ec55afd1c9156efa9e9063d339ce2.png

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地址在签发期间专属于客户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值