TCP против UDP

Существует два типа трафика интернет-протокола (IP). Они есть TCP или Протокол управления передачей и UDP или Протокол пользовательских датаграмм. TCP ориентирован на соединение - после установления соединения данные могут отправляться в двух направлениях. UDP - это более простой интернет-протокол без установления соединения. Несколько сообщений отправляются в виде пакетов в чанках с использованием UDP.

Сравнительная таблица

Отличия - сходства - Сравнительная таблица TCP и UDP
TCPUDP
Акроним для Протокол управления передачей Протокол пользовательских дейтаграмм или универсальный протокол дейтаграмм
соединение Протокол управления передачей - это протокол, ориентированный на соединение. Протокол пользовательских дейтаграмм - это протокол без установления соединения.
функция Как сообщение проходит через Интернет с одного компьютера на другой. Это на основе соединения. UDP также является протоколом, используемым при передаче или передаче сообщений. Это не основано на соединении, что означает, что одна программа может отправить загрузку пакетов другой, и это было бы концом отношений.
использование TCP подходит для приложений, которые требуют высокой надежности, а время передачи относительно менее критично. UDP подходит для приложений, которые нуждаются в быстрой и эффективной передаче, таких как игры. Характер UDP без сохранения состояния также полезен для серверов, которые отвечают на небольшие запросы от огромного числа клиентов.
Использование другими протоколами HTTP, HTTP, FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VOIP.
Упорядочение пакетов данных TCP переставляет пакеты данных в указанном порядке. UDP не имеет собственного порядка, так как все пакеты независимы друг от друга. Если заказ требуется, он должен управляться прикладным уровнем.
Скорость передачи Скорость по TCP медленнее, чем по UDP. UDP работает быстрее, потому что восстановление после ошибки не предпринимается. Это протокол "наилучшего усилия".
надежность Существует абсолютная гарантия того, что переданные данные остаются нетронутыми и поступают в том же порядке, в котором они были отправлены.. Нет никакой гарантии, что отправленные сообщения или пакеты дойдут вообще.
Размер заголовка Размер заголовка TCP составляет 20 байт. Размер заголовка UDP составляет 8 байт..
Общие поля заголовка Исходный порт, порт назначения, контрольная сумма Исходный порт, порт назначения, контрольная сумма
Потоковая передача данных Данные считываются как поток байтов, отличительные признаки не передаются к границам сигнального сообщения (сегмента). Пакеты отправляются индивидуально и проверяются на целостность только в случае их поступления. Пакеты имеют определенные границы, которые учитываются при получении, что означает, что операция чтения в сокете-получателе приведет к тому, что сообщение целиком было отправлено.
Вес TCP тяжелый. TCP требует три пакета для установки сокетного соединения, прежде чем любые пользовательские данные могут быть отправлены. TCP управляет надежностью и контролем перегрузки. UDP легкий. Нет порядка сообщений, нет отслеживания соединений и т. Д. Это небольшой транспортный уровень, разработанный поверх IP.
Управление потоком данных TCP делает управление потоком. TCP требует три пакета для установки сокетного соединения, прежде чем любые пользовательские данные могут быть отправлены. TCP управляет надежностью и контролем перегрузки. У UDP нет опции для управления потоком
Проверка ошибок TCP проверяет и исправляет ошибки. Ошибочные пакеты повторно передаются от источника к месту назначения. UDP выполняет проверку ошибок, но просто отбрасывает ошибочные пакеты. Ошибка восстановления не предпринимается.
поля 1. Порядковый номер, 2. Номер ACK, 3. Смещение данных, 4. Зарезервировано, 5. Бит управления, 6. Окно, 7. Срочный указатель 8. Опции, 9. Заполнение, 10. Контрольная сумма, 11. Порт источника, 12. Порт назначения 1. Длина, 2. Порт источника, 3. Порт назначения, 4. Контрольная сумма
Подтверждение Сегменты подтверждения Нет подтверждения
Рукопожатие SYN, SYN-ACK, ACK Нет рукопожатия (протокол без установления соединения)

Содержание: TCP против UDP

  • 1 Различия в функциях передачи данных
    • 1.1 Надежность
    • 1.2 Заказ
    • 1.3 Подключение
    • 1.4 Способ перевода
    • 1.5 Обнаружение ошибок
  • 2 Как работают TCP и UDP
  • 3 различных приложения TCP и UDP
    • 3.1 TCP против UDP для игровых серверов
  • 4 Ссылки

Различия в функциях передачи данных

TCP обеспечивает надежную и упорядоченную доставку потока байтов от пользователя к серверу или наоборот. UDP не предназначен для сквозных соединений, и связь не проверяет готовность получателя.

надежность

TCP является более надежным, поскольку он управляет подтверждением сообщения и повторной передачей в случае потери частей. Таким образом, нет абсолютно никаких пропущенных данных. UDP не гарантирует, что связь достигла получателя, поскольку отсутствуют понятия подтверждения, тайм-аута и повторной передачи.

заказ

TCP передачи отправляются в последовательности, и они принимаются в той же последовательности. В случае, если сегменты данных поступают в неправильном порядке, TCP переупорядочивает и доставляет приложение. В случае UDP, последовательность отправленных сообщений может не сохраняться, когда она достигает принимающего приложения. Нет абсолютно никакого способа предсказать порядок, в котором сообщение будет получено.

соединение

TCP является тяжелым соединением, требующим три пакета для сокетного соединения и обеспечивающим контроль перегрузки и надежность. UDP это легкий транспортный уровень, разработанный поверх IP. Нет отслеживания соединений или упорядочения сообщений.

Способ перевода

TCP читает данные как поток байтов и сообщение передается к границам сегмента. UDP сообщения - это пакеты, которые отправляются индивидуально и по прибытии проверяются на их целостность. Пакеты имеют определенные границы, а поток данных - нет.

Обнаружение ошибок

UDP работает на основе «наилучших усилий». Протокол поддерживает обнаружение ошибок с помощью контрольной суммы, но при обнаружении ошибки пакет отбрасывается. Повторная передача пакета для восстановления после этой ошибки не предпринимается. Это связано с тем, что UDP обычно используется для чувствительных ко времени приложений, таких как игры или передача голоса. Восстановление после ошибки было бы бессмысленным, потому что к тому времени, когда ретранслируемый пакет получен, он не будет иметь никакого смысла.

TCP использует как обнаружение ошибок, так и исправление ошибок. Ошибки обнаруживаются с помощью контрольной суммы, и если пакет является ошибочным, он не подтверждается получателем, что инициирует повторную передачу отправителем. Этот рабочий механизм называется положительным подтверждением с повторной передачей (PAR).

Как работают TCP и UDP

Соединение TCP устанавливается посредством трехстороннего рукопожатия, которое представляет собой процесс инициации и подтверждения соединения. Как только соединение установлено, передача данных может начаться. После передачи соединение прерывается закрытием всех установленных виртуальных каналов..

UDP использует простую модель передачи без неявных диалогов рукопожатия для обеспечения надежности, упорядочения или целостности данных. Таким образом, UDP предоставляет ненадежную услугу, и дейтаграммы могут приходить из строя, дублироваться или пропадать без уведомления. UDP предполагает, что проверка и исправление ошибок либо не нужны, либо выполняются в приложении, что позволяет избежать накладных расходов на такую ​​обработку на уровне сетевого интерфейса. В отличие от TCP, UDP совместим с пакетной рассылкой (отправка всем в локальной сети) и многоадресной рассылкой (отправка всем подписчикам)..

Различные приложения TCP и UDP

Просмотр веб-страниц, электронная почта и передача файлов - обычные приложения, использующие TCP. TCP используется для контроля размера сегмента, скорости обмена данными, контроля потока и перегрузки сети. TCP предпочтителен, когда средства исправления ошибок необходимы на уровне сетевого интерфейса. UDP в основном используется чувствительными ко времени приложениями, а также серверами, которые отвечают на небольшие запросы от огромного числа клиентов. UDP совместим с передачей пакетов - отправка всем по сети и многоадресная рассылка - отправка всем абонентам. UDP обычно используется в системе доменных имен, передаче голоса по IP, тривиальном протоколе передачи файлов и онлайн-играх..

TCP против UDP для игровых серверов

Для многопользовательских онлайн-игр (MMO) разработчикам часто приходится выбирать между использованием постоянных соединений UDP или TCP. Преимуществами TCP являются постоянные соединения, надежность и возможность использовать пакеты произвольных размеров. Самая большая проблема с TCP в этом сценарии - это алгоритм управления перегрузкой, который рассматривает потерю пакетов как признак ограничений пропускной способности и автоматически ограничивает отправку пакетов. В сетях 3G или Wi-Fi это может привести к значительной задержке.

Опытный разработчик Christoffer Lernö взвесил все за и против и рекомендует следующие критерии, чтобы выбрать, использовать ли TCP или UDP для вашей игры:

  • Используйте HTTP поверх TCP для выполнения случайных, инициируемых клиентом запросов без сохранения состояния, когда время от времени допустимо иметь задержку.
  • Используйте постоянные обычные TCP-сокеты, если и клиент, и сервер независимо отправляют пакеты, но случайная задержка в порядке (например, онлайн-покер, много MMO).
  • Используйте UDP, если и клиент, и сервер могут независимо отправлять пакеты, и случайное отставание не в порядке (например, большинство многопользовательских экшен-игр, некоторые MMO).

Ссылки

  • Википедия: Протокол управления передачей
  • Википедия: Протокол дейтаграмм пользователя
  • UDP против TCP для игровых серверов
  • Протокол управления передачей