從這部份開始,會分享些與「web 後端」相關的資訊。在提到什麼是client-server架構前,我們得先從什麼是「server端」及「client端」,再來理解它們之間到底有什麼關係。
它是用來提供web服務相關的伺服器,如apache及nginx…等。這些都是web server軟體。
以apache為例,若在電腦(指主機)上執行apache,它會在電腦上開一個連接埠(port)為80。只要電腦是有連接到Internet且有個獨立IP,那別人(指client)就可以透過這個IP來連接到你的電腦。
註記:port 80通常是HTTP的連接埠,port 443則為HTTPS的連接埠。
任何可以呈現server端所傳來的資訊,並提供使用者本地服務的程式,都能稱之為client。如Chrome及Firefox…等瀏覽器。當然,手機的APP端,也可以算是眾多client之一。
以瀏覽器為例,若今天我們想看一篇關於「企鵝」文章,client端會丟請求(request)到server端那邊去提取資料。當server端接收到client端的需求,且去資料庫那邊確認有資料後,就會回傳與「企鵝」相關的文章資料,並回傳一個回應(response)給client端。
而client端與server端之間的關係其實就是「client-server架構」。
Client端與server端之間是透過HTTP協定來進行溝通。(對於HTTP協定有興趣的讀者可以參考RFC723x這系列的技術文件)
Client端可以想像成是一個主動的角色,它會發送請求(request)給server端,並開始等待直到收到回應(response)。
Server端則可以想像成是一個被動的角色,它會等到client端發送請求(request)來後開始處理,並回傳一個回應(response)給client端。
有別於筆者在「什麼是client」所提到的例子,client端其實也可以在送請求(request)的同時傳送資料給server端。例如,假設今天我們要寫一篇新文章,client端這時候就會把你寫好的文章內容經由請求(request)傳送資料給server端。在server端成功收到並存入資料庫後,就會再回傳一個存入成功的訊息,夾雜在response中,回傳給client端。
有的!像是P2P(peer-to-peer)的點對點架構,有別於client-server架構,它是每個使用者的電腦會同時扮演著client端與server端的角色。
舉個例子來說,假設有ABCD四台主機。各台主機都有互相連線的情況下,D分享了一個檔案上去,經由Hash function產生一組key值,接著A, B, C這三台主機都可以藉由這組key值來取得這份檔案。
基本的「web server」介紹就到此結束。若讀者朋友們對於HTTP協定的運行有興趣,真的推薦去看RFC 723x系列的文件,肯定會有不少收穫。在下一篇的分享中,將會針對「什麼是API」來做介紹。