服务器买回来了,它得跟自己"管着"的那些客户端说话。这一篇回答三件事:① 怎么找到对方——IP 决定最终给谁、MAC 决定这一段谁送;② 怎么把数据完整送到——TCP 保证一字不差、UDP 换取速度;③ 路上谁在转——路由器只管转发、不管内容,跟服务器的用途完全不同。
- IP 地址与 MAC 地址(服务器如何访问其从属计算机)
- TCP/IP 与 UDP(服务器与其从属计算机之间的数据传递)
- 路由器(服务器与路由器在用途上的不同)
1. 先明确"从属计算机"是谁
教材用"从属计算机"这个词,指的是连到服务器上、由服务器提供服务的那些机器——也就是第一章 1.1-1.3 说的客户端:同事的电脑、前台的打印机、车间里的扫码枪、路上的传感器,甚至没有屏幕的摄像头。
服务器和它们的关系,有个容易被忽略的不对称:
| 客户端 | 服务器 | |
|---|---|---|
| 谁先开口 | 客户端先请求 | 应答 |
| 地址怎么来 | 通常自动获取(DHCP) | 必须是固定的 |
| 数量 | 很多 | 少(可能只有一台) |
| 谁找谁 | 客户端要能找到服务器 | 服务器只需能回话 |
所以"服务器如何访问其从属计算机"这句话,落到实际就是两个问题:请求进来时,服务器怎么知道是谁发的?响应回去时,怎么保证送得到?
这两个问题,网络课分别叫"IP 地址"和"MAC 地址"。
2. 两个地址,各管一段路
IP 地址:逻辑地址,回答"最终给谁"
- 可以重新分配(换机房、换网段都会变);
- 跨网络有效,路由器靠它决定走哪条路;
- 网络课 3.8「通信的对象(IP 地址)」、3.10「IP 地址的结构」讲的就是它。
MAC 地址:物理地址,回答"这一跳交给谁"
- 出厂烧在网卡上,正常情况下一辈子不变;
- 只在局域网内有效——不同网段之间没法用 MAC 寻址,因为它没有层级结构(网络课 5.4「接口是哪个(MAC 地址)」专门讲过这一点);
- 交换机靠它决定往哪个口送。
两个一起用:一次投递写两个地址
服务器要发一条数据给某台客户端,实际做的事是:
- 看目的 IP 和自己在不在同一个网段(用子网掩码做"与运算",网络课 3.11 的老知识);
- 同网段:直接查 ARP 表拿到对方 MAC,把数据帧投到局域网里;
- 不同网段:交给默认网关,由它继续往下传。
IP 决定"给谁",MAC 决定"这一段谁送"。 IP 从头到尾不变,MAC 每过一个路由器就换一次(网络课 6.1 讲过的"IP 不变、MAC 每跳换")。
3. 服务器凭什么"知道"客户端是谁
一个请求打到服务器上,服务器能看到的"来客信息"是:
- 源 IP 地址——谁发来的
- 源端口号——是他机器上的哪个程序发来的
- 目的端口号——他找的是我这儿哪个服务(网络课 3.17)
服务器本身并不"主动扫描"客户端,它是靠请求里自带的地址回话的。这也顺手解释了两件事:
- 为什么服务器要维护"会话":HTTP 本身不记人,所以要靠 Cookie/Session 记住"这条请求和上一条是同一个人"(网络课 4.7);
- 为什么连接会超时断开:客户端关掉浏览器不再说话,服务器只能靠超时把这条连接收掉。
4. TCP 与 UDP:服务器同时握着两套协议
服务器和客户端之间的数据传递,用的是一对性格相反的协议:
| TCP(网络课 3.18) | UDP(网络课 3.20) | |
|---|---|---|
| 要不要先握手 | 要(先确认双方都在) | 不要,直接发 |
| 丢包怎么办 | 重传 | 不管 |
| 顺序 | 保证不乱 | 不保证 |
| 开销 | 大 | 极小 |
| 适合 | 一字不能错的数据 | 实时、可容忍丢失的数据 |
| 典型 | 网页、文件传输、数据库、邮件 | 直播、语音、DNS 查询、心跳包 |
关键认知:一台服务器上,这两种协议是同时开着的。
- DNS 服务监听 UDP 53——一问一答的小请求,握手太浪费;
- Web 服务监听 TCP 443——网页里丢一个字节都要重来;
- 数据库监听 TCP 3306——账目数据不能乱序。
所以"服务器用 TCP 还是 UDP"这个问法本身就不对,正确的问法是"这个服务该用哪个"。
怎么选:看"丢一点会怎样"
| 丢一点会怎样 | 选谁 | 例子 |
|---|---|---|
| 完全不能接受 | TCP | 转账、图纸文件、配置下发 |
| 能接受(画面糊一下、声音卡一下) | UDP | 视频会议、直播、语音 |
| 一问一答、丢了就再问一次 | UDP | DNS 查询 |
| 需要自己的确认逻辑 | UDP + 应用层自补 | 网络游戏状态同步 |
它是把"可靠性"的决定权交还给应用。实时画面里,一个迟到的包不如直接丢掉——重传反而让画面更卡。这是取舍,不是降级。
5. 路由器:同住机房,干的是完全不同的活
这一节的标题是"服务器与路由器在用途上的不同"——因为外行常把这俩都叫"机房里的机器"。
| 服务器 | 路由器 | |
|---|---|---|
| 干什么 | 提供业务(处理请求、给结果) | 转发数据(只管送到) |
| 在哪一层工作 | 应用层(看得到内容) | 网络层(只看地址) |
| 对数据的态度 | 拆开看、要理解 | 不拆开、不改内容 |
| 关心什么 | 请求处理得对不对 | 路走不走得通 |
| 谁访问它 | 客户端主动来访问 | 上下游互相指路 |
| 一个系统里几台 | 可能几十台 | 通常一两台 |
用一句话区分:路由器是"邮局",服务器是"办事窗口"。 邮局不关心你寄的是合同还是照片,它只保证送到;办事窗口才关心你要办什么。
但它们也会合体
- 三层交换机:同时具备路由器和二层交换机的功能(网络课 6.12);
- 防火墙 / 负载均衡器:本质是"跑着路由和转发功能的专用服务器"。
所以准确的说法是:角色可以合并到一台设备上,但"转发"和"提供服务"是两件不同的事,分析问题时必须分开看。
服务器视角的一条硬规则
服务器必须配好默认网关(网络课 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 段和第 2 段是两套完全不同的地址——一个是逻辑的(IP)、一个是物理的(MAC),这就是第 2 节说的"一次投递写两个地址"。
- 第 3、4 段你会同时看到 TCP 和 UDP 两种监听——你的电脑就是"两种协议同时开着"的活样本。
- 把第 3 段里某个 PID 记下来,跑下面这句看它是谁:
# 把 1234 换成上面看到的 OwningProcess
Get-Process -Id 1234 | Select-Object Id, ProcessName, Path
你会认出来:它可能是系统的共享组件(如 svchost,管着 445 文件共享、135 RPC),也可能是你装的某个软件的服务组件(如数据库、下载工具)。这些"等着别人来连"的进程,就是运行在你电脑上的服务器——第一章 1.1 的 Demo01 到这里有了更完整的视角。
- 再看第 1 段最后那一列默认网关:它是你这台电脑"出内网"的唯一出口,和网络课 6.18 讲的 PC 路由表是同一件事。
8. 30 秒实验
- 实验 1(ARP 表):命令行敲
arp -a——你会看到一串"IP ↔ MAC"的对照表,这就是服务器/电脑把 IP 翻译成 MAC 的现场(网络课 3.16、6.4)。 - 实验 2(谁是服务器):打开路由器管理后台,看"已连接设备"列表——路由器本身就是一台服务器,它的客户端是你家里所有的设备。
- 实验 3(两种协议都在跑):打开一个正在直播的页面(视频用 UDP 或基于 UDP 的协议),再开一个普通网页(TCP),同时在任务管理器 → 性能 → 网络里看它们的行为差异。
9. 常见误区
- "IP 地址和 MAC 地址是一回事,只是叫法不同"——一个是逻辑地址(可变、有层级、能跨网络路由),一个是物理地址(固定、扁平、只在局域网内有效)。功能互补,不能互换。
- "服务器不需要配网关,反正客户端会主动来连"——来连是可以的,但回话回不出去(尤其客户端在别的网段时)。网关是服务器的"出口"。
- "UDP 是简陋版 TCP"——它是刻意做成这样的:省掉握手和确认,把可靠性交给应用自己决定。实时业务要的正是这个。
- "路由器就是功能更强的交换机"——看的东西不同:交换机看 MAC(同一网络内转发),路由器看 IP(跨网络转发)。三层交换机才是两者的合体(网络课 6.12)。
- "服务器的 IP 设成自动获取省事"——省下的一分钟,迟早会在某个深夜以"全公司连不上"的形式还回来。服务器地址必须固定。
- "MAC 地址全球唯一,用它寻址最准"——唯一不代表可用:它没有层级结构,路由器无法根据它判断"往哪个方向走",所以跨网络的寻址只能靠 IP。
10. 折叠自测题
IP 回答"最终交给谁"(逻辑地址、可重新分配、跨网络有效、路由器依据它选路);MAC 回答"这一跳交给谁"(物理地址、烧在网卡、只在局域网内有效、交换机依据它转发)。一次投递要写两个,是因为 IP 只解决了"最终目的地",而每一段路实际送到哪块网卡,必须靠 MAC;跨网络时 IP 不变、MAC 每跳换一次。
服务器从请求里能直接看到源 IP + 源端口 + 目的端口,据此回话。但 HTTP 本身不记人,两次请求之间服务器无法自动判断"是不是同一个人",所以要用 Cookie/Session 来维持会话状态。
看"丢一点会怎样":完全不能接受 → TCP(网页、文件、数据库、转账);能容忍(画面糊一下、声音卡一下)→ UDP(视频会议、直播、语音);一问一答的小请求 → UDP(DNS 查询,省掉握手时间)。TCP 监听 443、UDP 监听 53 常常同时出现在同一台服务器上。
服务器提供业务,工作在应用层,要拆开数据看内容、关心处理得对不对;路由器转发数据,工作在网络层,只看地址不改内容、只关心路通不通。比喻:服务器是办事窗口,路由器是邮局。两者会合体——三层交换机(网络课 6.12)、防火墙、负载均衡器都是"转发功能跑在专用设备/服务器上",但分析问题时要分开看这两件事。
11. 下一步学什么
- ☑ 3.7-3.11 虚拟化与周边设备(VDI、扁平网络、磁盘) —— 虚拟化与周边设备(VDI、扁平网络、磁盘) 点此继续:一台机器怎么变成很多台?桌面怎么搬进机房?服务器用什么磁盘?
相关笔记
-
虚拟化与周边设备(VDI、扁平网络、磁盘) —— 一台机器怎么变成很多台,磁盘怎么不怕坏
-
建系统之前的三笔账(系统、性能、投资) —— 上一篇算清了系统与容量,这一篇它开始说话
- 网络 3.16 将 IP 地址与 MAC 地址对应(ARP) —— 两个地址之间的翻译官
- 网络 3.18 对应用程序的数据进行可靠传输(TCP) —— 可靠性是怎么做出来的
- 网络 3.20 只对传输给应用程序的数据进行分发(UDP) —— "尽力而为"的正名篇
- 网络 6.1 将数据传输到远程网络(路由) —— IP 不变、MAC 每跳换的出处
- 网络 6.18 PC 中也存在路由表(默认网关) —— 服务器"出口"的那一行配置
- 网络 5.4 接口是哪个(MAC 地址) —— MAC 地址为什么不能用来跨网寻址
- 网络 6.12 三层交换机 —— "服务器与路由器合体"的现实形态