网络基础回顾:OSI模型与TCP/IP协议栈
做网络排障这么多年,我有个习惯——不管多复杂的问题,先回到基础。说白了,网络拥塞分析这件事,根基就在OSI模型和TCP/IP协议栈上。你连数据包怎么封装、怎么拆解都搞不清楚,那拥塞发生在哪一层、怎么定位,基本就是瞎猜。
今天咱们就把这块基础夯实了。别嫌简单,我见过太多老手在关键时刻栽在这些基础问题上。
OSI七层模型:排障的“地图”
OSI模型把网络通信分成七层。每一层只管自己的事,跟上下层通过接口沟通。这个设计理念,说白了就是“各司其职”。
| 层级 | 名称 | 典型协议/设备 | 排障关注点 |
|---|---|---|---|
| 7 | 应用层 | HTTP、FTP、DNS | 应用响应慢、超时 |
| 6 | 表示层 | SSL/TLS、加密 | 证书问题、加密协商失败 |
| 5 | 会话层 | NetBIOS、RPC | 会话中断、认证失败 |
| 4 | 传输层 | TCP、UDP | 重传、窗口缩放、端口不通 |
| 3 | 网络层 | IP、ICMP、路由器 | 路由环路、TTL超时、丢包 |
| 2 | 数据链路层 | 以太网、交换机、MAC | CRC错误、冲突、广播风暴 |
| 1 | 物理层 | 网线、光纤、信号 | 光衰、线缆损坏、接口松动 |
我个人习惯,遇到拥塞问题先问自己:问题出在哪一层?如果是应用卡顿,但ping正常,那大概率是7层或4层的问题。如果ping都丢包,那就要往下看3层或2层了。
TCP/IP协议栈:实际干活的那套
OSI是理论模型,实际互联网用的是TCP/IP协议栈。它把七层压缩成四层:应用层、传输层、网络层、网络接口层。
为什么讲拥塞分析必须懂TCP/IP?因为拥塞控制机制就在传输层。TCP的慢启动、拥塞避免、快速重传、快速恢复——这些算法直接决定了网络在拥塞时的表现。
数据包封装与解封装:数据在网线里到底长啥样
你发一条消息,从应用层到物理层,每层都会加上自己的头部信息。这个过程叫封装。接收端反过来,一层层剥掉头部,叫解封装。
我画了一张图,帮你理解这个过程:
你想想看,每一层加头部,数据包就变大了。如果网络带宽有限,大包就容易造成拥塞。这就是为什么MTU(最大传输单元)这么重要——超过1500字节的包会被分片,分片本身就会增加拥塞风险。
关键性能指标:衡量拥塞的“体温计”
做拥塞分析,你得有数据说话。四个核心指标:延迟、抖动、丢包、吞吐量。我一个个说。
延迟(Latency)
延迟就是数据从A到B花的时间。单位通常是毫秒(ms)。
- 传播延迟:光在光纤里跑的速度决定的。北京到上海大约20ms,跨洋得100ms以上。
- 处理延迟:路由器、交换机处理数据包的时间。设备性能差,这个值就高。
- 排队延迟:数据包在设备缓冲区里排队等待转发的时间。这是拥塞的直接体现。
我个人习惯,先ping测RTT(往返时间)。如果RTT超过100ms,用户就能感知到卡顿。超过200ms,基本没法用了。
抖动(Jitter)
抖动是延迟的变化量。说白了,就是延迟忽高忽低。
为什么抖动比延迟更可怕?因为延迟高但稳定,应用可以自适应。抖动大,语音视频就会断断续续。我做过一个VoIP排障,平均延迟才30ms,但抖动高达50ms,通话质量一塌糊涂。
丢包(Packet Loss)
丢包就是数据包在半路消失了。原因很多:线路噪声、缓冲区溢出、路由环路、设备故障。
TCP对丢包特别敏感。一旦丢包,发送方会触发拥塞控制,把发送窗口砍半。这就是为什么丢包率哪怕只有1%,TCP吞吐量可能下降50%以上。
| 丢包率 | 对TCP的影响 | 对UDP的影响 |
|---|---|---|
| 0% | 正常传输 | 正常传输 |
| 0.1% | 吞吐量下降约10-20% | 几乎无感 |
| 1% | 吞吐量下降50%以上 | 视频可能出现轻微花屏 |
| 5% | 连接可能频繁超时 | 语音/视频基本不可用 |
吞吐量(Throughput)
吞吐量是单位时间内成功传输的数据量。单位是bps(比特每秒)。
这里有个坑:带宽和吞吐量不是一回事。带宽是理论最大值,吞吐量是实际能达到的值。拥塞发生时,吞吐量远低于带宽。
一张图总结本章核心
好了,这一章的基础就这些。记住:没有扎实的基础,排障就是碰运气。下一章咱们会深入TCP拥塞控制的具体算法,到时候这些基础概念都会用上。