1.1 · 客户-服務模型
目標: 解釋客户與服務器在網絡上如何協作。
核心思想
網絡應用裏兩個角色:
| 角色 | 職責 |
|---|---|
| 客户 Client | 發起請求;通常驅動用户介面 |
| 服務器 Server | 監聽請求;提供資源或服務 |
┌──────────┐ 請求 ┌──────────┐
│ Client │ ─────────▶ │ Server │
│ (瀏覽器) │ │ (web 應用)│
│ │ ◀───────── │ │
└──────────┘ 響應 └──────────┘1
2
3
4
5
2
3
4
5
具體例子
| 服務 | 客户 | 服務器 |
|---|---|---|
| 瀏覽網頁 | Chrome / Firefox | Apache / Nginx |
| 電郵 | Outlook | SMTP / IMAP 服務器 |
| 資料庫 | PHP 應用 | MySQL 服務器 |
| 遊戲 | 玩家 PC | 遊戲服務器 |
| 文件共享 | 文件管理器 | NAS / 文件服務器 |
模型性質
- 松耦合 —— 服務器不知道哪個客户接下來會連。
- 多對一 —— 多客户能共享一個服務器。
- 無狀態協定(如 HTTP) —— 服務器不必跨請求記住客户。
- 擴展 —— 在負載均衡後加更多服務器。
無連接 vs 面向連接
- HTTP 用 TCP(面向連接、可靠)。
- DNS 用 UDP(無連接、快)。
實例 · 瀏覽網頁
- 客户(瀏覽器)經 DNS 解析域名 → IP 地址。
- 客户開 TCP 連接到服務器端口(80 或 443)。
- 客户發
GET /index.html HTTP/1.1。 - 服務器回
200 OK+ HTML 內容。 - 瀏覽器解析 HTML;每個
<img>、<link>、<script>都再發請求。 - 瀏覽器渲染頁面。
學生常見錯誤
- 把「客户」與「用户」當同詞 —— 客户是軟件。
- 以為服務器物理上不同於客户 —— 任意電腦都可扮演任一角色。
- 忘了單台服務器能在不同端口上跑多個服務。
考試式題目
題(4 分): 解釋客户-服務模型並給兩個現實例子。
參考答案:
客户-服務模型中,客户為某服務發起請求,服務器等待傳入請求並以請求的資源響應。兩者經網絡用協定(如 HTTP)通訊。模型把用户設備與集中資源解耦,允許多客户共享一服務器。
例子:
- 網頁瀏覽:瀏覽器(客户)經 HTTPS 向網頁服務器(Apache/Nginx)請求頁面。
- 電郵:郵件客户(Outlook / Apple Mail)連 SMTP 服務器發信、IMAP 服務器收信。
關鍵要點
- 客户請求;服務器響應。
- 用於網頁、郵件、遊戲、資料庫、文件共享。
➡️ 下一節:1.2 HTTP 請求 / 響應