為啥用ip不可以訪問知乎,而百度卻可以?
本文字數:1000字
閱讀本文大概需要:3 分鐘
我們先來ping知乎的域名,然後可以得到響應的伺服器的ip,
之後我們用瀏覽器來訪問這個ip,結果如下
被拒絕訪問了。
而用ip來訪問百度,則沒啥問題,如圖
訪問知乎的時候,域名可以訪問,ip不可以訪問,這究竟是為啥?
我們知道,ipv4的ip地址是非常有限的,如果每個人都想擁有一個全球ip,那肯定是不夠分配的,不知道啥是全球ip的可以看我這篇文章:談談NAT:什麼?全球IP和私有IP是什麼鬼?
所以,很多網站在釋出的時候,是有可能幾個域名共用一個CDN伺服器的。
稍微解釋下CDN是啥: CDN伺服器可以說是一種快取伺服器。當我們要訪問某個網站的資源時,如果該網站的伺服器離我們很遠,這樣的話響應速度就會很慢,為了讓響應速度快一些,我們可以把資源分佈放在各個地方,然後響應客戶端的時候,把離客戶端較近的資源傳送給他。
當我們用域名訪問知乎的時候,CDN伺服器可以根據訪問的域名知道你想要的是哪個網站的資源,然後直接給你返回對應的資源。
但是當你用公網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機制: 該機制主要是用來解決一個伺服器對應多個域名時產生的一些問題,透過這種機制,伺服器可以提前知道(還沒建立連結)客戶端想要訪問的網站,想要知道更加具體的我已經給你們準備好文章:https://blog.csdn.net/firefile/article/details/80532161
知道了用域名可以訪問知乎,而用ip不可以訪問知乎之後,我們再來說說百度。
為啥百度ip和域名都可以訪問呢?
這其實很簡單,就是百度用的CDN伺服器,只對應一個網站域名唄,說白了,就是百度有錢!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561266/viewspace-2558418/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【訪問本地專案,localhosthost可以,本地ip不可以】localhost
- 為啥儲存 IP 用 bigint 而不是 char
- 使用代理ip訪問網站卻失敗網站
- 為何SYSTEM使用者可以將V$SESSION的查詢許可權賦權給其他使用者而SYS使用者卻不可以?Session
- windows 檢測某ip的埠是否可以訪問Windows
- 為什麼HTML不能巢狀PHP,而PHP檔案卻可以巢狀HTMLHTML巢狀PHP
- python RE match物件 m.group(0)可以輸出 m.group(1)為啥不可以輸出第二個呢?Python物件
- 設定MYSQL允許用IP訪問MySql
- 可以ping通,而InetAddress isReachable卻返回falseFalse
- 為什麼IP地址可以查詢物理所在地,而不是mac地址?Mac
- Vue 中為何不可以使用Index 作為Dom的key?VueIndex
- .htaccess IP訪問限制
- oracle 限定ip訪問Oracle
- [提問交流]可不可以講解下 RPC。RPC
- Sqlserver限制賬戶在哪些ip下才可以訪問資料庫SQLServer資料庫
- 百度面試題:從海量日誌中提取訪問百度次數最多的IP面試題
- PostgreSQL IP地址訪問配置SQL
- nginx限制ip訪問(轉)Nginx
- Windows限制訪問指定IPWindows
- 域名訪問和ip訪問引起的http 403問題HTTP
- 為啥99-oracle-asmdevices.rules 就可以OracleASMdev
- 為什麼ios企業簽名後的App不可以上架蘋果應用商店?iOSAPP蘋果
- 恆訊科技分析:如何禁止用IP訪問網站?網站
- vue 子元件為何不可以修改父元件傳遞的值?Vue元件
- CSS中可以和不可以繼承的屬性CSS繼承
- destoonphp中如何禁止IP訪問PHP
- 9000埠使用ip不能訪問
- 限定client端IP訪問oracle!clientOracle
- 限定client段ip訪問oracle!clientOracle
- IP頁面訪問域名介面問題
- olang批次測試socks5代理ip是否可以訪問網站,並列印真實ip網站
- 案例:系統的 CPU 使用率很高,但為啥卻找不到高 CPU 的應用?
- 通過map reduce統計應用ip訪問次數
- 路由 any 不可以 get 請求嗎?路由
- SQL Server不可以增加非空列SQLServer
- 為什麼不能用中文進行程式設計,而英文卻可以?程式設計師的分析很透徹!行程程式設計師
- 繼承時 範圍可以擴大不可以縮小繼承
- 美團一面:Spring Cloud 遠端呼叫為啥要採用 HTTP,而不是 RPC?SpringCloudHTTPRPC