為什么直接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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM