Для корректной работы онлайн-сервисов, оперативной загрузки и обновления информации нужна стабильная и высокая скорость передачи данных сети. Этот параметр напрямую зависит от сетевого протокола, который вы используете. Большая часть обмена информацией в сети осуществляется благодаря двум протоколам транспортного уровня: TCP и UDP. Рассмотрим их характерные особенности и принцип работы, а также разберемся в их отличиях.
Протокол TCP — это технология передачи данных, которая является одним из главных транспортных протоколов. Его также называют протоколом сквозной связи. Эта технология была изобретена еще в далеком 1974 году. С тех пор она несколько усовершенствовалась и стала одним из элементов фундамента современного Интернета.
Протокол передает данные с пользовательского устройства на веб-сервера. Он отличается высоким уровнем надежности. Это достигается путем обязательной установки стабильного соединения. Он также поддерживает его на заданном уровне в течение всего процесса передачи пакетов.
Алгоритм работы протокола TCP выглядит следующим образом:
1. Установка стабильного соединения:
клиент отправляет серверу SYN (пакет установки соединения);
сервер принимает SYN клиента, создает собственный и вместе с подтверждением отправляет клиенту;
клиент отправляет подтверждение серверу.
данные разбиваются на сегменты (пакеты), каждый из которых имеет заголовок с информацией о портах, номерах последовательности и других параметрах;
происходит обмен пакетами между клиентом и сервером;
принимающая сторона отправляет подтверждение за каждым принятым сегментом.
получатель проверяет целостность принятых данных;
если обнаружено повреждение пакета, он запрашивает повторную его отправку;
также протокол предусматривает тайм-аут для повторной передачи пакетов, если подтверждение не было получено.
одна из сторон инициирует завершение соединения – отправляет пакет FIN;
получатель отправляет подтверждение и отправляет свой пакет FIN;
после получения подтверждения соединение считается завершенным.
В процессе обмена данными протокол TCP гарантирует отправку и получение сегментов в точном порядке. Каждому пакету присваивается номер, который указывает на позицию данных в потоке.
Отдельно стоит отметить использование Window Size — это параметр, который отображает сколько данных готов принять получатель. Отправитель может передавать данные в пределах этого окна, чтобы избежать перегрузки получателя.
Протокол UDP — это более быстрая, но менее надежная технология обмена данными. Она применяется там, где важна непрерывность потока. Протокол был разработан не намного позже TCP — в 1980 году. С его помощью возможен обмен пакетами по IP-сети без необходимости предварительной установки стабильных каналов или путей передачи данных. Он работает используя дейтаграммы — блоки информации, передаваемые напрямую, без создания выделенного виртуального канала.
Эта технология предлагает более простой алгоритм передачи данных. Он состоит всего из 4 базовых этапов:
Упаковка данных в дейтаграммы — общий объем информации для передачи разбивается на сегменты (дейтаграммы).
Отправка дейтаграмм — начинается сразу же после их формирования. Отправитель отсылает дейтаграммы на целевой адрес и порт получателя.
Передача дейтаграмм — данных передаются по сети разными путями, поэтому могут быть доставлены в разное время и в хаотичном порядке.
Получение пакетов — получатель принимает дейтаграммы и извлекает данные. Он может проверить целостность полученных данных, но не может запросить повторную отправку поврежденных или потерянных сегментов.
Протокол UDP не предусматривает отправку подтверждений. Поэтому часть дейтаграмм точно будет утеряна. Однако и применяется эта технология там, где такие потери несущественны, а главную роль играет скорость передачи. Например, в онлайн-играх или сервисах потокового видео.
Для защиты такого вида передачи данных используют дополнительные меры. Например, прокси или туннельное соединение между пользователем и серверами компании.
Разница между UDP и TCP заключается в скорости и надежности передачи данных. Для наглядного сравнения, мы представили их основные характеристики в виде таблицы.
Характеристика |
TCP |
UDP |
Установка соединения |
Устанавливает устойчивое соединение перед передачей данных. |
Начинает передачу сразу. |
Гарантированная доставка |
Обеспечивает гарантированную доставку данных с подтверждением. |
Не гарантирует доставку и не подтверждает получение данных. |
Контроль ошибок |
Использует механизмы для обнаружения и исправления ошибок. |
Не имеет механизмов. |
Порядок доставки |
Строго правильный |
Хаотичный |
Механизм подтверждения |
Имеет механизмы подтверждения доставки и повторной передачи. |
Не имеет данных механизмов |
Пропускная способность |
Ниже |
Выше |
Применение |
Часто используется для передачи данных, где ценится надежность. |
Применяется там, где небольшая задержка критична. |
Примеры протоколов |
HTTP, FTP, SMTP |
DNS, VoIP |
Мы постарались отобразить все главные плюсы и минусы данных протоколов в таблице.
TCP протокол |
UDP протокол |
Преимущества |
|
Возможность установить связь между разными типами устройств |
Низкая задержка и минимальная нагрузка на сеть |
Работа осуществляется независимо от ОС |
Доступны трансляция и многоадресная передача данных |
Поддержка разных протоколов маршрутизации |
Возможность управления потоком данных для определения первостепенно важных пакетов для доставки |
Возможность взаимодействия в сети между организациями |
Более точный контроль над ошибками |
Имеет архитектуру, пригодную к активному масштабированию |
Не требует подтверждения доставки |
Возможность самостоятельного управления |
Более компактный формат заголовков (меньше символов) |
Недостатки |
|
Больше символов в заголовке |
Невозможность повторного запроса на отправку при потере данных |
Невозможность использования для многоадресной передачи данных и их трансляции |
Сложность контроля ошибок из-за отсутствия механизмов подтверждения и повторной отправки |
Сложная замена процедуры протокола |
Отсутствие уведомлений о состоянии соединения |
Требует подтверждения каждого отправленного пакета |
Высокий риск потери данных |
Блокирует пакеты с ошибками |
|
Снижение эффективности при высокой загрузке сети |
|
Нельзя сказать, что один протокол хуже или лучше другого. Для достижения лучшего качества и скорости передачи данных, а соответственно и работы онлайн-сервисов, протоколы используются в тандеме. Например, для передачи мультимедийных файлов, потокового видео и аудио или стриминга лучше использовать технологию UDP. Тут на первый план выходит его малая скорость задержки. В свою очередь протокол TCP применяют там, где важна гарантия и подтверждение доставки пакетов. Например, для осуществления транзакций.