Латентность, пропускная способность и RTT: как измерять и что влияет на скорость загрузки?
Производительность и безопасность сети
Пропускная способность — сколько данных канал передаёт в секунду, латентность — сколько идёт пакет в одну сторону, RTT — время туда и обратно. Для веба узкое место чаще RTT: страница из множества запросов упирается в число круговых задержек, а не в ширину канала.
Из чего складывается задержка
- Распространение: свет в оптоволокне идёт ~200 000 км/с, поэтому Москва — Нью-Йорк (~7 500 км) даёт не меньше 75 мс RTT.
- Сериализация (размер / скорость), очереди на роутерах (bufferbloat), обработка на сервере.
- Мобильная «последняя миля» добавляет десятки миллисекунд.
Почему ширина канала не спасает
- Каждое новое соединение — DNS, TCP, TLS, то есть несколько RTT.
- Slow start разгоняет соединение постепенно, а потолок одного потока — окно / RTT.
- Рост канала с 10 до 100 Мбит/с мало ускоряет типичную страницу, снижение RTT — почти пропорционально.
Как измерять
ping— RTT,mtr— задержки по хопам,iperf3— пропускная способность.- DevTools → Timing: DNS, Initial connection, SSL, Waiting (TTFB), Content Download; из JS — Navigation Timing.
const [n] = performance.getEntriesByType('navigation');
const ms = (from, to) => `${(n[to] - n[from]).toFixed(1)} мс`;
const tls = n.secureConnectionStart > 0; // 0 — соединение без TLS
console.table({
DNS: ms('domainLookupStart', 'domainLookupEnd'),
TCP: ms('connectStart', tls ? 'secureConnectionStart' : 'connectEnd'), // ≈ 1 RTT
TLS: tls ? ms('secureConnectionStart', 'connectEnd') : '—',
TTFB: ms('requestStart', 'responseStart'), // ≈ 1 RTT + время сервера
Download: ms('responseStart', 'responseEnd'),
});
// оценка RTT от браузера: только Chromium, округлена до 25 мс
console.log(navigator.connection?.rtt ?? 'Network Information API не поддерживается');Коротко для собеседования
Ширина канала почти не влияет на загрузку типичной страницы — решает, сколько RTT набирается по дороге. Сокращают и сами RTT, и их число: CDN, переиспользование соединений, TLS 1.3, HTTP/3, preconnect.