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-server架構:
Client端與server端之間是透過HTTP協定來進行溝通。
(對於HTTP協定有興趣的讀者可以參考RFC723x這系列的技術文件)
Client端可以想像成是一個主動的角色,它會發送請求(request)給server端,並開始等待直到收到回應。
Server端可以想像成是一個被動的角色,它會等到client端發送請求(request)來後開始處理,並回傳一個回應(response)給client端。
有別於筆者在「什麼是client」所提到的例子,client端其實也可以在送請求(request)的同時傳送資料給server端。例如,假設今天我們要寫一篇blog網誌,client端這時候就會把你寫好的blog網誌內容經由請求(request)傳送資料給server端。