Web 的工作原理,第二部分:訪問 URL 時會發生什麼
已發表: 2016-12-06在上一篇文章中,我們討論了 Web 是如何形成的。 在這篇文章中,我們將試一試,看看當您使用瀏覽器訪問 URL 時會發生什麼。 我們還將了解 Web 中使用的當代技術以及它們如何組合在一起。
從您按下 Enter 按鈕到查看網頁,所涉及的技術非常多。 在上一篇文章中,我們討論了超文本和 HTTP,但這只是開始:
- Web 服務器(如 apache2 和 nginx)實現了 HTTP 協議以及其他一些功能,使 Web 瀏覽器能夠連接、請求和接收 Web 數據。 HTTP 是消息、網頁、圖像和資源在 Web 服務器和瀏覽器之間“傳輸”的通道。
現代網絡要求很高,現代網絡服務器已經應對這一挑戰。 可擴展性和安全性是當今世界的兩個主要問題。 現代 Web 服務器具有高度可擴展性(能夠同時處理超過 10,000 個連接),提供多種負載平衡選項,支持 SSL/TLS 和 HTTP/2。 毫無疑問,HTTP/2 對 HTTP/1.1 的主要改進是卓越的數據包流管理。 視頻流在今天無處不在,HTTP/1.1 無法充分滿足當今所有不同設備、網絡容量和在線 Web 用戶數量的需求。
- HTML (超文本標記語言)是一種使用標籤來表示您的網絡瀏覽器可以理解的結構化超文本文檔的語言。
它的最新版本 HTML5 引入了許多語言改進和清理,但最令人印象深刻的新增功能是原生視頻和音頻支持、2D 和 3D 圖形以及本地數據庫存儲。 這些改進有效地淘汰了 Flash 和 Silverlight 等多媒體技術。
- CSS (層疊樣式表)是網頁設計師使用的一種技術,可以使許多網頁的視覺更改更容易。
CSS 代碼可以駐留在 HTML 中,或者通常情況下,它們是單獨的文件,由 HTML 頁面引用。 CSS 的用處在於它將內容與表示分離,為網頁設計師提供了一個強大的工具來集中管理網站的所有美學細節。
- 後端(例如 PHP 或 Java)是與 HTML 混合的代碼,在計算結束時由 Web 服務器執行。
現在所有的網站都是動態的; 這意味著不再有任何簡單的 .html 文件提供給瀏覽器。 所有現代語言,加上稱為 Web 框架的軟件庫,都可以用作網站的後端解決方案。 最近發布的 PHP 7 及其引入的出色性能改進和功能以及 Facebook 的 HHVM 都將整個過程提升到了一個新的水平。
- 前端(Javascript) 也是與 HTML 混合的代碼,但它在您的計算機上本地執行,由您的網絡瀏覽器執行。
也許現代網絡中最令人驚訝和令人印象深刻的發展是 Javascript。 它從用於製作菜單和顯示彈出窗口的 Java 的小弟,變成了一種同時用於客戶端和服務器的強大編程語言。 如今,它可以在網絡瀏覽器上以極快的速度執行任何操作。 谷歌的 V8 Javascript 引擎是一個重大的技術遊戲規則改變者。
當您訪問 URL 時會發生什麼
網絡是不同技術的聚寶盆,但有兩個概念的基本功能即使在今天也沒有改變。 Web 瀏覽器和 Web 服務器。 它們在“舊”客戶端/服務器模型上運行,如下所示:客戶端使用地址(IP 或名稱)連接到服務器,並請求某些內容。 然後,服務器響應客戶端等等。 客戶端連接到服務器,但不是相反。 雖然,今天的網絡技術已經顯著改變了這個模型,但我們將使用它以簡化的方式來解釋這個過程。
所以,你啟動你最喜歡的瀏覽器並訪問一個網頁。 從您按下Enter鍵到您最終看到顯示的頁面,會發生以下情況:
- 您的瀏覽器首先會調用一個為您的計算機配置的名為 DNS 解析器的軟件模塊,並詢問與您輸入的 URL 對應的 IP 地址。
DNS(域名系統)是將計算機名稱(如www.pressidium.com )映射到 IP 地址的核心 Internet 服務。 IP 地址是連接到 Internet 的計算機可以理解並可以連接的地址。 我們將在下一篇文章中探討它是什麼以及它是如何工作的。 - 然後,您的瀏覽器使用端口 80 或 443 啟動到該 IP 地址的連接。
IP 地址表示服務器,而端口號表示您要連接的服務。 默認情況下,所有 Web 服務器在端口 80 上運行,而端口 443 用於安全 Web 連接。
Web 服務器處理您輸入的 URL 並將控制權交給後端。 後端代碼生成 HTML 頁面並將其交給 Web 服務器。 然後,Web 服務器最終通過 HTTP 通道將 HTML 頁面發送到瀏覽器。 - Web 服務器發回 HTML 所需的毫秒數內發生了很多事情。 網站中的後端代碼通常連接到數據庫、執行查詢、取回數據、聯繫其他後端服務並最終將所有內容組裝成 HTML 文檔。它實際上並不是您請求的離散文件,而是動態資源,它是使用各種不同的技術和組件動態生成的。
- 您的 Web 瀏覽器接收 HTML 頁面,關閉與 Web 服務器的連接,然後將其呈現在您的屏幕上。 它執行 HTML 中存在的 Javascript 代碼。現代網頁設計遵循一種稱為響應式設計的方法。 這種方法使用 HTML、CSS 和 Javascript 來動態調整網頁的佈局,具體取決於您用於瀏覽的設備。 如今,隨著移動設備和平板設備的爆炸式增長,這一點變得非常重要。
下一步是什麼?
到目前為止,我們已經簡要介紹了各種現代 Web 技術,以及訪問 URL 時會發生什麼。 毫無疑問,Web 技術複雜且數量眾多,僅一篇文章無法令人滿意地介紹。 通過本系列文章,我們主要旨在為您提供 Internet 和 Web 的“鷹眼”視圖。
在這個有趣系列的下一部分中,我們將訪問另一個重要的 Internet 基礎設施,即域名系統。 沒有它,什麼都不會真正起作用! (至少對我們人類而言)。