🕸️ 第五章 不同于Web的系统
📄 一句话概括

Web 服务器、邮件服务器、文件服务器——三台机器说的话不一样,干的事也不一样;而文件服务器吃的是【大块】流量。

📝 本节和前面几节的关系

教材 5-7 讲服务器功能的区别,并列关键词是【文件服务器】和【Samba】。这一节是整章的收尾:把前面几节提到的服务器摆在一起看。

一、三种服务器,摆在一起看

同样是【服务器】,它们的区别不在硬件,而在对外说什么话、客户端拿什么连:

Web 服务器:说 HTTP / HTTPS,客户端是浏览器,端口 80 / 443。

邮件服务器:说 SMTP / POP3 / IMAP,客户端是邮件软件,端口 25、465、587、110、995、143、993。

文件服务器:说 SMB / CIFS 或 NFS,客户端是资源管理器、Finder,端口 445、2049。

这就是第 1 章说的【服务器也是一种程序】的具体样子——装什么服务、开什么端口,它就是什么服务器。同一台机器完全可以同时干三件事。

二、Samba:让 Linux 说 Windows 的话

SMB(服务器消息块)是 Windows 的文件共享协议。 那 Linux 想跟 Windows 共享文件夹怎么办?跑一个 Samba。

Samba 是一套让 Linux 和 Unix 系统说 SMB 的软件。Windows 客户端连上来,会以为自己连的是一台 Windows 服务器。

它开的端口:445(TCP)是现代 SMB 的主力,Windows 与 Linux 都走这一条;139(TCP)是老 NetBIOS 会话,只有老客户端还需要;137 和 138(UDP)是老 NetBIOS 的名称登记与网上邻居浏览。

对 Windows 客户端的原生支持,让 Samba 在混合云文件共享里仍占约 45%(据 2026 年 IDC《企业存储架构趋势报告》)。这也是 Samba 存在的全部理由:不是它好,是它能让两种系统说同一句话。

三、文件服务器吃的是【大块】

三种服务器里,文件服务器的流量特征最特别。算一笔账就清楚了:1000 人的公司,每人每天读 30 次、写 10 次。

读 = 1000 × 30 = 30000 次/天,每次约 200 KB → 6 GB/天。写 = 1000 × 10 = 10000 次/天,每次约 500 KB → 5 GB/天。合计 11 GB/天,按 250 个工作日算约 2.75 TB/年。

同样这 1000 人用 OA(一个 Web 系统),每人每天 50 次请求、每次 20 KB,只有 1 GB/天。

差了 11 倍。 原因很简单:Web 系统一次请求传几 KB 的 JSON 或 HTML,文件服务器一次打开传几百 KB 到几 MB 的文件。

这条差别有很实际的后果:文件服务器最怕堵在跨城专线上——它不是慢在服务器,是慢在路上。这也是为什么很多公司宁可给每个办公点放一台本地文件服务器,也不愿意让大家走专线访问总部。

四、SMB 是内网横向移动的头号通道

最后一条要单独说,因为它和上一节的内网话题直接相接:SMB 是攻击者在内网横向移动时最常用的协议。

原因不复杂:SMB 接受身份验证请求,并且会返回可以区分的错误信息——攻击者可以用它来试密码、做凭据中继。历史上的几次著名蠕虫(比如利用 MS17-010 的那个)就是靠 SMB 传播的。

上一节那组数据里:78% 的服务器可以经 SMB 或 WinRM 到达。

2026 年 9 月 22 日的一次公网扫描,查到的结果是:暴露在互联网上的 445 端口有 1771 个,NFS 的 2049 端口 110 个,rsync 的 873 端口 106 个。

这几个端口都不该出现在公网上。 如果必须跨网络边界访问,至少要:强制 SMB 签名(防中继)、彻底禁用已经退役的 SMBv1。

五、动手 Demo:文件服务器与 Web 系统的流量对比

把这一节最核心的那个 11 倍算出来:同一批人,用文件服务器和用 Web 系统,流量差多少。

people = 1000
read, write = people * 30, people * 10
read_kb, write_kb = 200, 500
total_kb = read * read_kb + write * write_kb

print("  读 = %d 次/天,写 = %d 次/天" % (read, write))
print("  文件服务器 = (%d × %d + %d × %d) KB = %.0f GB/天"
      % (read, read_kb, write, write_kb, total_kb / 1000 / 1000))
print("  按 250 个工作日算 ≈ %.2f TB/年"
      % (total_kb * 250 / 1000 / 1000 / 1000))

oa_kb = people * 50 * 20
print("  同样的 1000 人用 OA = %.1f GB/天" % (oa_kb / 1000 / 1000))
print("  倍数 = %.0f 倍" % (total_kb / oa_kb))
print("  对 Windows 客户端原生支持,让 Samba 在混合云里占约 45%%")

实跑输出:

--------------------------------------------------------------------
D7 文件服务器:最老也最忙的那台
--------------------------------------------------------------------
  教材 5-7 讲服务器功能的区别,并列关键词是【文件服务器、Samba】。三种摆一起看:

  服务器        客户端拿什么连            说什么协议                端口
  ------------------------------------------------------------------------------------
  Web 服务器    浏览器                    HTTP / HTTPS              80 / 443
  邮件服务器    邮件客户端                SMTP / POP3 / IMAP        25、110、143 等
  文件服务器    资源管理器、Finder        SMB / CIFS、NFS           445、2049

  Samba 是让 Linux 和 Unix 说 SMB 的一套软件——**Windows 客户端会以为
  自己连的是一台 Windows 服务器**。它开的端口:

  端口        协议        用途
  --------------------------------------------------------------------------------
  445         TCP         现代 SMB 全靠它,Windows 与 Linux 都走这一条
  139         TCP         老 NetBIOS 会话,只有老客户端还需要
  137 / 138   UDP         老 NetBIOS 的名称登记与网上邻居浏览

  对 Windows 客户端的原生支持,让 Samba 在混合云文件共享里仍占约 45%
  (据 2026 年 IDC《企业存储架构趋势报告》)。

  算一笔文件服务器的流量账。1000 人的公司,每人每天读 30 次、写 10 次:

  ----------------------------------------------------------------------------------------
    读 = 1000 × 30 = 30000 次/天,每次约 200 KB → 6 GB/天
    写 = 1000 × 10 = 10000 次/天,每次约 500 KB → 5 GB/天
    合计 11 GB/天,按 250 个工作日算 ≈ 2.75 TB/年
  ----------------------------------------------------------------------------------------

  同样这 1000 人用 OA(一个 Web 系统),每人每天 50 次请求、每次 20 KB:

  ----------------------------------------------------------------------------------------
    1000 × 50 × 20 KB = 1 GB/天
    11 ÷ 1 = 11 倍
  ----------------------------------------------------------------------------------------

  结论:**文件服务器吃的是【大块】,Web 系统吃的是【小块】。**
  同样一批人,文件服务器的流量是 Web 系统的 11 倍。
  这也是为什么文件服务器最怕堵在跨城专线上——它不是慢在服务器,是慢在路上。

  最后一个提醒:SMB 是内网横向移动的头号通道。
  2026 年 9 月的一次公网扫描里,暴露在互联网上的 445 端口有 1771 个,
  NFS 的 2049 端口 110 个。**这几个端口都不该出现在公网上。**

看中间那行:11 GB/天、2.75 TB/年。这个量级的流量,放在一个楼里完全不是问题(千兆内网跑满只要几分钟),但要是压在一条跨城专线上,就变成了瓶颈。 再看最后两行:11 倍。这不是文件服务器【效率低】,而是它本来就承担着不同形状的活——Web 系统传的是【数据】,文件服务器传的是【文件】。 记住这个区别,就能听懂运维常说的一句话:文件服务器不是性能问题,是位置问题。 放对地方它很快,放错地方它永远慢。

30 秒实验

  1. 打开资源管理器或 Finder 连一次公司共享盘,看它用的是不是 \服务器名\共享名 这种写法。
  2. 在电脑上搜索一下 samba 或 smb,看系统里有没有相关服务。
  3. 打开一个网页和打开一个大文件,各看一次流量差多少(任务管理器或活动监视器里就能看到)。

常见误区

  1. 错误:服务器是按硬件分的。——纠正:是按【说哪种协议】分的。同一台机器装上 Apache 就是 Web 服务器,装上 Samba 就是文件服务器。区别在软件和端口,不在机箱。
  2. 错误:Samba 是 Linux 版的 SMB。——纠正:SMB 是协议,Samba 是实现。协议属于微软,Samba 是开源社区写出来让 Linux 能说这套协议的程序。所以 Windows 客户端接上去【以为】对方是 Windows。
  3. 错误:文件服务器只要带宽够就行。——纠正:它的瓶颈常常是位置而不是带宽。一次打开就是几百 KB 到几 MB,跨城访问时物理距离带来的延迟无法靠加带宽解决。
自测三问(点开对答案) 1. Web 服务器、邮件服务器、文件服务器,区别到底在哪? —— **在协议和端口上**:Web 服务器说 HTTP/HTTPS(80、443),邮件服务器说 SMTP/POP3/IMAP(25、110、143 等),文件服务器说 SMB/CIFS、NFS(445、2049)。**同一台机器装上不同的服务,就是不同的服务器。** 2. Samba 是干什么用的? —— **让 Linux 和 Unix 系统说 SMB 协议**,从而和 Windows 客户端共享文件与打印机。**Windows 客户端连上去会以为对方是 Windows 服务器。** 它主要走 TCP 445,老环境还需要 139 和 137/138。 3. 为什么说文件服务器吃的是【大块】流量? —— 同样 1000 人的规模,**文件服务器约 11 GB/天,Web 系统只有约 1 GB/天,差了 11 倍**。因为 Web 一次请求传几 KB,文件共享一次打开传几百 KB 到几 MB。**这也决定了它最怕跨城专线——瓶颈在路上,不在服务器。**

相关笔记