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 请求 / 响应