Источник: Ссылка
Что удивительно, так это то, что страница 14kB может загружаться намного быстрее, чем 15kB страница — может быть, 612ms быстрее, — в то время как разница между a 15kB и 16kB страницей тривиальна.
Это связано с алгоритмом медленного запуска TCP . В этой статье будет рассказано, что это такое, как это работает и почему вас это должно волновать. Но сначала мы быстро рассмотрим некоторые основы.
Что такое TCP?
Протокол управления передачей (TCP) — это способ использования интернет-протокола (IP) для надежной отправки пакетов данных — иногда его называют TCP/IP .
Когда браузер запрашивает ваш веб-сайт (или изображение, или таблицу стилей), он делает этот запрос с использованием HTTP .
HTTP построен поверх TCP, и один HTTP-запрос обычно состоит из множества пакетов TCP .
Сам по себе IP — это просто система для отправки пакетов данных из одного места в Интернете в другое. IP не имеет способа проверить, успешно ли прибыл пакет в пункт назначения.
Когда дело доходит до веб-сайтов, важно знать, что все данные поступили, иначе мы можем получить недостающие фрагменты веб-страницы. Есть и другие способы использования Интернета, где это не так важно, например, потоковое видео в реальном времени.
TCP — это расширение IP, которое позволяет браузеру и серверу вашего веб-сайта сообщать друг другу, какие пакеты были успешно доставлены.
Сервер отправляет несколько пакетов, затем ждет ответа от браузера о том, что он получил пакеты (это называется подтверждением или ACK), затем отправляет еще несколько — или, если он не получил ACK, он может отправить пакеты опять таки.
Что такое медленный старт TCP?
Медленный запуск TCP — это алгоритм, используемый серверами для определения количества пакетов, которые они могут отправить за раз.
Когда браузер впервые подключается к вашему серверу, сервер не может узнать пропускную способность между ними.
Пропускная способность — это количество данных, которое может быть передано по сети в единицу времени. Обычно он измеряется в битах в секунду ( b/s). Сантехника — обычная аналогия — подумайте о пропускной способности как о том, сколько воды может выйти из трубы в секунду.
Ваш сервер не знает, сколько данных может обработать соединение, поэтому он начинает с отправки вам небольшого и безопасного объема данных — обычно 10 пакетов TCP.
Если эти пакеты успешно доходят до посетителя вашего сайта, его компьютер отправляет обратно подтверждение (ACK), в котором говорится, что пакеты были получены.
Затем ваш сервер отправляет больше данных, но на этот раз он удваивает количество пакетов.
Этот процесс повторяется до тех пор, пока пакеты не будут потеряны и ваш сервер не получит ACK. (В этот момент сервер продолжает отправлять пакеты, но с меньшей скоростью).
В этом суть медленного старта TCP — в реальной жизни алгоритм меняется, но по сути он работает именно так.
Так откуда же берутся 14кБ?
Алгоритм медленного старта TCP большинства веб-серверов начинается с отправки 10 пакетов TCP.
Максимальный размер пакета TCP составляет 1500 bytes.
Этот максимум не установлен спецификацией TCP, он исходит из стандарта Ethernet .
Каждый пакет TCP использует 40 байтов в своем заголовке — 16 байтов для IP и дополнительные 24 байта для TCP .
Остается 1460 байт на TCP-пакет. 10 x 1460 = 14600 bytesили примерно 14kB!
Таким образом, если вы можете уместить свой веб-сайт или его важные части в 14 КБ, вы сэкономите посетителям много времени — время, необходимое для одного кругового пути между ними и сервером вашего веб-сайта.