TCP, подвинься. Почему протокол QUIC скоро станет основой интернет

Как на ходу перестроить фундамент интернета и не сломать его — объясняем на примере протокола QUIC.


vbbp92yo205zp4b3o8j89dmefdxvkjzl.jpg

Интернет держался на двух старых опорах почти полвека: TCP переносил данные, UDP помогал там, где важнее скорость, чем надежность. Теперь у сетевого стека появился третий серьезный претендент на роль базового протокола. QUIC уже давно работает под капотом веба, но по мере роста нагрузки и усложнения сервисов становится ясно: речь идет не просто о техническом улучшении HTTP , а о более глубокой перестройке логики сетевого обмена.

Авторы новой редакции Computer Networks: A Systems Approach решили заметно расширить раздел о QUIC. Причина проста: в ближайшие годы значение протокола может оказаться сопоставимым с ролью TCP. Ради такого обновления один из авторов, Брюс Дэви, заново прошелся по RFC , ранним спецификациям QUIC и публикациям о развитии SPDY и HTTP/2 , чтобы собрать более полную и точную картину.

Одна из первых сложностей оказалась почти бытовой, но показательной. Спецификации QUIC занимают сотни страниц, однако почти не дают наглядных схем заголовков пакетов. Для сетевых инженеров и разработчиков, которые привыкли разбирать протоколы буквально по битам, такой подход усложняет чтение. QUIC активно использует поля переменной длины, многие из которых не выровнены по 32-битным границам, поэтому классические аккуратные схемы здесь рисовать неудобно. Именно поэтому автор решил подготовить собственные иллюстрации заголовков, чтобы упростить восприятие структуры пакета.

Такая архитектура отражает саму философию QUIC. Протокол старается одновременно решить две задачи: не тратить лишние байты и не упереться в старые ограничения, как раньше случалось с TCP и IP. В предыдущих поколениях сетевых протоколов разработчики не раз закладывали поля фиксированной длины, а спустя годы выяснялось, что размеров уже не хватает. QUIC уходит от ловушки за счет переменной длины полей. Например, идентификаторы соединения могут достигать 160 бит.