zoukankan      html  css  js  c++  java
  • 为什么直接ping知乎的ip不能访问知乎的网站,而百度就可以?

    结论:

    简单的说,就是baidu有钱。

    正文:

    大型网站依靠自身稀稀落落的服务器很难满足网页“秒开”的用户需求,会加入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地址访问了,这就让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地址在签发期间专属于客户。

    <原文转载自chexiaopangnetwork>

  • 相关阅读:
    查找正序排列的List中缺失的日期数据的一个算法
    了解下C#异常时的输出
    Environment.Exit(0) 、Application.Exit() 、this.Close() 、this.Dispose()的区别
    java--多线程之后台线程
    java--线程状态【转】
    DRP项目总结
    Java实现 蓝桥杯 算法训练 矩阵乘法
    Java实现 蓝桥杯 算法训练 矩阵乘法
    Java实现 蓝桥杯 算法训练 矩阵乘法
    Java实现 蓝桥杯 算法训练 大小写转换
  • 原文地址:https://www.cnblogs.com/leisurelylicht/p/wei-shen-me-zhi-jieping-zhi-hu-deip-bu-neng-fang-w.html
Copyright © 2011-2022 走看看