版權聲明:本文爲苦逼的碼農原創。未經贊成禁止任何形式轉載,特別是那些複製粘貼到別的平臺的,不然,一定追究。歡迎你們多多轉發,謝謝。瀏覽器
咱們先來ping知乎的域名,而後能夠獲得響應的服務器的ip緩存
以後咱們用瀏覽器來訪問這個ip,結果以下服務器
被拒絕訪問了。工具
而用ip來訪問百度,則沒啥問題,如圖網站
訪問知乎的時候,域名能夠訪問,ip不能夠訪問,這到底是爲啥?.net
咱們知道,ipv4的ip地址是很是有限的,若是每一個人都想擁有一個全球ip,那確定是不夠分配的,不知道啥是全球ip的能夠看我這篇文章:談談NAT:什麼?全球IP和私有IP是什麼鬼?cdn
因此,不少網站在發佈的時候,是有可能幾個域名共用一個CDN服務器的。視頻
稍微解釋下CDN是啥: CDN服務器能夠說是一種緩存服務器。當咱們要訪問某個網站的資源時,若是該網站的服務器離咱們很遠,這樣的話響應速度就會很慢,爲了讓響應速度快一些,咱們能夠把資源分佈放在各個地方,而後響應客戶端的時候,把離客戶端較近的資源傳送給他blog
當咱們用域名訪問知乎的時候,CDN服務器能夠根據訪問的域名知道你想要的是哪一個網站的資源,而後直接給你返回對應的資源。ip
可是當你用公網ip訪問就不同了,因爲一個CDN服務器的公網ip對應多個域名網站,他不知道你想要的是哪一個網站的資源,也就是說,當你用 118.89.204.192 去訪問知乎的時候,CDN服務器不知道你要訪問的是 zhihu.com,仍是訪問 a.com 或 b.com,因此他也乾脆明瞭點,直接拒絕你的訪問。
有人可能會問,我輸入域名以後,DNS服務器幫我自動解析成對應的ip,去訪問知乎的時候,也仍是用ip訪問的啊,這貌似和ip訪問沒啥區別啊。
確實,訪問的時候,DNS服務器都會幫們我把域名解析成ip去訪問,CDN服務器之因此可以檢測到對應的域名,實際上是這樣的:
當客戶端用域名訪問知乎的時候,DNS會解析成對應的ip去訪問CDN服務器,而後CDN服務器能夠根據SNI機制得到該ip對應的來源域名,而後返回對應的資源。
這裏稍微簡單粗暴解釋下SNI機制:該機制主要是用來解決一個服務器對應多個域名時產生的一些問題,經過這種機制,服務器能夠提早知道(還沒創建連接)客戶端想要訪問的網站,想要知道更加具體的我已經給大家準備好文章:blog.csdn.net/firefile/ar…
知道了用域名能夠訪問知乎,而用ip不能夠訪問知乎以後,咱們再來講說百度。
爲啥百度ip和域名均可以訪問呢?
這其實很簡單,就是百度用的CDN服務器,只對應一個網站域名唄,說白了,就是百度有錢!
有收穫?不妨點個贊,讓更多的人看到這篇文章!
最後推廣下個人公衆號:苦逼的碼農:公衆號裏面已經有100多篇原創文件,也分享了不少實用工具,海量視頻資源、電子書資源,關注自提。點擊掃碼關注哦。 戳我便可關注,