結論:
簡單的說,就是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>