02-网络的抽象层

📅 2026/7/17 13:46:17
02-网络的抽象层
网络设计第二问抽象——从连起来到让你觉得没连过网络设计从头到尾就是一件事把两个物理上分开的程序通过一串中间设备连接起来然后搭建足够的抽象层让它们忽略中间一切的存在。本篇讲的就是这一层层抽象是怎么搭建起来的。文章目录网络设计第二问抽象——从连起来到让你觉得没连过一、抽象的起点一根线变成一层二、一个中间节点的抽象——交换机三、跨网络——IP 与路由四、端到端——TCP五、应用层最远的一层六、抽象层的完整堆叠七、你的系统设计要回答的问题一、抽象的起点一根线变成一层最初连接两台电脑——一根 RS-232 电缆双方按同一波特率发送字节。程序员写代码——指定速率、检验位、开始位。电缆的一个异常位就可能导致服务崩溃。这不好——为什么不把这根电缆的复杂性包在一层后面于是串口变成了物理层——电缆插上就行。上面加一层帧层——把字节分成帧带校验。再往上是 IP、TCP、应用协议。每往上一层前一层的线缆、信号、帧的错误都被封装在它自己那一层内部——不再向上暴露。每一层虚拟化它下一层的细节。网络中的抽象和操作系统中把磁盘虚拟化为文件的抽象是同一种思路。当你写socket.send(data)时你不在想 10BASE-T 的曼彻斯特编码——因为抽象层已经替你遮掉了。二、一个中间节点的抽象——交换机早期局域网是一根同轴电缆所有设备共线。一台发数据其他全监听。冲突——噪音——全都重发。这个物理现实让程序员头疼没有人愿意为一台设备能连在同一根线上而花脑力去管理碰撞。以太网加了交换机——把共线拓扑变成星型拓扑。交换机内部有一张 MAC 表哪个端口连哪个 MAC数据到达交换机后只向目标端口转发。没有广播没有冲突。现在你在一个交换机端口上接一台设备——你不需要知道这个网段内其他设备的位置、它们的 MAC、它们的布线路线。交换机替你管了物理层和帧的转发。你送它帧它送到正确的端口。这就是交换机的抽象——把一张需要手动打网卡的网变成随便插的网。三、跨网络——IP 与路由交换机只在一个网段内工作。不同的网段之间需要路由器——它抽象的是拓扑。IP 出现的意义给每个网段一个逻辑编号而不是用 MAC 表串联。你的数据包出发时只需要填目的 IP。路由器的工作是查路由表、转发到下一跳——你不用知道所有中间设备。IP 协议本身不提供可靠送达那是 TCP 的事。IP 提供的是向上层交一个简单的全球寻址系统——不管下面跑了多少条光纤、多少个 AS、多少个运营商——你发一个 IP 包它在毫秒级内在这个巨型网中被接力一步步送到目的地。四、端到端——TCPIP 是尽力传送——它不保证包一定到。TCP 在 IP 上建一个可靠的面。你现在从这台设备向另一台的某个端口发一个 byte——TCP 保证它完整到达、顺序正确、没有重复。你的程序不需要知道下面中断了多少次、重传了多少条。TCP 的抽象是可靠有序的字节流。TCP 替你做了超时重传、滑动窗口流量控制、拥塞控制慢启动/快重传。但这还不够。五、应用层最远的一层网络上的抽象的最高一层是你写的业务——WebSocket 或 HTTP。HTTP 不再让你操心连接管理。一个GET /发送出去——你不需要知道下面经历了 3 次握手、8 次数据包交换、可能在某一条路由器上有过拥塞、在某一条交换机上有 CRC 重传——或者你的 IP 包被分片——或者你的 TCP segment 因为乱序被暂存排序。HTTP——就是请求-响应——干净的、适合人类阅读的协议。构建它的人知道前面几层的所有细节——但他们把这些细节吞噬了。六、抽象层的完整堆叠应用层 (HTTP/WebSocket/SMTP) → 虚拟化 TCP不需要管连接和包序号 传输层 (TCP/UDP) → 虚拟化 IP不需要管路由和丢包 网络层 (IP/ICMP) → 虚拟化帧不需要管交换机上的MAC表 数据链路层 (Ethernet/WiFi) → 虚拟化物理线不需要管信号编码和电气特性 物理层 → 实际的线缆、光纤、无线电波每一层的设计都提供一种新的抽象——让你在做应用设计时可以忽略下面几层的所有设备、冲突、中断和重传。七、你的系统设计要回答的问题做社保结算系统时——你的接口要跨省调用。你不能看穿抽象层——你只能用它们提供的保证。TCP 保证数据不丢——但不禁你查出它的 RTT 会限制你的最大吞吐——你要设计异步批处理IP 提供统一寻址——但不禁你查出你的路由常常会拥塞——你要有超时和告警机制运营商的路由器抽象 IP 路由——但你不能控制它的配置——一条新策略的路由延迟可能要等几周抽象层管理了复杂度但不管理性能。你设计系统时要做的判断是抽象层已经做了什么——我该在哪一层补充什么——对社保系统来说就是你要在应用层加上对账机制、去重、重试——因为 TCP 保证数据到但不保证银行说扣了社保必须也记了。✅ 亮点从网络各层抽象的本源出发——把复杂机制隐藏在本层内——用社保系统的广域网场景讲清楚知道抽象层能做什么、不能做什么对系统设计的价值。扩展方向QUIC 协议如何扁平化了传输加密的抽象、7 层模型在实际工程中哪些层被跳过了。