Сможет ли экспериментальный стандарт вытеснить фундаментальные TCP и UDP?
Хотя большая часть нашей жизни сейчас находится в Интернете, мы редко задумываемся о том, как всё устроено на самом деле. В фоновом режиме, когда мы открываем какой-либо веб-сайт на своём смартфоне, происходит множество действий, которые мы не замечаем и зачастую не контролируем.
Сетевые пакеты постоянно отправляются на маршрутизатор, а затем обратно на устройство даже тогда, когда мы, казалось бы, не производим каких-либо активных сетевых действий. Даже при обычном просмотре небольшой веб-страницы наши устройства обмениваются значительным количеством данных с вышкой сотовой связи и прочим оборудованием.
В этой статье мы поговорим о протоколе сетевой передачи QUIC и о том, как он уже скоро может изменить способ нашего привычного взаимодействия с веб-приложениями.
В начале 2010-х годов инженеры Google активно искали способ ускорить и усовершенствовать веб-приложения. Не у всех людей было стабильное высокоскоростное подключение к Интернету, что определённо затрудняло навигацию по глобальной сети. Потенциальное решение вскоре было найдено, и оно было призвано значительно оптимизировать взаимодействие пользователей с веб-сервисами.
Итак, в 2012 году американский инженер-программист Джим Роскинд, работающий на тот момент в Google, возглавил новый внутренний проект компании под названием Quick UDP Internet Connections (QUIC). Идея заключалась в том, чтобы на максимум реализовать скорость действующего протокола UDP (User Datagram Protocol), добавив функции безопасности и управления перегрузкой сети.
Под перегрузкой сети обычно подразумевают снижение качества обслуживания, которое возникает, когда сетевой узел или линия связи переносит больше данных, чем может обрабатывать. Типичные последствия включают задержку в очереди, потерю пакетов или блокировку новых соединений. Последствием перегрузки является то, что постепенное увеличение предлагаемой нагрузки приводит к снижению пропускной способности сети.
Длительное тестирование QUIC показало многообещающие результаты, однако по ряду причин технология на долгие годы осталась экспериментальной и до сих пор не получила широкого распространения. В начале 2020-х годов Google и вовсе передала проект в Инженерный совет Интернета (IETF) для доработки стандарта.
В настоящее время протокол QUIC в некоторой степени поддерживается в различных веб-браузерах и операционных системах, однако в будущем эксперты ожидают его активного и бурного роста.
Протокол QUIC — это значительный шаг вперёд для всей сетевой индустрии, однако существует ряд факторов, который потенциально сдерживает его. Далее мы рассмотрим ключевые преимущества и возможные недостатки протокола QUIC.
Преимущества
Недостатки
Если вы пытались настроить статический IP-адрес на одном из своих устройств или изменить DNS-серверы, вы, вероятно, видели присутствие опций для настройки TCP/IPv4 или TCP/IPv6.
Протокол управления передачей (Transmission Control Protocol, TCP) преобразует запрошенные сетевые данные в отправляемые пакеты и проверяет их на наличие ошибок. В свою очередь, интернет-протокол (Internet Protocol, IP) адресует и корректно направляет эти пакеты ко всем подключённым устройствам в сети.
TCP/IP даёт возможность устройствам подключаться к Интернету, назначая им уникальные IP-адреса и позволяя маршрутизатору локальной сети идентифицировать их. После этого маршрутизатор может отправлять пакеты данных на соответствующие устройства и получать их, создавая постоянный поток сетевого трафика.
Всё это, в сочетании с различными другими протоколами и MAC-адресами, позволяет устройствам подключаться как к Интернету, так и локально взаимодействовать друг с другом.
TCP/IP по-прежнему является самым распространённым методом подключения устройств к Интернету. В целом, QUIC, как и TCP, — это транспортный протокол. Однако к процессу передачи данных он подходит совсем иначе.
Во-первых, QUIC построен на протоколе UDP, а не TCP. UDP отдаёт приоритет скорости над надёжностью. Такой подход не всегда гарантирует, что пакеты данных будут поступать в нужной последовательности или будут поступать в принципе.
В целом, при использовании UDP можно ожидать некоторой потери пакетов и снижения эффективности в обмен на повышение скорости. В свою очередь, QUIC, основываясь на этом же фундаменте, предоставляет механизм, позволяющий по возможности избежать потери пакетов.
TCP обладает более высоким уровнем эффективности при доставке пакетов, но на более низких скоростях, чем UDP. TCP может повторно отправлять потерянные пакеты в качестве запасного варианта, однако это менее эффективно, чем если отправить всё с первой попытки.
По сравнению с TCP, QUIC отправляет пакеты с более высокой скоростью и с лучшим переупорядочиванием потерянных пакетов. QUIC также сразу шифрует пакеты, в то время как TCP использует для шифрования отдельный протокол.
QUIC обеспечивает скорость UDP с функциями повышения эффективности TCP. Иными словами, он использует только лучшее от обоих протоколов.
Поскольку TCP уже долгие годы остаётся наиболее широко используемым протоколом передачи данных по сети, ещё какое-то время он точно будет оставаться стандартом по умолчанию. Однако QUIC набирает обороты, и уровень внедрения этой технологии продолжает увеличиваться из года в год.
Скорее всего, QUIC не заменит TCP или UDP полностью, потому что каждый протокол, всё-таки, имеет определённое назначение и должен продолжать сосуществовать в будущем.
Тем не менее, QUIC вполне может улучшить работу локальных сетей для настольных устройств и повысить эффективность мобильных сетей 5G. Это было бы удобно для потоковой передачи контента дома или веб-сёрфинга в дороге.
Хотя HTTP/3 является самым современным и передовым стандартом передачи информации во Всемирной паутине, работу большей части Интернета по-прежнему обеспечивают HTTP/2 и HTTP/1.
HTTP/3 поддерживает функции QUIC по умолчанию, в то время как HTTP/2 и HTTP/1 полагаются именно на TCP. Это означает, что темпы внедрения HTTP/3 и QUIC напрямую связаны друг с другом, в связи с чем рост популярности и повсеместного применения обоих должен произойти примерно одновременно.
Помимо необходимости внедрения поддержки HTTP/3 и QUIC в отрасли, аналогичная интеграция необходима и в операционные системах.
Надлежащая встроенная поддержка QUIC позволяет устройствам использовать функции протокола на системном уровне. Хорошей новостью является то, что новейшие версии Windows и macOS уже поддерживают QUIC по умолчанию.
Например, если у вас установлена как минимум Windows 10 21H1 или любая версия Windows 11, ваше устройство точно поддерживает протокол QUIC. Для macOS, если у вас установлен Big Sur (macOS версии 11) или выше, ваше устройство также обладает необходимой поддержкой.
Поддержка Linux всё ещё находится на стадии разработки, однако некоторые дистрибутивы уже могут предложить внешние драйверы, способные обеспечить доступ к функциям QUIC.
Скорее всего, надлежащую встроенную поддержку QUIC в Linux мы увидим не раньше того момента, когда протокол основательно распространится в отрасли.
Существует некоторая начальная поддержка протокола QUIC на мобильных устройствах. Для Android разработчики применяют Cronet для реализации функций HTTP/3 в своих приложениях. Такой подход также позволяет им использовать функции QUIC в своих приложениях по отдельности.
Android не поддерживает протокол QUIC на системном уровне, но разработчики приложений могут использовать его при необходимости. Например, веб-браузер Google Chrome поддерживает QUIC, поскольку имеет поддержку HTTP/3. Веб-сайты с серверными функциями QUIC также работают во всех современных версиях Google Chrome.
Начиная с Android 11, DNS-over-HTTP/3 (DoH3) полностью поддерживается с помощью функции Private DNS. Однако он позволяет выбирать только из предварительно настроенных поставщиков DNS-серверов, таких как Google DNS или Cloudflare DNS. Начиная с Android 13, эта функция позволяет указывать имя хоста для DoH3 вместо того, чтобы полагаться на список предварительных настроек.
Не все серверы поддерживают эту функцию, но список продолжает расти. Так, частный DNS с DoH3 позволяет ускорить поиск DNS на Android с помощью HTTP/3, что по умолчанию предоставляет определённые функции QUIC.
Apple поддерживает протокол QUIC и HTTP/3, начиная с iOS 15. Если устройство использует iOS 15 или более поздней версии, а сервер приложения поддерживает функции QUIC, это устройство точно будет работать с протоколом QUIC.
Веб-браузер Apple Safari, похоже, поддерживает HTTP/3, но, возможно, его потребуется включить вручную. В некоторых версиях системы он может быть включён по умолчанию, что является хорошим знаком для будущего QUIC. Таким образом, веб-браузер Safari должен поддерживать протокол QUIC, пока в настройках приложения включён HTTP/3.
Технологический прогресс неизбежен, и новые протоколы постепенно вытеснят устаревшие решения. Хотя TCP наверняка останется золотым стандартом сети ещё на долгие годы, протокол QUIC рано или поздно сместит его с лидерских позиций. И это немудрено, ведь он сочетает в себе лучшее из TCP и UDP, предлагая уникальные функции.
Переход к новым стандартам всегда сопряжён с определёнными трудностями и требует времени, однако, в конечном итоге, это откроет путь к более эффективным, безопасным и производительным коммуникациям. Готовность адаптироваться к изменениям и применять передовые технологии — залог успеха в быстро развивающемся цифровом мире.
Одно найти легче, чем другое. Спойлер: это не темная материя