UDP (протокол пользовательских дейтаграмм) — это протокол без установления соединения, основанный на передаче дейтаграмм. В сетевых коммуникациях он обычно используется для быстрой передачи пакетов данных, но не может гарантировать надежную передачу пакетов данных.
В отличие от UDP, TCP — это протокол, ориентированный на соединение, основанный на передаче потока байтов. Он обеспечивает целостность и последовательность данных с помощью таких механизмов, как подтверждение и повторная передача, а также обеспечивает надежную передачу пакетов данных.
Скорочтение
Основные различия между UDP и TCP
Как TCP обеспечивает надежную передачу?
Как UDP обеспечивает надежную передачу?
Однако в некоторых сценариях приложений задержка скорости передачи при использовании протокола TCP слишком велика, и протокол UDP ненадежен для передачи данных. В этом случае протокол UDP необходимо улучшить с помощью прикладной программы. Хотя эти решения будут увеличить нагрузку на сеть, они могут обеспечить более надежную передачу данных UDP.
Протокол TCP использует трехстороннее рукопожатие для установления соединения.В процессе передачи данных такие механизмы, как подтверждение и повторная передача, используются для обеспечения надежной передачи пакетов данных.Однако, поскольку протокол TCP требует многократного взаимодействия данных, задержка передачи большой.
Механизм повторной передачи обычно используется в сочетании с механизмом подтверждения.Если ответ от принимающей стороны не получен в течение определенного периода времени, соответствующий пакет данных будет передан повторно. Формат ответа на подтверждение также будет различаться в зависимости от выбранного механизма повторной передачи. Обычно существует три метода реализации механизмов повторной передачи: протокол остановки и ожидания, резервная повторная передача и выборочная повторная передача.
(1) В протоколе остановки и ожидания после отправки каждого пакета данных необходимо дождаться ответа принимающей стороны, прежде чем отправлять следующий пакет данных, чтобы гарантировать, что каждый пакет данных может быть успешно получен. но эффективность связи низкая.
(2) Во время отката и повторной передачи отправляющая сторона будет непрерывно отправлять несколько пакетов данных. Когда один из пакетов данных потерян, принимающая сторона ответит самым большим непрерывно принимаемым пакетом данных, а затем повторно передаст данные.
(3) При выборочной повторной передаче также используется аналогичный метод резервной повторной передачи, но при выборочной повторной передаче вместо повторной передачи всех пакетов повторно передаются потерянные пакеты.
Механизм проверки пакетов данных также является очень важным способом обеспечения надежности передачи. Он может обеспечить целостность пакетов данных и избежать ошибок данных во время передачи. Когда передающая сторона отправляет пакет данных, ей также необходимо отправить контрольную сумму. Принимающая сторона проверяет контрольную сумму после получения пакета данных. Если проверка не удалась, передающая сторона должна повторить передачу, чтобы убедиться, что пакет данных не был подделаны или повреждены.
Механизм управления потоком обеспечивает надежную передачу пакетов данных за счет ограничения скорости отправки и позволяет избежать перегрузки сети и накопления данных, вызванных слишком быстрой отправкой. Принимающая сторона должна обработать данные при их получении, и во время обработки будет потрачено определенное количество времени. Если отправляющая сторона продолжает отправлять данные, принимающая сторона не успеет обработать данные, что приведет к накоплению данных и потеря. Механизм управления потоком регулирует скорость отправки в соответствии с пропускной способностью принимающей стороны, чтобы избежать накопления данных.
Если вы хотите добиться надежной передачи UDP, вы можете изучить вышеупомянутые преимущества TCP, реализовать надежную передачу данных на уровне приложений и смоделировать надежные методы передачи TCP, такие как механизм подтверждения, механизм повторной передачи, механизм проверки и т. д. для обеспечения надежной передачи данных.
Если вы не используете стек протоколов Linux и механизм Socket верхнего уровня для достижения надежной передачи путем захвата и отправки пакетов, то необходимо реализовать следующие функции:
Отправка: фрагментация пакетов, подтверждение пакетов, повторная передача пакетов.
Прием: определение последовательности пакетов, подтверждение порядкового номера пакета.
В настоящее время существуют следующие программы с открытым исходным кодом, которые используют UDP для обеспечения надежной передачи данных, а именно RUDP, RTP и UDT.
Здесь вы можете спросить: если UDP использует так много механизмов для обеспечения надежной передачи данных, в чем же разница между ним и TCP?
Прежде всего, протокол TCP предусматривает множество механизмов для обеспечения надежности данных.Если пользователь принимает протокол TCP, процесс передачи данных фиксирован, и пользователю не нужно и не может вмешиваться в процесс передачи данных.
Во-вторых, в протоколе TCP используется множество надежных методов передачи, чтобы гарантировать, что данные не будут потеряны, дублированы, повреждены и т. д. Естественно, эффективность передачи протокола TCP значительно снижается. Даже если в протокол UDP будут добавлены простые подтверждения, повторная передача, проверка и другие механизмы, скорость передачи все равно будет выше, чем у TCP, и пользователи смогут удалить некоторые из этих механизмов, чтобы сделать передачу данных более быстрой, гибкой и управляемой.
UDP имеет преимущества низкого потребления ресурсов и высокой скорости обработки, поэтому аудио, видео и обычные данные обычно передаются с использованием UDP, поскольку даже если они время от времени теряют один или два пакета данных, это не окажет большого влияния на результаты приема.
Следует отметить, что достижение надежной передачи UDP с помощью этих методов также увеличит задержку сети и потребление полосы пропускания, поэтому в практических приложениях необходимо взвешивать надежность и производительность. Кроме того, эти методы не могут полностью гарантировать надежную передачу пакетов данных, и определенные риски все же существуют. Поэтому в сценариях приложений, требующих высокой надежности, рекомендуется использовать протоколы более высокой надежности, такие как TCP.
Статьи по Теме:
Сравнение производительности UDP и TCP: скорость — не единственный критерий
Глубокое понимание протокола TCP/IP