網路 101 |網路伺服器(Web Server)是什麼?|EP 04
更新日期: 2021 年 9 月 25 日
前言
本文為網路系列第四篇文章,若想要更順暢的閱讀本文內容,建議先閱讀下列文章
看完後,才會對下方文字有更清楚的認知。
網路伺服器是什麼?
「網路伺服器」這個詞,可以指「硬體」也可指「軟體」,又或是兩者共同運作的裝置。
當我們理解這個詞時,要先了解背後功能與意涵,才不會造成觀念上混淆。
從硬體角度
網路伺服器就是一台電腦。
那台電腦儲存了數個軟體、網站文件(例如 html 檔案、相片等)。
網路伺服器藉由連接網際網路,以此在 Web(全球資訊網) 提供資料給其他需要的裝置。
從軟體角度
網路伺服器是包含許多軟體的集合體,每個軟體都控制著使用者讀取儲存資料的方式。
我們以最基礎的軟體為例:HTTP 伺服器。
HTTP 伺服器是一個軟體功能,它能識別 URLs(網站網址)與 HTTP(一種瀏覽器與伺服器對話的協議)。
當 HTTP 伺服器判定識別成功後,它就會將儲存的網站內容,傳送到使用者的裝置上(例如:手機)
整體觀察
從最基礎的部分來看,每當網頁瀏覽器需要伺服器存儲的檔案,瀏覽器會以 HTTP 協議方式發出「請求」。
當「請求」正確傳送到網路伺服器(硬體)後,HTTP 伺服器(軟體)會接收到該則請求。
接著,HTTP 伺服器會去尋找瀏覽器需要的檔案,並且同樣以 HTTP 協議方式,將檔案送回瀏覽器。
動態伺服器、靜態伺服器
若你想創造一個網站,你會需要一個靜態或動態的網路伺服器。
靜態網路伺服器
一個靜態網路伺服器,是由一台電腦(硬體)搭配一個 HTTP 伺服器(軟體)。
我們稱其為「靜態」的原因,是因為伺服器回傳給伺服器的檔案,是「事先寫好」的類型。
動態網路伺服器
動態網路伺服器,可以說是靜態伺服器的進階版。
通常它是以靜態伺服器為基礎,再額外新增一些軟體(例如資料庫、應用伺服器)。
我們稱之為「動態」的原因,是因為它回傳檔案時,會自動將檔案調整到最新的內容。
舉例來說,例如維基百科或 MDN 等大型網站,擁有數以千計的網頁。
基本上,該網站通常是由數個 HTML 模板與一個巨大的資料庫組成,而非上千頁的靜態 HTML 檔案。
當瀏覽器想要查看該類網站時,動態伺服器會透過應用伺服器(軟體),從資料庫去抓取內容,再將資料填到既有的 HTML 架構裡。
對於維基百科等大型網站,上述這種回傳方式,才更容易維持與傳送檔案內容。
簡單來說,動態伺服器就像是現煮料理,靜態伺服器就像冷藏料理。
網站可以依據自己的需求,使用合適的網路伺服器。
靜態內容 vs 動態內容
大致上來說,一台網路伺服器可以存放兩種型態的內容:靜態內容與動態內容。
我們回想一下前文內容,「靜態」一詞代表內容是「事先寫好」
由此可知,由靜態內容組成的靜態網站,就是最簡單的架站起步。
我們建議還是新手的各位,若想架設網站可以從「靜態網站」開始著手。
另外,「動態」一詞則表示網站的內容,是由伺服器自行製作而成,或是透過抓取資料庫內容即時生成。
這種做法提供使網站更有彈性,但同時技術需求更加複雜,使製作相關網站的門檻提高許多。
到底該選哪種伺服器技術?
市面上有各種應用伺服器(軟體)的技術,我們無法給予一個大方向的解答。
有些應用伺服器是針對特定需求的網站,例如部落格、維基百科、電子商務。
此外,有些應用伺服器則針對通用的需求去設計。
如果你想要打造一個動態內容的網站,應用伺服器值得你花時間好好研究。
除非,你想要透過自己撰寫程式完成,這樣你就不需要安裝應用伺服器等軟體了。
前面我們談完瀏覽器與網路伺服器之間,如何透過「請求」、「回應」兩個過程,完成資料的傳送。
接下來,我們將針對整個資料傳送的過程,進行更深入的探討。
檔案託管(hosting files)
首先,一台網路伺服器要先儲存網站的檔案、文件。通常包含所有 HTML 檔案,以及其他相關的檔案資源。
例如圖像、CSS 樣式表(網站外觀)、JavaScript 檔案(網站互動程式)、字形與影片等等。
技術來說,我們可以將上述檔案,全部存在自己原有的電腦中。
但儲存在一個網站專用的網路伺服器,能具有以下優點:
- 專用伺服器通常更加實用(永遠開機且運作)
- 專用伺服器總是連上網(排除停機時間、系統問題)
- 專用伺服器可以擁有固定不變 IP 地址,它也被稱為專用 IP 地址(不是每個網路供應商,都能提供此服務給家用網路)
- 專用伺服器通常由第三方廠商維護
因為以上原因,找到一個良好伺服器提供商,是打造個人網站的關鍵一步。
建議仔細查看各種伺服器廠商提供的服務,從中選出一個適合自己預算與需求的方案。
若你網站的檔案,原先是儲存在自己電腦,記得將檔案上傳到網路伺服器中。
HTTP 溝通方式
檔案託管完成後,網路伺服器還會提供 HTTP(HyperText Transfer Protocol 簡稱) 服務。
HTTP 的中文全名為「超文本傳送協議」。
我們可以從 HTTP 的全名得知,它主要專注在兩台不同的電腦之間,傳送「超文本」(含有超連結的網站檔案)。
另外,「協議」則是兩台電腦之間的溝通語言,它是由成堆的通訊規則組合而成。
白話文來講,HTTP 就是讓兩台電腦間,能夠透過「溝通」互相傳遞檔案的一種「電腦語言」。
HTTP 深入探討
HTTP 通訊協議具有兩大特性:可閱讀、無狀態。
可閱讀
協議內所有的指令,都屬於人類可閱讀、明文(plain-text)的形式
你問:「什麼是明文?是那位民進黨的政治人物陳明文嗎?」
我知道不好笑,但不是歐。
「明文」(或稱為明碼)是一種電腦通訊專用術語。
白話文來講,明文就是電腦預設的文字呈現方式,不會有任何特別字體大小、字型、斜體、黑體等內容。
例如我們在記事本打字的內容,就屬於明文。
無狀態
前面我們說到,伺服器與瀏覽器兩者互動的方式,是透過「請求」與「回覆」兩個動作完成。
「無狀態」的意思,代表伺服器不會去判斷每則「請求」的差異。
舉例來說,若有一位使用者從 Yahoo 奇摩的「首頁」點進查看「新聞」,他的進入路徑為「首頁」→「新聞」
若另一位使用者,是直接在瀏覽器輸入「奇摩新聞」的網址,他的進入不需要進到首頁,就直接為「新聞」。
對於 http 來說,上述兩位使用者的要求,不會因為進入網站的路徑不同,因此產生不同的回應。
我們也稱此現象為「無狀態」。
你好奇:「那什麼是有狀態?」
有狀態就是無狀態的相法,使用者必須要遵循特定的路徑,伺服器才會回應相應的網頁內容。
以往網路購物來說,「購買成交」這個網頁內容,一定要完成付款要求的頁面,才會顯示相應內容。
整體觀察
HTTP 包含了很多技術層面的內容,身為初學者的我們,只需要關注以下要點:
- 通常只有客戶端(瀏覽器)會發出 HTTP 請求給伺服器,也只有伺服器能回應 HTTP 的請求。
- 網路伺服器可以在瀏覽器發出請求前,預先將網站的數據放到瀏覽器暫存中,此技術稱為「伺服器推送」。
- 當瀏覽器透過 HTTP ,向伺服器發出一個網站檔案請求,客戶端必須提供該檔案的網址。
- 網路伺服器必須回應所有 HTTP 請求,就算是錯誤的訊息也要回應。
我們回顧整個 HTTP 處理流程,它將經歷以下步驟:
1. 接收到網站請求, HTTP 伺服器(軟體)會先查看請求的網址,是否對應實際存在的檔案。
2. 如果存在,網路伺服器(硬體)會回傳該檔案的內容。如果不存在,應用伺服器(軟體)會建立相關檔案。
3. 如果整個回傳流程可行,網站伺服器會傳送一則錯誤訊息給瀏覽器,最常見為「404 Not Found」頁面。
同時,由於 404 錯誤頁面過於常見,有些網站設計師還會花費許多心力,去設計 404 錯誤頁面。
最後,我們可以來看看 google 這間公司,它如何維護自己的伺服器。
以上就是這次的說明,我們下次見!