3. 带宽与延迟:网络性能的两大基石
做网络优化这么多年,我见过太多人一上来就盯着带宽不放。带宽不够?加带宽!延迟太高?换线路!
其实,带宽和延迟是两个完全不同的概念。你想想看,一条高速公路,车道多(带宽大)不代表你从A到B就快(延迟低)。堵车的时候,车道再多也没用。
今天我们就来彻底搞懂这两个核心概念。
3.1 带宽的概念与单位
带宽,说白了就是单位时间内能传输多少数据。就像水管,带宽就是水管的粗细。
常见单位:
- bps(bit per second):比特每秒,最基础的单位
- Kbps:1 Kbps = 1000 bps
- Mbps:1 Mbps = 1000 Kbps
- Gbps:1 Gbps = 1000 Mbps
我个人习惯用Mbps作为日常参考单位。家庭宽带一般是100-1000Mbps,数据中心内部通常是10Gbps-100Gbps。
3.2 延迟的组成
延迟,就是数据从发送端到接收端所花的总时间。它由四部分组成:
总延迟 = 传播延迟 + 传输延迟 + 处理延迟 + 排队延迟
嗯,这里要注意,很多人只关注传播延迟,其实其他三个同样重要。
3.2.1 传播延迟
这是信号在物理介质上传播的时间。取决于距离和介质速度。
- 光纤中光速约 2×10⁸ m/s(真空中光速的2/3)
- 铜缆中电信号速度约 2.3×10⁸ m/s
举个例子:北京到上海约1000公里,光纤传播延迟 ≈ 1000km / 200km/ms = 5ms。这个你改变不了,物理定律摆在那。
3.2.2 传输延迟
这是把数据放到链路上所需的时间。取决于数据包大小和链路带宽。
公式很简单:传输延迟 = 数据包大小 / 带宽
比如:一个1500字节的包在100Mbps链路上,传输延迟 = 1500×8 / 100×10⁶ ≈ 0.12ms。
3.2.3 处理延迟
路由器、交换机等设备处理数据包的时间。包括:
- 检查包头
- 查路由表
- 校验和计算
- 转发决策
现代硬件设备处理延迟通常在微秒级别。但软件路由器(比如用普通服务器做的)可能达到毫秒级。
3.2.4 排队延迟
数据包在设备队列中等待处理的时间。这是最不可预测的部分。
为什么会这样?因为网络流量是突发的。你想想看,早高峰的时候,高速收费站前排队的时间完全看运气。
排队延迟取决于:
- 队列长度
- 到达流量速率
- 服务速率
3.3 带宽延迟积(BDP)的理解
BDP,全称 Bandwidth-Delay Product。这个概念太重要了,我建议每个做网络的人都必须吃透。
BDP = 带宽 × 往返延迟(RTT)
它表示:在数据发送出去到收到确认之前,链路上最多能容纳多少数据。
举个例子:
- 带宽:100Mbps
- RTT:100ms
- BDP = 100Mbps × 0.1s = 10Mb = 1.25MB
这意味着,你的发送窗口至少需要1.25MB,才能充分利用这条链路。否则,链路就在空等。
核心结论: BDP决定了TCP窗口大小的下限。窗口 < BDP,带宽利用率就上不去。
我记得有一次帮客户优化跨国传输,带宽是1Gbps,但RTT高达300ms。BDP = 1Gbps × 0.3s = 300Mb ≈ 37.5MB。而客户服务器默认的TCP窗口只有64KB。你想想看,这得浪费多少带宽?
后来我们把窗口调到了4MB(受限于内存),吞吐量直接从10Mbps飙到了800Mbps。这就是BDP的威力。
3.4 知识体系总览
下面这张图帮你理清本章的核心逻辑:
好了,带宽和延迟这两个概念,今天就讲到这里。记住:带宽决定上限,延迟决定体验。下一节我们会深入TCP如何利用这些参数做流量控制。