1. 程式人生 > >瀏覽器開啟一個網站可能經歷那些步驟

瀏覽器開啟一個網站可能經歷那些步驟

此話題,可能被很多大神都寫過很多次,但我依舊還要再寫一次,因為這是我寫的。
當前社會下,相信我們每個人每天都要接觸到網際網路,當你在看這篇在胡扯的文章的時候,其實你正享受著網際網路帶給你的便捷。那麼當你點選一個連線或者在瀏覽器位址列中輸入一個URL時,背後到底做了哪些事呢?下面將分步驟試著闡述一下. 第一步:當我們在瀏覽器位址列中輸入www.baidu.com並按回車後,首先是要找到這個URL的域名對應的伺服器IP地址。在這裡瞭解釋下域名和伺服器地址,域名呢相當就是我們的名字,大家感覺都很好記,其實目的也就是為了讓大家好記的;ip地址呢,就相當於我們的身份證號,不是讓人來記住的,其目的是為了標識一個全球唯一的伺服器地址。有差別的地方就是域名也不能重複,誰先申請、先註冊誰擁有的原則。而為了找到域名對應的ip地址,根據情況不同可能有多步操作:
1去看看瀏覽器快取區是否快取這當前輸入的URL的域名對應的ip地址,如果有那麼很ok,直接就找到了ip地址,如果沒有那就繼續往下走。
2 檢視我們作業系統是否快取我們需要的ip資訊,同理找到結束,沒有繼續。
3 在我們的hosts檔案中檢視是否有配置資訊,同上面一樣找到結束,沒有繼續。比如我們的windows系統的hosts檔案位置就在C:\Windows\System32\drivers\etc\HOSTS(受保護檔案可能隱藏),裡面一般都配置127.0.0.1 localhost,其實就是表名localhost對應的ip地址就是127.0.0.1。題外說一句,hosts檔案劫持其實就是黑客去修改你的hosts檔案,比如把www.taobao.com指向一個騙子開發的高仿網站上,當你雙十一去買買買的時候,輸入使用者名稱和密碼都會被騙子知道,更危險的還有銀行等網站。
4 如果上面都沒有找到我們需要的資訊,那麼下來就要本地DNS伺服器出場了,本地DNS伺服器可能還會有上級的DNS伺服器,呈樹狀結構,會一級一級的向上查詢。本地DNS地址在網路設定中設定,一般都是網路服務商給你提供,離你城市最近的一個DNS伺服器地址。有時出現的qq可以上網,但是瀏覽器打不開網址一般都是DNS伺服器配置出現了問題。和hosts檔案劫持一樣也存在著DNS劫持。
5 如果在第4步還沒有找到對應的IP地址,下來本地DNS請求ROOT DNS Server(根域名伺服器),目前根域名伺服器全球有13臺,國內一臺沒有。ROOT DNS Server並不儲存域名 - IP 對應關係,它只是根據你域名的字尾,如.com、.cn等,給你一個gTLD伺服器地址,讓你去連線gTLD(通用頂級域名)伺服器,然而gTLD伺服器其實也不給你返回對應的ip資訊,他會給你一個name server伺服器地址,這個name server伺服器其實就是此域名的服務註冊商,這個name server才會真正的給你返回域名對應的ip地址,如果任何一步出現問題,那麼不好意思要麼網路服務出現問題要麼你的域名輸入錯誤, 一般後者居多。
上面步驟中,略去了快取步驟,比如瀏覽器快取區沒有命中目標,但在後面任意一個步驟命中目標後都會快取到瀏覽器中的,後面步驟類似,前一個步驟快取後面的結果,具體的快取失效時間等機制不做描述。
第二步:上一步中歷經多層波折,我們找到了IP地址,那麼下來,瀏覽器會根據IP地址給目標伺服器傳送HTTP請求。可以簡單的理解為,一個HTTP請求就是建立了一個socket連線(socket連線其實需要IP+埠,沒有的情況下,IPV4會用預設埠80,IPV6預設埠443),通過socket我們才能使用TCP/IP協議進行資料傳輸,此章內容下次會詳細解釋。socket連線建立以後,目標伺服器會返回一個響應內容。比如我們有時在瀏覽網頁時偶爾會發現的404、500錯誤都是伺服器給我們返回的響應,不過在這個賣萌就是生產力的時代,不同的瀏覽器或公司都會給出不同的優化後頁面。 第三部:瀏覽器根據HTTP解析響應的內容,進行解析、佈局和渲染。同時,相應的內容中可能還包含外部檔案,每一個外部檔案又會重複去執行第一步、第二部的步驟。如果目標網址用到了CDN加速,那麼還有更多的工作步驟,CDN加速的簡單理解其實就是把一些大的資源在網路中多處備份,使用者要訪問這個資源時,智慧的到離自己最近的那個備份中獲取資源。 但是在實際中,工作遠遠複雜與上面幾個步驟,可見一個網頁要歷經多少磨難才能來到你面前。第一次寫此類文章,如有不到之處還請指正批評。