🖥️ 第三章 服务器是做什么用的
📄 一句话概括

服务器买回来了,它得跟自己"管着"的那些客户端说话。这一篇回答三件事:① 怎么找到对方——IP 决定最终给谁、MAC 决定这一段谁送;② 怎么把数据完整送到——TCP 保证一字不差、UDP 换取速度;③ 路上谁在转——路由器只管转发、不管内容,跟服务器的用途完全不同。

📝 本篇覆盖教材三小节
  • IP 地址与 MAC 地址(服务器如何访问其从属计算机)
  • TCP/IP 与 UDP(服务器与其从属计算机之间的数据传递)
  • 路由器(服务器与路由器在用途上的不同)

1. 先明确"从属计算机"是谁

教材用"从属计算机"这个词,指的是连到服务器上、由服务器提供服务的那些机器——也就是第一章 1.1-1.3 说的客户端:同事的电脑、前台的打印机、车间里的扫码枪、路上的传感器,甚至没有屏幕的摄像头。

服务器和它们的关系,有个容易被忽略的不对称:

客户端 服务器
谁先开口 客户端先请求 应答
地址怎么来 通常自动获取(DHCP) 必须是固定的
数量 很多 少(可能只有一台)
谁找谁 客户端要能找到服务器 服务器只需能回话

所以"服务器如何访问其从属计算机"这句话,落到实际就是两个问题:请求进来时,服务器怎么知道是谁发的?响应回去时,怎么保证送得到?

这两个问题,网络课分别叫"IP 地址"和"MAC 地址"。

2. 两个地址,各管一段路

IP 地址:逻辑地址,回答"最终给谁"

MAC 地址:物理地址,回答"这一跳交给谁"

两个一起用:一次投递写两个地址

服务器要发一条数据给某台客户端,实际做的事是:

  1. 看目的 IP 和自己在不在同一个网段(用子网掩码做"与运算",网络课 3.11 的老知识);
  2. 同网段:直接查 ARP 表拿到对方 MAC,把数据帧投到局域网里;
  3. 不同网段:交给默认网关,由它继续往下传。
💡 一句话记牢

IP 决定"给谁",MAC 决定"这一段谁送"。 IP 从头到尾不变,MAC 每过一个路由器就换一次(网络课 6.1 讲过的"IP 不变、MAC 每跳换")。

3. 服务器凭什么"知道"客户端是谁

一个请求打到服务器上,服务器能看到的"来客信息"是:

服务器本身并不"主动扫描"客户端,它是靠请求里自带的地址回话的。这也顺手解释了两件事:

  1. 为什么服务器要维护"会话":HTTP 本身不记人,所以要靠 Cookie/Session 记住"这条请求和上一条是同一个人"(网络课 4.7);
  2. 为什么连接会超时断开:客户端关掉浏览器不再说话,服务器只能靠超时把这条连接收掉。

4. TCP 与 UDP:服务器同时握着两套协议

服务器和客户端之间的数据传递,用的是一对性格相反的协议:

TCP(网络课 3.18) UDP(网络课 3.20)
要不要先握手 要(先确认双方都在) 不要,直接发
丢包怎么办 重传 不管
顺序 保证不乱 不保证
开销 大 极小
适合 一字不能错的数据 实时、可容忍丢失的数据
典型 网页、文件传输、数据库、邮件 直播、语音、DNS 查询、心跳包

关键认知:一台服务器上,这两种协议是同时开着的。

所以"服务器用 TCP 还是 UDP"这个问法本身就不对,正确的问法是"这个服务该用哪个"。

怎么选:看"丢一点会怎样"

丢一点会怎样 选谁 例子
完全不能接受 TCP 转账、图纸文件、配置下发
能接受(画面糊一下、声音卡一下) UDP 视频会议、直播、语音
一问一答、丢了就再问一次 UDP DNS 查询
需要自己的确认逻辑 UDP + 应用层自补 网络游戏状态同步
💡 UDP 不是"低配版 TCP"

它是把"可靠性"的决定权交还给应用。实时画面里,一个迟到的包不如直接丢掉——重传反而让画面更卡。这是取舍,不是降级。

5. 路由器:同住机房,干的是完全不同的活

这一节的标题是"服务器与路由器在用途上的不同"——因为外行常把这俩都叫"机房里的机器"。

服务器 路由器
干什么 提供业务(处理请求、给结果) 转发数据(只管送到)
在哪一层工作 应用层(看得到内容) 网络层(只看地址)
对数据的态度 拆开看、要理解 不拆开、不改内容
关心什么 请求处理得对不对 路走不走得通
谁访问它 客户端主动来访问 上下游互相指路
一个系统里几台 可能几十台 通常一两台

用一句话区分:路由器是"邮局",服务器是"办事窗口"。 邮局不关心你寄的是合同还是照片,它只保证送到;办事窗口才关心你要办什么。

但它们也会合体

所以准确的说法是:角色可以合并到一台设备上,但"转发"和"提供服务"是两件不同的事,分析问题时必须分开看。

服务器视角的一条硬规则

服务器必须配好默认网关(网络课 6.18):有了它,服务器才能把响应发给不在同一网段的客户端;没有它,服务器只能在自己那一小片局域网里打转。

6. 一条实践差异:服务器用固定 IP,客户端用自动分配

客户端 服务器
地址来源 自动获取(DHCP,网络课 3.23) 手工固定(或在 DHCP 里做地址保留)
能变吗 每次开机可能不同 绝不能变
为什么 变了也没人找它 一变,所有客户端就找不到它了
域名怎么解析 DNS 自动查 在 DNS 里登记为固定记录(网络课 3.21)
⚠️ 这是新手最容易踩的坑之一

把服务器设成"自动获取 IP",一开始能跑,某天重启后地址变了,全公司的客户端集体打不开——故障现场看起来像"服务器坏了",其实只是它换了个门牌号。

7. 动手时间(Demo08):看清你这台电脑的两个地址、两种协议、一个网关

把下面几段贴进 PowerShell,逐段跑:

# 1. 一次看清:IP、子网掩码、默认网关
Get-NetIPConfiguration | Select-Object InterfaceAlias, IPv4Address, IPv4DefaultGateway

# 2. 网卡与 MAC 地址(物理地址)——注意它和上面 IP 完全不同
Get-NetAdapter | Select-Object Name, MacAddress, LinkSpeed, Status

# 3. 本机在"监听"的端口:TCP 侧(等着别人来连的口)
Get-NetTCPConnection -State Listen |
    Sort-Object LocalPort |
    Select-Object LocalAddress, LocalPort, OwningProcess -First 15

# 4. 本机在"监听"的端口:UDP 侧(不握手、直接收的口)
Get-NetUDPEndpoint | Sort-Object LocalPort | Select-Object LocalAddress, LocalPort -First 15

观察点:

  1. 第 1 段和第 2 段是两套完全不同的地址——一个是逻辑的(IP)、一个是物理的(MAC),这就是第 2 节说的"一次投递写两个地址"。
  2. 第 3、4 段你会同时看到 TCP 和 UDP 两种监听——你的电脑就是"两种协议同时开着"的活样本。
  3. 把第 3 段里某个 PID 记下来,跑下面这句看它是谁:
# 把 1234 换成上面看到的 OwningProcess
Get-Process -Id 1234 | Select-Object Id, ProcessName, Path

你会认出来:它可能是系统的共享组件(如 svchost,管着 445 文件共享、135 RPC),也可能是你装的某个软件的服务组件(如数据库、下载工具)。这些"等着别人来连"的进程,就是运行在你电脑上的服务器——第一章 1.1 的 Demo01 到这里有了更完整的视角。

  1. 再看第 1 段最后那一列默认网关:它是你这台电脑"出内网"的唯一出口,和网络课 6.18 讲的 PC 路由表是同一件事。

8. 30 秒实验

  1. 实验 1(ARP 表):命令行敲 arp -a——你会看到一串"IP ↔ MAC"的对照表,这就是服务器/电脑把 IP 翻译成 MAC 的现场(网络课 3.16、6.4)。
  2. 实验 2(谁是服务器):打开路由器管理后台,看"已连接设备"列表——路由器本身就是一台服务器,它的客户端是你家里所有的设备。
  3. 实验 3(两种协议都在跑):打开一个正在直播的页面(视频用 UDP 或基于 UDP 的协议),再开一个普通网页(TCP),同时在任务管理器 → 性能 → 网络里看它们的行为差异。

9. 常见误区

  1. "IP 地址和 MAC 地址是一回事,只是叫法不同"——一个是逻辑地址(可变、有层级、能跨网络路由),一个是物理地址(固定、扁平、只在局域网内有效)。功能互补,不能互换。
  2. "服务器不需要配网关,反正客户端会主动来连"——来连是可以的,但回话回不出去(尤其客户端在别的网段时)。网关是服务器的"出口"。
  3. "UDP 是简陋版 TCP"——它是刻意做成这样的:省掉握手和确认,把可靠性交给应用自己决定。实时业务要的正是这个。
  4. "路由器就是功能更强的交换机"——看的东西不同:交换机看 MAC(同一网络内转发),路由器看 IP(跨网络转发)。三层交换机才是两者的合体(网络课 6.12)。
  5. "服务器的 IP 设成自动获取省事"——省下的一分钟,迟早会在某个深夜以"全公司连不上"的形式还回来。服务器地址必须固定。
  6. "MAC 地址全球唯一,用它寻址最准"——唯一不代表可用:它没有层级结构,路由器无法根据它判断"往哪个方向走",所以跨网络的寻址只能靠 IP。

10. 折叠自测题

❓ Q1:IP 地址和 MAC 地址各自回答什么问题?为什么一次投递要写两个?

IP 回答"最终交给谁"(逻辑地址、可重新分配、跨网络有效、路由器依据它选路);MAC 回答"这一跳交给谁"(物理地址、烧在网卡、只在局域网内有效、交换机依据它转发)。一次投递要写两个,是因为 IP 只解决了"最终目的地",而每一段路实际送到哪块网卡,必须靠 MAC;跨网络时 IP 不变、MAC 每跳换一次。

❓ Q2:服务器怎么知道请求是谁发来的?为什么 HTTP 还要靠 Cookie/Session?

服务器从请求里能直接看到源 IP + 源端口 + 目的端口,据此回话。但 HTTP 本身不记人,两次请求之间服务器无法自动判断"是不是同一个人",所以要用 Cookie/Session 来维持会话状态。

❓ Q3:TCP 和 UDP 怎么选?举两个各用它们的服务。

看"丢一点会怎样":完全不能接受 → TCP(网页、文件、数据库、转账);能容忍(画面糊一下、声音卡一下)→ UDP(视频会议、直播、语音);一问一答的小请求 → UDP(DNS 查询,省掉握手时间)。TCP 监听 443、UDP 监听 53 常常同时出现在同一台服务器上。

❓ Q4:服务器和路由器在用途上的根本区别是什么?两者会合体吗?

服务器提供业务,工作在应用层,要拆开数据看内容、关心处理得对不对;路由器转发数据,工作在网络层,只看地址不改内容、只关心路通不通。比喻:服务器是办事窗口,路由器是邮局。两者会合体——三层交换机(网络课 6.12)、防火墙、负载均衡器都是"转发功能跑在专用设备/服务器上",但分析问题时要分开看这两件事。

11. 下一步学什么

相关笔记