什麼是網路伺服器?

CHIBOHANDONG發表於2023-02-27

“網路伺服器(Web server)”可以代指硬體或軟體,然而它們都是協同工作的。

  1. 在硬體部分,一個網路伺服器是一個用來儲存網站的組成檔案(比如說 HTML 文件,圖片,CSS 樣式表,和 JavaScript 檔案)以及交付它們到終端使用者的裝置的計算機。它跟網際網路連線並可以透過域名像 mozilla.org 來被訪問。
  2. 在軟體部分,一個網路伺服器包括幾個控制網路使用者如何訪問託管檔案的部分,至少是一個 HTTP 伺服器 [HTTP server]。一個 HTTP 伺服器是一個能理解 URLs (網路地址) 和  HTTP (你的瀏覽器檢視網頁時所用的協議) 的軟體。

在最基礎的層次,每當一個瀏覽器需要一個網路伺服器上的託管檔案時,瀏覽器會透過 HTTP 請求這個檔案。當這個請求到達了正確的網路伺服器(硬體),這個 HTTP 伺服器(軟體)返回所請求的文件,同樣透過 HTTP。

要釋出一個網站,你需要一個靜態或動態的伺服器。

靜態網路伺服器( static web server),或者堆疊,由一個計算機(硬體)和一個 HTTP 伺服器(軟體)組成。我們稱它為 “靜態” 因為這個伺服器把它的託管檔案 “保持原樣” 地傳送到你的瀏覽器。

動態網路伺服器( dynamic web server 由一個靜態的網路伺服器加上額外的軟體組成,最普遍的是一個應用伺服器 [application server] 和一個資料庫 [database]。我們稱它為 “動態” 因為這個應用伺服器會在透過 HTTP 伺服器傳送託管檔案到你的瀏覽器前,對這些託管檔案進行更新。

舉個例子,要生成你在瀏覽器中看到的最終網頁,應用伺服器或許會用一個資料庫中的內容填充一個 HTML 模板。網站像 MDN 或者維基百科 [Wikipedia] 有成千上萬的網頁,但是它們不是真正的 HTML 文件,它們只是少數的 HTML 模板以及一個巨大的資料庫。這樣的設定讓它更快更簡單地維護以及交付內容。

深入探索

要取得一個網頁,你的瀏覽器會傳送一個請求到網路伺服器,而這個網路伺服器會進而在它自己的儲存空間中搜尋所請求的檔案。當找到這檔案時,這個伺服器會讀取它,按需處理它,並且把它傳送回瀏覽器。讓我們更仔細地觀察這些步驟。

託管檔案

一個網路伺服器首先需要儲存這個網站的檔案,也就是說所有的 HTML 文件和它們的相關資源 [related assets],包括圖片,CSS 樣式表, JavaScript 檔案,字形 [fonts] 以及影像。

嚴格來說,你可以在你自己的計算機上託管所有的這些檔案,但是在一個專用的網路伺服器上儲存它們會方便得多,因為它

    • 會一直啟動和執行
    • 會一直與網際網路連線
    • 會一直擁有一樣的 IP 地址(不是所有的  ISPs 都會為家庭線提供一個固定的 IP 地址)
    • 由一個第三方提供者維護

因為所有的這些原因,尋找一個優秀的託管提供者是建立你的網站的一個重要部分。

一旦你設定好一個網路託管解決方案,你只需要去上傳你的檔案到你的網路伺服器 [ upload your files to your web server]。

透過HTTP交流

第二點,一個網路伺服器提供了  HTTP(超文字傳輸協議)支援。正如它的名字暗示,HTTP 明確提出瞭如何在兩臺計算機間傳輸超文字(比如說連結的網路文件 [linked web documents])。

一個協議 [protocol] 是一套為了在兩臺計算機間交流而制定的規則。 HTTP 是一個文字化的 [textual],無狀態的 [stateless] 協議。

文字化:所有的命令都是純文字的 [plain-text] 和人類可讀的 [human-readable]。 無狀態:無論是伺服器還是客戶都不會記住之前的交流。舉個例子,僅依靠 HTTP,一個伺服器不能記住你輸入的密碼或者你正處於業務中的哪一步。你需要一個應用伺服器來進行這樣的工作。

HTTP 為客戶和伺服器間的如何溝通提供清晰的規則。就目前而言,只需要知道這幾點:

    • 只有使用者可以制定 HTTP 請求,然後只會送到伺服器。伺服器只可以回覆一個客戶的 HTTP 請求。
    • 當透過 HTTP 請求一個檔案時,客戶必須提供這個檔案的  URL
    • 網路伺服器必須應答每一個 HTTP 請求,至少也要回復一個錯誤資訊。

在一個網路伺服器上,HTTP 伺服器要為處理和應答到來的請求負責任。

    1. 當收到一個請求時,一個 HTTP 伺服器首先要檢查所請求的 URL 是否與一個存在的檔案相匹配。
    2. 如果是,網路伺服器會傳送檔案內容回到瀏覽器。如果不是,一個應用伺服器會建立必要的檔案。
    3. 如果兩種處理都不可能,網路伺服器會返回一個錯誤資訊到瀏覽器,最常見的是 “404 未找到” ["404 Not Found"]。(這錯誤太常見以至於很多網頁設計者花費多數時間去設計 404 錯誤頁面 [ 404 error pages]。)

靜態和動態內容

粗略地說,一個伺服器可以提供靜態或者動態的內容。“靜態” 意味著 “保持原樣地提供”。靜態的網站是最容易設立的。

“動態” 意味著伺服器會處理內容甚至實時地從一個資料庫中產生它。這個解決方案提供了更多的靈活性,但是技術堆疊變得更難去處理,讓建立網站更顯著地複雜。

以你MDN頁面為例子。在正在託管它的網路伺服器裡,有一個應用伺服器會從資料庫提取文章內容,安排它的佈局,把它放置在一些 HTML 模板中,然後為你傳輸結果。在這裡,這個應用伺服器叫做  Kuma 並且是由  Python (使用  Django 構架) 構建的。Mozilla 團隊為了 MDN 的特殊要求開發 Kuma,但是這裡有很多相似的建立在很多其他技術之上的應用。

這裡有太多的應用伺服器,所以提供一個具體的伺服器是挺難的。有些應用伺服器迎合具體的網站類別,像是部落格,百科或者電子商店;其他的應用伺服器,叫做  CMSs(內容管理系統 [content management systems]),則更加通用。如果你正在開發一個動態網站,花一些時間去選擇適合你需求的工具。除非你想要學習一些網路伺服器程式設計 [web server programming](而這本身就是一個令人興奮的領域!),你不需要去建立你自己的應用伺服器。這只是在重新創造輪子。

chibohandong

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026609/viewspace-2937092/,如需轉載,請註明出處,否則將追究法律責任。

相關文章