如果說我們通過計算機連入了世界,那么瀏覽器可以算是一個看世界的窗口。那么,這個多彩的世界是如何展現在我們的面前的呢?現在我們就來看看從我們在瀏覽器地址欄輸入一個網址到瀏覽器將頁面展示出來這個過程發生了什么。
URL是什么
首先認識URL(Uniform Resource Locator),統一資源定位符。統一資源定位符是對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。互聯網上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎么處理它。基本URL包含模式(或稱協議)、服務器名稱(或IP地址)、路徑和文件名。以http://mail.163.com/index.html為例:
- http://:這個是協議,也就是HTTP超文本傳輸協議,也就是網頁在網上傳輸的協議。
- mail:這個是服務器名,代表著是一個郵箱服務器,所以是mail.
- 163.com:這個是域名,是用來定位網站的獨一無二的名字。
- mail.163.com:這個是網站名,由服務器名+域名組成。
- /:這個是根目錄,也就是說,通過網站名找到服務器,然后在服務器存放網頁的根目錄
- index.html:這個是根目錄下的默認網頁。
過程
從輸入URL到頁面展現,包含以下過程:
- 地址欄輸入URL地址。
- 域名解析。
- 服務器處理。
- 網站處理。
- 瀏覽器處理。
我們可以形象的認為瀏覽器拿著指定的購物券(URL)去買到相應的貨物,然后展示在窗口。詳細過程如下:
域名解析
為了便于記憶和辨識,人們使用域名來登錄網站。但是為了讓計算機理解這個地址還需要把它解析為IP地址。每個域名背后有對應的IP地址,每個網站就是靠IP來定位的。IP是因特網中的每臺連接到網絡的計算機為實現相互通信而遵循的規則協議。
在說明IP尋址之前,我們先了解DNS概念。DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析。 DNS解析是瀏覽器的實際尋址方式
首先,我們在地址欄輸入URL。瀏覽器會依次按下面的方法進行DNS解析域名:
- 瀏覽器會去自己的DNS緩存地址查看是否有當前地址的緩存記錄在一定的時間之內、瀏覽器訪問具有緩存記錄的網址,瀏覽器直接使用緩存ip地址進行訪問。
- 瀏覽器會從電腦C盤(windows下一般保存在C:\Windows\System32\drivers\etc)的hosts文件查找是否有存儲DNS信息,查找是否有目標域名和對應的IP地址;
- 從路由器的緩存DNS信息中查找;
- ISP DNS緩存查找,從網絡服務商(比如電信)的DNS緩存信息中查找;
- 經由以上三種查找方法還沒查找到目標URL對應的IP的話,就會向根域名DNS服務器查找目標URL的對應IP,根域名服務器會向下級服務器轉送請求,層層下發,直至找到對應IP為止。
經過以上IP尋址的過程,目標URL查找到對應的IP地址之后,通過IP地址查找到對應的服務器,瀏覽器將用戶發起的HTTP請求發送給服務器。HTTP請求包括請求報頭和請求主體兩個部分,其中請求報頭包含了至關重要的信息,包括請求的方法(GET / POST)、目標url、遵循的協議(http / https / ftp…),返回的信息是否需要緩存,以及客戶端是否發送cookie等。下一步就到了服務器處理階段的工作。
服務器處理
服務器:是一臺安裝了系統的機器,常見的系統如linux,windows server2012,系統里安裝的處理請求應用叫 Web server,常用Web服務器有Apache Nginx IIS Lighttpd。對于不同用戶發送的請求,會結合配置文件,把不同請求委托給服務器上處理對應請求的程序進行處理,然后返回后臺程序處理產生的結果作為響應。
網站處理
網站處理,就是實際后臺處理的工作。后臺開發現在有很多框架,但大部分都還是按照MVC(view-model-controller)設計模式進行搭建的。
瀏覽器處理
通過后臺處理返回的HTML字符串結果會被瀏覽器讀取解析,對應就是HTML頁面加載、解析、渲染的工作。瀏覽器通過上面步驟計算得到渲染樹,是DOM樹的可視化表示,構建渲染樹使頁面以正確的順序繪制出來,遵循一定的渲染規則,經過一系列的渲染工作,實現網站頁面的繪制,由此最終完成了頁面展示。
后記
以上就是從URL輸入到頁面展示的全過程。由于時間以及學識有限,很多細節沒有鋪展開。繼續努力學習,以后慢慢完善。