為什麼直接用IP不能訪問知乎的網站,而百度卻可以?

百度 瀏覽器 知乎 軟件 DNS 技術 電腦 埃文小工 2019-04-04

打開cmd,輸入ping http://baidu.com,然後把得到的ip地址111.13.101.208輸入瀏覽器的地址欄,可以打開百度。但我重複操作ping http://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, http://c.com),當瀏覽器主動連接時,CDN服務器如何知道是連接哪個客戶網站呢?

SNI

Server Name Indication,那麼用戶瀏覽器只要填入:

SNI = “www.zhihu.com”

CDN服務器可以根據SNI的值知曉,瀏覽器原來想連接知乎的網站,完成TLS安全連接,並把資源返回瀏覽器。

裸IP地址訪問

用戶突然不使用域名,而是直接使用IP地址訪問了,這讓CDN服務器有點茫然失措。

為什麼直接用IP不能訪問知乎的網站,而百度卻可以?

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地址在簽發期間專屬於客戶。

注:本文轉載自車小胖談網絡微信公眾號;文內觀點僅供參考

埃文科技——網絡空間地圖測繪領域技術專家,提供最全面、最精準的網絡空間地圖服務。

公司成立於2012年,專注於網絡空間、地理空間和社會空間的相互映射,繪製三位一體的網絡空間地圖,對網絡空間資源的靜態屬性和動態變化情況進行探測。擁有19項軟件著作權及10項發明專利.

相關推薦

推薦中...