網頁打不開是為什麼(網站頁面打不開怎麼回事)

大家上網有沒有這樣的經歷,明明網路正常的,QQ一直登入著收發訊息都很正常啊,但是網頁就是打不開,還有開啟某個網站的時候在公司就是打不開,回到家裡又可以正常訪問的。那這裡有啥原因呢,本文就介紹一下我們訪問網站的基本原理過程,希望看了這篇文章,到時候你可以處理類似的情況了。

       

電腦訪問百度網站過程簡單示意圖

電腦訪問網站的流程大致如上圖所示,起到最重要作用的是DNS,DNS域名系統(英文:Domain Name System,縮寫:DNS)是網際網路的一項服務。它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。啥意思呢,簡單的講就是說你訪問網站是在瀏覽器上輸入域名的,比如訪問百度你輸入www.baidu.com,但是最終的網路原理都是通過IP地址相互連線的,所以首先要通過DNS伺服器把百度網站這個域名地址解析出他真正的ip地址返回給你,然後根據IP地址去訪問對應的網站伺服器,這樣才是一個真正的網站訪問過程。

那其實我們通過IP地址是可以之間訪問網站的,為啥要通過域名去訪問呢,有幾點原因:

  • IP地址不大好記,且都是數字對使用者不友好。
  • 通常情況下公司域名是不變的,有些域名直接可以反映公司名稱並且好記,比如百度公司域名www.baidu.com。
  • 一個網站可能會對應好多不同的IP地址,我們通過域名訪問只要記住這個域名地址就行了。

我們來看一下使用者訪問網站域名解析的過程。以訪問百度網站www.baidu.com為例:

1. 開啟瀏覽器,輸入百度網站域名www.baidu.com。

2. 瀏覽器首先搜尋瀏覽器自身的DNS快取查詢,如果有www.baidu.com對應的條目且有效的,直接解析完成開啟網頁。

3. 如果步驟2沒有解析到,瀏覽器就會在電腦windows系統中的DNS快取中查詢,如果有且沒過期,解析完成。

4. 步驟3沒有解析到,瀏覽器查詢hosts檔案,在C:/Windows/System32/drivers/etc下,如果有域名對應的IP地址,解析完成。

5. 一般步驟4的hosts檔案不會新增的,所以瀏覽器發起一個DNS系統的呼叫,會向本地設定的Local DNS伺服器(比如114.114.114.114)發起域名解析請求,如果該域名伺服器找到www.baidu.com對應的條目,解析完成。

6. 如果步驟5也還沒有解析成功,那麼設定的LDNS伺服器會代替瀏覽器發起迭代DNS解析請求,針對各個層級的DNS伺服器系統進行查詢,直到找到www.baidu.com對應的授權DNS伺服器。

7. 這個授權DNS伺服器正是企業購買域名時用於管理域名解析的伺服器、這個授權伺服器會有www.baidu.com對應的IP解析記錄。然後這個DNS伺服器企把www.baidu.com對應的最終1P記錄發給LDNS。

8. LDNS把來自授權DNS伺服器www. baidu.com對應的IP解析記錄發給客戶端瀏覽器,並且它會把該域名和IP的對應解析快取起來,以便下一次更快地返回相同解析請求的記錄。

9. 客戶端瀏覽器獲取了www.baidu.com 的對應IP地址,接下來,瀏覽器就會請求獲得IP地址對應的網站伺服器,網站伺服器接收到客戶的請求並響應處理,將客戶請求的內容返回給客戶端瀏覽器。

10. 這樣一次訪問網頁的完整過程就完成了。

我們可以簡單的來測試一下,你就會懂得訪問網站得原理了。電腦開啟dos視窗在開始執行那裡,也可以同時按下鍵盤上的win和r鍵,然後輸入cmd回車調出來。在dos視窗下使用ping命令,ping www.baidu.com,如下顯示說明訪問百度網站是正常的。

可以看到你去訪問的是www.baidu.com,但是他回覆給你資訊是以ip的形式給你的,這裡返回給你的IP地址是112.80.248.75。這就是百度網站真實伺服器的IP了,所以如果你知道網站真實的IP地址,那麼直接通過IP地址也是可以訪問到的。

我們不會記住這個真實的IP地址,因為不好記所以才會有比較好記的網址代替,才會需要DNS服務把網址解析成對應的IP這麼一個過程。我們可以在輸出一個命令nslookup www.baidu.com。可以看到原來是我們設定的dns 114.114.114.114來幫我做解析服務的,幫我把www.baidu.com 解析出了他真實的IP地址112.80.248.75和112.80.248.76,所以這兩個IP地址都是可以訪問的。

接下來我們來測試一下如果是一個錯誤的DNS地址結果會怎麼樣,我這裡設定一個錯誤的DNS,設定DNS就在設定IP地址那裡。

我們在來測試一下,同樣先用ping命令ping www.baidu.com。可以看到說ping請求找不到這個網址,他是在懷疑輸入的名稱有問題,呵呵,其實是我們的DNS設定有問題了。

那麼接下來我們在用nslookup進行測試。因為我們設了一個錯誤的DNS地址,所以他去請求這個DNS地址時出現time out超時了。

通過上述介紹還有一種方法就是手工將域名對應的IP地址新增到hosts檔案中了。這樣電腦會先查詢這個hosts檔案,因為又解析條目了所以可以開啟百度網頁了。

好了,這就是我們訪問網站的工作原理了,那為啥有的時候會出現又得網站能訪問有的不能訪問這就很好解釋了,是因為你用的DNS有的網站能解析到有的網站不能解析到導致的,通常情況下還是因為各運營商之間互訪引起的,比如你用的是移動的寬頻那必然就會使用移動的DNS,然後去訪問其他運營商的資源就會有問題。電信說我自己的電信資源就要用我電信自己的DNS來訪問咯,所以DNS如果解析不到的話,你可以換其他的DNS了試試了。