1. 网络性能基础
各位同学好,我是老张。今天咱们聊聊网络性能最基础的东西。说实话,我带团队这么多年,发现很多工程师一上来就抓包、调参数,结果连最基本的带宽和吞吐量都分不清。嗯,这课咱们就从根上捋一遍。
1.1 带宽——高速公路的限速牌
带宽这个概念,说白了就是网络链路能承载的最大数据传输速率。单位是bps(比特每秒),我们常说的千兆、万兆,指的就是这个。
我个人习惯把带宽想象成高速公路的限速牌。限速120km/h,不代表你每时每刻都能跑120。但如果没有这个上限,那路就乱套了。
关键点:带宽是理论最大值,是链路层的物理属性。它不会因为你没跑满就变小,也不会因为拥塞而变大。
我在项目中遇到过一件事:某客户买了千兆交换机,结果业务还是卡。一查,网线用的是Cat5,实际只能跑百兆。你看,带宽的瓶颈有时候就在这些细节里。
1.2 吞吐量——实际跑出来的数据
吞吐量就实在多了。它是单位时间内成功传输的数据量。单位也是bps,但它是实际测出来的,不是算出来的。
你想想看,带宽是1000Mbps,但实际吞吐量可能只有800Mbps。为什么?因为协议开销、重传、拥塞控制,这些都会吃掉一部分。
| 指标 | 含义 | 典型值(千兆以太网) |
|---|---|---|
| 带宽 | 理论最大速率 | 1000 Mbps |
| 吞吐量 | 实际有效速率 | ~940 Mbps(扣除帧头、IP头、TCP头) |
我的经验:做性能测试时,别盯着带宽看。吞吐量才是你真正能用的。我曾经帮一个团队排查问题,他们一直抱怨带宽不够,结果一测吞吐量,发现是网卡驱动没装对,白白浪费了30%的性能。
1.3 延迟——数据在路上的时间
延迟,就是数据从源头发到目的地的时间。单位是毫秒(ms)。
延迟由四部分组成:
- 处理延迟:路由器、交换机处理数据包的时间
- 排队延迟:数据包在队列里等转发的时间
- 传输延迟:把数据比特放到链路上的时间(跟带宽有关)
- 传播延迟:信号在介质上跑的时间(跟距离有关)
我记得有一次做跨国业务优化,发现延迟高达300ms。一查,物理距离摆在那儿,光速也救不了。最后只能靠CDN和边缘节点来缓解。
注意:延迟和带宽是两个独立维度。你带宽再大,延迟该高还是高。卫星通信就是典型例子——带宽不小,但延迟几百毫秒。
1.4 抖动——延迟的波动
抖动,就是延迟的变化量。单位也是毫秒。
为什么抖动重要?因为实时应用(比如VoIP、视频会议)对延迟的稳定性非常敏感。延迟高一点还能忍,但忽高忽低就完全没法用了。
我曾经排查过一个视频卡顿的问题。平均延迟只有50ms,但抖动达到了±40ms。结果就是画面一卡一卡的,用户体验极差。后来发现是某个交换机在做流量整形,把数据包攒成批次发送。关掉这个功能后,抖动降到了±5ms。
1.5 OSI模型与TCP/IP协议栈回顾
说到网络性能,不提协议栈说不过去。咱们快速过一遍。
OSI七层模型
OSI模型是理论上的完美分层。从上到下分别是:
- 应用层(HTTP、FTP)
- 表示层(数据加密、格式转换)
- 会话层(建立、管理会话)
- 传输层(TCP、UDP)
- 网络层(IP、路由)
- 数据链路层(MAC、帧)
- 物理层(比特、信号)
说实话,实际工作中我们更常用TCP/IP模型。但OSI模型的价值在于帮你理解每一层的职责。比如,带宽问题通常出在物理层和数据链路层,而吞吐量问题往往跟传输层有关。
TCP/IP四层模型
这个更实用:
- 应用层:HTTP、DNS、SSH
- 传输层:TCP(可靠)、UDP(快速)
- 网络层:IP、ICMP
- 网络接口层:以太网、Wi-Fi
我建议你记住一个原则:性能问题要分层排查。应用层慢,先看传输层有没有重传;传输层正常,再看网络层有没有丢包;网络层没问题,最后查物理层。
避坑指南:我曾经遇到一个案例,应用层响应慢,团队折腾了三天应用代码。最后发现是网卡协商成了半双工模式,导致大量冲突和重传。这就是典型的没按分层思路排查的教训。
知识体系结构图
下面这张图是我自己画的,把本章的核心逻辑串起来了。你一看就明白:
这张图你看懂了吗?四个核心指标是并列关系,它们共同决定了你感受到的网络质量。而协议栈是承载这些指标的骨架,每一层都可能成为瓶颈。
我的建议:刚开始学网络性能,别急着上工具。先把这四个概念刻在脑子里。带宽是上限,吞吐量是现实,延迟是体验,抖动是稳定。搞明白这些,你排查问题就有方向了。
好了,这一章的内容就到这儿。记住,网络性能优化不是玄学,是科学。把基础打牢,后面咱们才能玩转各种测试工具和调优手段。