關於Web後端(1)-什麼是Web Server?

從這部份開始,會分享些與「web 後端」相關的資訊。提到web後端當然就要先介紹「web server」與「client」之間的關係。

什麼是web server?

它是用來提供web服務相關的伺服器,如apache及nginx…等。這些都是web server軟體。

以apache為例,若在電腦(指主機)上執行apache,它會在電腦上開一個連接埠為80。只要電腦是有連接到Internet且有個獨立IP,那別人(指client)就可以透過這個IP來連接到你的電腦。

什麼是client?

任何可以呈現server端所傳來的資訊,並提供使用者本地服務的程式,都能稱之為client。如Chrome及Firefox…等瀏覽器。

以瀏覽器為例,若今天我們想看一篇blog文章,client端會丟一些請求(request)到web server那邊去提取資料。當web server接收到client端的需求且經確認後,web server有該資料時,就會回傳一個帶有blog文章資料的回應(response)給client端。

而client端與web server之間的關係其實就是「client-server架構」。

什麼是client-server架構?

Client端與server端之間是透過HTTP協定來進行溝通。
(對於HTTP協定有興趣的讀者可以參考RFC723x這系列的技術文件)

  • Client端可以想像成是一個主動的角色,它會發送請求(request)給server端,並開始等待直到收到回應。
  • Server端可以想像成是一個被動的角色,它會等到client端發送請求(request)來後開始處理,並回傳一個回應(response)給client端。

有別於筆者在「什麼是client」所提到的例子,client端其實也可以在送請求(request)的同時傳送資料給server端。例如,假設今天我們要寫一篇blog網誌,client端這時候就會把你寫好的blog網誌內容經由請求(request)傳送資料給server端。

那還有其它的架構嗎?

有的!像是P2P(peer-to-peer)的點對點架構,不同於client-server端的架構,它是每個使用者的電腦會同時扮演著client與server的角色。

舉個例子來說,假設有ABCD四台主機。各台主機都有互相連線的情況下,A分享了一個檔案上去,經由Hash function產生一組key值,接著B, C, D這三台主機都可以藉由這組key值來取得這份檔案。


基本的「web server」介紹就到此結束。而在下一篇中將會針對「怎麼建立後端開發環境」來做介紹。

Web後端相關文章