iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 6
0
Modern Web

Node JS-Back end見聞錄系列 第 6

Node.js-Backend見聞錄(05):關於後端觀念(一)-什麼是client-server架構?

Node.js-Backend見聞錄(05):關於後端觀念(一)-什麼是client-server架構?

前言

從這部份開始,會分享些與「web 後端」相關的資訊。在提到什麼是client-server架構前,我們得先從什麼是「server端」及「client端」,再來理解它們之間到底有什麼關係。

什麼是server端?

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

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

註記:port 80通常是HTTP的連接埠,port 443則為HTTPS的連接埠。

什麼是client端?

任何可以呈現server端所傳來的資訊,並提供使用者本地服務的程式,都能稱之為client。如Chrome及Firefox…等瀏覽器。當然,手機的APP端,也可以算是眾多client之一。

以瀏覽器為例,若今天我們想看一篇關於「企鵝」文章,client端會丟請求(request)到server端那邊去提取資料。當server端接收到client端的需求,且去資料庫那邊確認有資料後,就會回傳與「企鵝」相關的文章資料,並回傳一個回應(response)給client端。

而client端與server端之間的關係其實就是「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」來做介紹。


上一篇
Node.js-Backend見聞錄(04):關於Git(四)-查詢歷程
下一篇
Node.js-Backend見聞錄(06):關於後端觀念(二)-什麼是API?
系列文
Node JS-Back end見聞錄31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言