HTTP 之 Client、Server 角色定位

客戶端 (Client),指用來發起連線,
建構並發出 一或多個 請求 (request) 給伺服端,以傳達所需意圖者。
 
伺服端 (Server),是指監聽 (listen) 與接受 (accept)/拒絕 (reject) 連線,
並送回 一或多個 回應 (response),以服務客戶端者。
 
Client、Server 僅指特定連線的相對角色,
一個程式可能有時做為 Client,某些時候為 Server。
 
[註]:
HTTP/2 曾定義 Server Push,讓 Server 可在 Client 尚未請求前送出資源。不過主要瀏覽器已移除或停用它,現代網站通常以 preloadpreconnect 與良好的快取策略處理關鍵資源。
 
 

User Agent vs. Origin Server

最直覺想到的 Client 就屬 瀏覽器 了,
不管是 Firefox、Google Chrome、Safari、Edge,還是 IE 🙄,
都是幫助我們 上網,瀏覽網頁,使用 HTTP 的程式。
browser
 
HTTP 只是傳輸『協定』,並無規範使用方式,
使用的程式,除了瀏覽器,還有:
命令列工具、爬蟲 (Web crawler)、手機 APP、各種通訊設備、家電用品…,
 
任一這些 Client 程式,又稱為 User Agent (使用者代理)
其比 Client 一詞,更明確地指向『 代表 使用者 發起 請求的 程式 』。
 
如上所述,不該假定目前是 人類 使用者 在與 Server 進行互動,
這是實作上,需注意的地方。
 


 
就像 User Agent (使用者代理) 之於 Client (客戶端)
 
Origin Server (源伺服器) 之於 Server (伺服端)
是指能針對 User Agent 給定的請求目標,「真正」具權威性的送出回應的 程式
又譯為 原始伺服器、來源伺服器…,此系列以 源伺服器 為主。
 
 
咦!? 難道還有假的送出回應嗎?
 
fake
 
Ans:
有的,當連線並非單純的 雙向連接 (bidirectional connection)
而是具有 中介 (Intermediary) 的 請求/回應鏈 時,
對 Client 來說 代理伺服器 (Proxy) 才是 Server。
中介 (Intermediaries) 示意圖
 
Origin Server,比 Server 一詞更明確地指向:對特定目標資源具有權威、能產生其回應的服務者;它不必是請求鏈中最後一個網路節點。
 
同樣的:

不該假定 Origin Server 是個大型公共網站

 
可能有 可配置網路元件 (configurable networking components)、
視訊平台、機器人 (bot) 及其他特定服務…。
 
 

作者: 鄭中勝
喜愛音樂,但不知為何總在打程式 ? 期許能重新審視、整理自身所學,幫助有需要的人。

發表迴響