背景
最近在開發和學習的過程中,突然發現自己對于 HTTP/HTML/WWW/INTERNET/NETWORK 等等相關概念都不夠了解。為了提升思維水平和學習能力,加速進步,需要從根本上掌握這些概念和其中包含的內容,了解他們從哪來,到哪去。
計算機網絡 Network
計算機網絡或者數據網絡是一個允許計算機之間交換數據的電信網絡。在計算機網絡中,聯網的運算設備使用一條數據鏈接來彼此交換數據。節點之間的連接使用有線媒介或者無線媒介。最著名的計算機網絡是因特網。
因特網 Internet
因特網是一個由使用 TCP/IP 協議棧來連接全球范圍設備的,互相連接的計算機網絡組成的全球系統。它是一個由局域或全球范圍的私人的、公共的、學術的、商業的和政府網絡組成的網絡,通過多種電子、無線和光網絡技術連接。因特網傳輸廣泛的信息資源和服務,例如相互連接的超文本文檔和萬維網應用、電子郵件、網絡電話和針對文件分享的點對點網絡。
萬維網 WWW
萬維網是一個信息空間,在其間文檔和其他網絡資源通過統一資源定位符所標識,通過超文本鏈接互聯,并可以通過因特網訪問。
超文本傳輸協議 HTTP
超文本傳輸協議是一個針對于分布的、協作的超文本信息系統的應用協議。對于萬維網,HTTP 是數據通信的基礎。超文本是使用包含文本的節點之間的邏輯鏈接的結構化文本。HTTP 是交換或者傳輸超文本的協議。HTTP 的開發是在 1989 年由 CERN 的李開始。HTTP 的標準化開發由 IETF 和 W3C 協調,最終出版了一系列的草案。HTTP/1.1 第一版定義,即最常用的 HTTP 版本,誕生于 1997 年,RFC 2068,但其已經在 1999 年由 RFC 2616 所廢棄。最近的版本,即 HTTP/2,在 2015 被標準化,并已經被當前主流的服務器所支持。
超文本標記語言 HTML
超文本標記語言是針對創建網頁和網絡應用的標準標記語言。它和層疊樣式表、JavaScript 一起,組成了針對萬維網的的技術基礎。網絡瀏覽器從網絡服務器或者本地存儲接收 HTML 文檔并且將其渲染成多媒體網頁。HTML 原始地、語義地描述了一個包含該文檔外觀提示的網頁。
HTML 元素是 HTML 頁面的基礎材料。和結構一起,圖像和例如交互式表單等其他對象可以被嵌入到渲染的頁面中。它通過為例如頭部、段落、鏈接、引用和其他項目等文本表示結構化語義,提供了一個方法來創建結構化文檔。 HTML 元素由使用尖括號寫成的標記表述。例如 <img />
和 <input />
這樣的標記直接講內容引入到頁面。其他例如 <p>...</p>
包圍并提供關于文檔文本的信息并可能包含其他標記作為子元素。瀏覽器不顯示這些 HTML 標記,但是使用它們來解釋頁面的內容。
HTML 可以嵌入用腳本語言,例如 JavaScript 書寫的程序,這些腳本語言可以影響網頁的行為和內容。CSS 的包含定義了內容的外觀和布局。 W3C,HTML 和 CSS 標準的維護者,從 1997 年起鼓勵使用 CSS 取代直接的描述外觀的 HTML。
HTML5
HTML5 是在萬維網上用來結構化和展示內容的標記語言。它是 HTML 標準的第五個版本,也是當前的版本。
它由 W3C 在 2014 年 10 月發布,用于提升該語言對最新的多媒體的支持,同時保持簡單的人類可讀性,和對于例如瀏覽器和語法分析器等設備和電腦的統一的理解。HTML5 想要不僅包含 HTML4,也包括 XHML 1 和 DOM Level 2 HTML。
HTML5 包括詳細的處理模型,這些模型用來促進更多共同操作的實現;它擴展、提升并合理化針對文檔的標記的可用性,并為復雜的網絡應用引入標記和 APIs。基于相同原因,HTML5 也是一個跨平臺移動應用的選擇,因為它包含了設計和低功耗設備共同工作的特性。
許多新的語法特性被納入。為了原生包含并處理多媒體和圖形化內容,新的 <video>
、<audio>
、<canvas>
元素被加入進來,并支持 SVG 內容和 用于數學公式的 MathML。為了豐富文檔的語義內容,新的頁面結構元素,例如<main>
、<section>
、<article>
、<header>
、<footer>
、<aside>
、<nav>
和 <figure>
被加入。新的屬性被引入,一些元素和屬性已經被移除,并且例如 <a>
、<cite>
、<menu>
已經被修改、重新定義或者標準化了。
這些 APIs 和 DOM 現在已經是 HTML5 規格書的基礎部分,并且 HTML5 頁更好的定義了對于任何無效文檔的處理流程。
CSS
層疊樣式表是一個用于描述用標記語言寫成的文檔樣式的樣式表語言。雖然經常被用于設置用 HTML 和 XHTML 寫的網頁的圖像樣式和用戶界面,這門語言也可以應用于任何 XML 文檔,包括普通的 XML、SVG 和 XUL,也可以應用于渲染語音合成或者其他媒體。和 HTML、JavaScript 一起,CSS 也是基礎技術,大部分站點用該技術創建具有迷人視覺的網頁、網絡應用的用戶界面以及大多數移動應用的用戶界面。
CSS 主要應用于從將文檔樣式從文檔內容中分離,包括例如布局、顏色和文字等方面。該分離操作可以提高內容可達性,提供更多靈活性和在樣式特性的規格上的控制力,使得多個 HTML 頁面可以共享通過在單獨的 .css 文件中說明的相關 CSS 的格式,并可以減少復雜度和在結構化內容上的重復性。
通過在他們使用的 CSS 文件中編輯幾行代碼,而不是改變文檔中的標記,就可以使得對一個或多個文檔的圖形設計的改變可以輕松快速的應用。
CSS 規格書描述了在對于一個特殊元素的多種規則匹配的情況下,決定哪種樣式規則適用的優先計劃。在這個所謂的層疊里,屬性或者權值被計算并且賦值給規則,這樣結果就可以預判出來。
CSS 規格書被 W3C 組織維護。MIME 類型 text/css 被注冊來使用 CSS。針對 CSS 文檔,W3C 運行了一個免費的 CSS 有效性驗證服務。
JavaScript
JavaScript 是一個高級的、動態的、弱類型的解釋語言。它已經在 ECMAScript 語言規格書中被標準化了。和 HTML、CSS 一起,它也是萬維網內容產品的三個核心技術之一;多數的站點都使用它,并且它被所有現代瀏覽器所支持且不需要插件。JavaScript 由于頭等函數是基于原型的,使其成為多重編程范式語言,支持面向對象、命令式和函數式編程風格。它具有一個 API 可以同文本、數組、日期和正則表達式工作,但是沒有包含任何 I/O,例如網絡、存儲或者圖形設備,這些依賴于那些它所潛嵌入的主機環境。
雖然 JavaScript 和 Java 有很強的外觀相似度,包括語言名稱、語法以及格子的標準庫,這兩種語言在其設計上還是兩種語言并且大相徑庭。JavaScript 主要受到例如 Self 和 Scheme 的編程語言的影響。
JavaScript 在非基于網絡的環境中被使用,例如 PDF 文檔、指定站點瀏覽器和桌面小部件。更新更快的 JavaScript 虛擬機和構建它們的平臺也增加了對于服務器側網絡應用程序的流行程度。在客戶端側,JavaScript 已經被傳統地當作了一個解釋型語言來實現,但是更多的最近的瀏覽器執行了即時編譯。它也在使用在游戲開發、桌面和移動應用創建和隨運行時環境一起的,例如 Node.js 的服務器側網絡編程中。
DOM
DOM 是 Document Object Model 的縮寫,意思為文檔對象模型。文檔對象模型是一個跨平臺的、語言獨立的 API,它將一個 HTML、XHTML 或者 XML 文檔看成是一個樹形結構,在這個樹形結構中,每個節點都是一個代表文檔一部分的對象。這些對象可以被編程操縱,并且作為其結果的任何可視化的變化都會反映在文檔的顯示上。
DOM 的主要標準由 W3C 控制,它在 2004 年最后一次開發了一個推薦。WHATWG 接管了標準的開發,并把它作為一個活躍的文件發布。W3C 現在已經發布了 WHATWG 標準的穩定版簡要說明。
應用
瀏覽器
為了渲染例如一個 HTML 網頁的文檔,大多數瀏覽器都使用了一個類似于 DOM 的內部模型。每個文檔節點被組織在一個被稱為 DOM 樹的樹結構中,頂層的節點被命名為 Document Object。當一個 HTML 頁面在瀏覽器中被渲染時,瀏覽器將 HTML 下載到本地存儲并自動將其轉換以便屏幕上顯示出頁面。DOM 也是 JavaScript 在頁面中傳播瀏覽器狀態的途徑。
JavaScript
當一個網頁被加載的時候,瀏覽器創建了一個該頁面的文檔對象模型。
由于對象模型,JavaScript 被充分賦予了創建動態 HTML 的能力:
- JavaScript 可以增加、修改和刪除頁面中的所有 HTML 元素和屬性;
- JavaScript 可以修改頁面中的所有 CSS 樣式;
- JavaScript 可以對頁面中的所有當前存在的事件作出響應;
- JavaScript 可以在頁面中創建新的事件;
ECMAScript
ECMAScript 是一個被 ECMA 國際標準化的作為商標的腳本語言規格書。它曾基于 JavaScript,但 JavaScript 現在跟隨 ECMAScript。它通常應用于萬維網的客戶側腳本。ECMAScript 的其他實現包括 JScript 和 ActionScript。
關系
Network 和 Internet
Network 是最基礎的網絡概念,無論協議、范圍和應用領域是什么,只要是計算設備通過數據鏈接交互數據就是所謂的網絡。
Internet 是一個特殊的、范圍較大的 Network。
Internet 和 WWW
萬維網是一個抽象的信息空間,因特網是萬維網的基礎,用戶通過因特網的連接訪問萬維網的內容。
WWW 和 HTTP/HTML
HTTP 是萬維網的主要傳輸協議,規定了萬維網服務器和瀏覽器之間如何傳輸數據,也有其他的傳輸協議例如 FTP 等。HTML 是萬維網的重要且主要的格式,描述了網頁的頁面和內容,也有很多其他的格式,例如 XML/JSON/JPG 等眾多格式。
DOM 和 JavaScript
Mozilla 的這篇文章全面的解釋了 DOM 的定義以及和 JavaScript 的關系。
DOM 和 JavaScript 以前是一體的,網景有網景的接口和語言,微軟有微軟的接口和語言。后來因為瀏覽器兼容性實在太差,JavaScript 先是在 ECMA 建立了 ECMAScript 標準,所有的瀏覽器按照標準對語言做支持就可以,后來 W3C 工作組又對 DOM 進行了標準化。因此這兩樣東西分離開來。JavaScript 可以獨立于 DOM 運行,例如 Node.js;DOM 也可以用其他語言來訪問,例如 Python。
DOM 和 HTML/CSS
普通的 HTML 格式會被瀏覽器轉換成標準的 DOM,以便通過 JavaScript 通過編程方式訪問或者顯示出來。同時瀏覽器將 CSS 也轉換成相應的格式,并和已經轉換成 DOM 樹的網頁做匹配,形成最終的顯示結果。因此,CSS 和 DOM 沒有直接關系。