Udp и tcp в чем разница?

TCP и UDP — что это такое? В чем разница между этими протоколами?

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

  • Протоколы UDP и TCP – в чем разница?
  • Что такое TCP?
  • Приложения для TCP
  • UDP протокол — что это такое?
  • Приложения для UDP
  • Применение TCP
  • Применение UDP
  • Выводы

Протоколы UDP и TCP – в чем разница?

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

  1. Процесс установки соединения. В UDP в нем нет необходимости, в то время как TCP нуждается в обязательной процедуре начала сеанса, состоящей из трех этапов.
  2. Гарантия обмена трафиком. TCP отправляет запрос на предмет целостности данных – если в ответ поступает запрос о потерянных пакетах, они будут отправлены повторно. За счет этого обеспечивается абсолютная гарантия целостной передачи. Использование UDP, в свою очередь, может привести к потере некоторого количества пакетов.
  3. Управление и контроль потока. TCP осуществляет комплексный контроль и управление потоком информации, а в UDP это не нужно.
  4. Порядок доставки. Специфика TCP заключается в том, что все пакеты отправляются в формате строгой очередности. UDP доставляет сообщения в виде не упорядоченных датаграмм.
  5. Уведомление о перегрузках. Если в рамках передачи данных возникнут перегрузки, TCP отправит соответствующее уведомление. Протокол UDP не предоставляет какой-либо защиты от перегрузки.
  6. Сохранение границ переданных сообщений. Протокол TCP хоть и не может сохранить границы переданных сообщений, предоставляет гарантию их целостности. Применение протокола UDP предусматривает сохранение границ каждой пересланной датаграммы.
  7. Функция сборки и сегментации пакетов передаваемой информации. Поддерживается только в рамках протокола TCP.
  8. Процедура проверки достижимости. Является обязательной только для протокола TCP, в то время как протокол UDP физически не поддерживает ее.
  9. Взаимодействие с соединениями полуоткрытого типа. В рамках протокола TCP никогда не происходит повторная синхронизация. А вот протокол UDP устанавливает соединение методом повторной передачи запроса к конечному пользователю.

Что такое TCP?

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

Чтобы обеспечить надежное соединение, протокол TCP предусматривает трехэтапный запуск сеанса связи. Клиент и сервер должны передавать значения ISN и порта. Еще одна отличительная особенность протокола TCP заключается в использовании контрольной суммы, с помощью которой система проверяет, правильно ли передана информация конечному пользователю.

Приложения для TCP

Протокол TCP используют следующие приложения:

  • HTTP;
  • FTP;
  • Telnet;
  • SMTP.

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

UDP протокол — что это такое?

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

С одной стороны, специалисты в области компьютерных сетей вполне заслуженно считают UDP ненадежным протоколом. С другой, это не просто важное, а незаменимое решение для приложений, работающих в режиме реального времени, интернет-телевидения, технологии VOIP, игр по сети и так далее. Благодаря возможностям протокола UDP пропадает необходимость проводить первичную проверку соединения, соблюдения целостности и порядка структуры данных. Если какая-либо датаграмма (пакет без проверки) потеряется, происходит ее автоматический сброс. Это положительно сказывается на скорости передачи данных через сеть интернет.

Приложения для UDP

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

Применение TCP

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

Кроме того, применение протокола TCP является гарантией надежности доставки. В случае некорректной отправки сообщения пользователь всегда получит соответствующее уведомление в виде окна с информацией о возникшей ошибке.

Применение UDP

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

Гарантии доставки передаваемой информации нет, поэтому не исключено, что в ответ пользователь получит один пакет в виде двух копий. Возникновение подобной ситуации возможно в том случае, если один адрес для отправки сопровождается двумя разными маршрутами.

Выводы

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

Пожалуйста, оставляйте свои мнения по текущей теме материала. Мы очень благодарим вас за ваши комментарии, дизлайки, отклики, подписки, лайки!

Udp и tcp в чем разница?

Чем отличается протокол TCP от UDP

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

Что означают TCP и UDP

TCP – транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью.

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

Напоминаю, что оба протокола работают на транспортном уровне модели OSI или TCP/IP, и понимание того чем они отличаются очень важно.

Разница между протоколами TCP и UDP

Разница между протоколами TCP и UDP – в так называемой “гарантии доставки”. TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение. Также протокол TCP считается надежным, тогда как UDP получил даже именование “протокол ненадежных датаграмм. TCP исключает потери данных, дублирование и перемешивание пакетов, задержки. UDP все это допускает, и соединение для работы ему не требуется. Процессы, которым данные передаются по UDP, должны обходиться полученным, даже и с потерями. TCP контролирует загруженность соединения, UDP не контролирует ничего, кроме целостности полученных датаграмм.

Читайте также  Как включить датчик движения на видеорегистраторе?

С другой стороны, благодаря такой не избирательности и бесконтрольности, UDP доставляет пакеты данных (датаграммы) гораздо быстрее, потому для приложений, которые рассчитаны на широкую пропускную способность и быстрый обмен, UDP можно считать оптимальным протоколом. К таковым относятся сетевые и браузерные игры, а также программы просмотра потокового видео и приложения для видеосвязи (или голосовой): от потери пакета, полной или частичной, ничего не меняется, повторять запрос не обязательно, зато загрузка происходит намного быстрее. Протокол TCP, как более надежный, с успехом применяется даже в почтовых программах, позволяя контролировать не только трафик, но и длину сообщения и скорость обмена трафиком.

Tcp Udp отличия

Давайте рассмотрим основные отличия tcp от udp.

  1. TCP гарантирует доставку пакетов данных в неизменных виде, последовательности и без потерь, UDP ничего не гарантирует.
  2. TCP нумерует пакеты при передаче, а UDP нет
  3. TCP работает в дуплексном режиме, в одном пакете можно отправлять информацию и подтверждать получение предыдущего пакета.
  4. TCP требует заранее установленного соединения, UDP соединения не требует, у него это просто поток данных.
  5. UDP обеспечивает более высокую скорость передачи данных.
  6. TCP надежнее и осуществляет контроль над процессом обмена данными.
  7. UDP предпочтительнее для программ, воспроизводящих потоковое видео, видеофонии и телефонии, сетевых игр.
  8. UPD не содержит функций восстановления данных

Примерами UDP приложений, например можно привести, передачу DNS зон, в Active Directory, там не требуется надежность. Очень часто такие вопросы любят спрашивать на собеседованиях, так, что очень важно знать tcp и udp отличия.

Заголовки TCP и UDP

Давайте рассмотрим как выглядят заголовки двух транспортных протоколов, так как и тут отличия кардинальные.

Заголовок UDP

  • 16 битный порт источника > Указание порта источника для UDP необязательно. Если это поле используется, получатель может отправить ответ этому порту.
  • 16 битный порт назначения > Номер порта назначения
  • 16 битная длина UDP > Длина сообщения, включая заголовок и данные.
  • 16 битная контрольная сумма > Контрольная сумма заголовка и данных для проверки

Заголовок TCP

  • 16 битный порт источника > Номер порта источника
  • 16 битный порт назначения > Номер порта назначения
  • 32 битный последовательный номер > Последовательный номер генерируется источником и используется назначением, чтобы переупорядочить пакеты для создания исходного сообщения и отправить подтверждение источнику.
  • 32 битный номер подтверждения > Если установлен бит АСК поля «Управление», в данном поле содержит следующий ожидаемый последовательный номер.
  • 4 бита длина заголовка > Информация о начале пакета данных.
  • резерв > Резервируются для будущего использования.
  • 16 битная контрольная сумма > Контрольная сумма заголовка и данных; по ней определяется, был ли искажен пакет.
  • 16 битный указатель срочности > В этом поле целевое устройство получает информацию о срочности данных.
  • Параметры > Необязательные значения, которые указываются при необходимости.

Размер окна позволяет экономить трафик, рассмотрим когда его значение равно 1, тут на каждый отправленный ответ, отправитель ждет подтверждения, не совсем рационально.

При размере окна 3, отправитель отправляет уже по 3 кадра, и ждет от 4, который подразумевает, что все три кадра у него есть, +1.

TCP против UDP

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

Содержание:

  • Сравнительная таблица
  • Различия в функциях передачи данных
  • Как работают TCP и UDP
  • Различные приложения TCP и UDP

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

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

Таблица сравнения TCP и UDP

TCP UDP
Акроним для Протокол управления передачей Протокол дейтаграмм пользователя или универсальный протокол дейтаграмм
Подключение Протокол управления передачей — это протокол, ориентированный на соединение. Протокол дейтаграмм пользователя — это протокол без установления соединения.
Функция Когда сообщение проходит через Интернет с одного компьютера на другой. Это основано на подключении. 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 обеспечивает надежность и контроль перегрузки. 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 не предназначен для сквозных соединений, и связь не проверяет готовность получателя.

Надежность

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

Заказ

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

Читайте также  Ips или retina что лучше?

Подключение

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 это может вызвать значительную задержку.

Опытный разработчик Кристоффер Лернё взвесил все за и против и рекомендует следующие критерии, чтобы выбрать, использовать ли в вашей игре TCP или UDP:

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

TCP и UDP: различия

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

Прежде чем мы начнем разбираться в разнице между TCP и UDP, давайте кратко рассмотрим модели сетей OSI и TCP / IP.

  1. Обзор OSI и TCP / IP
  2. Отличия TCP от UDP
  3. Какой использовать: TCP или UDP

Обзор OSI и TCP / IP

Сетевая архитектура OSI и TCP / IP — две известные эталонные модели сети. Модель OSI была разработана Международной организацией по стандартизации (ISO). В 1984 году она была принята в качестве эталонной модели. Модель OSI в основном определяет семиуровневый канал связи между системой. Эти уровни функционируют таким образом, чтобы предоставлять услуги более высокому уровню. Функции этих уровней кратко описаны ниже:

Физический уровень — его основная функция заключается в передаче битов данных на физическом носителе, таком как кабели, сетевые карты, концентраторы и т.д.

Уровень канала передачи данных DLL кодирует биты данных в пакеты перед их передачей. Данные декодируются обратно в биты на приемнике. Другие функции включают управление логическим соединением, обнаружение ошибок, надежную передачу данных и т.д.

Сетевой уровень — отвечает за маршрутизацию пакетов данных в двух разных сетях с использованием IP (Интернет-протокола). Уровень канала данных направляет данные только в локальную сеть.

Транспортный уровень — транспортный уровень обеспечивает надежную и прозрачную передачу данных между сквозными устройствами. Помимо сегментации данных, транспортный уровень определяет тип услуги, которая должна быть предоставлена ​​вышележащим и нижним уровням.

Сеансовый уровень — он связан с такими аспектами управления соединением, как установление и завершение соединения, продолжительность сеанса, синхронизация данных между конечными устройствами с использованием контрольных точек.

Уровень представления — он форматирует данные таким образом, чтобы их могла использовать принимающая сторона. Другие функции, которые здесь работают, — это сжатие и шифрование данных и т.д.

Уровень приложения — он содержит различные службы связи, такие как передача файлов, SMTP, SSH, FTP и электронная почта. Он действует как интерфейс между пользовательскими приложениями, такими как браузеры, удаленный вход и т.д.

TCP / IP — это комбинация двух протоколов: протокола управления передачей и Интернет-протокола. Это основа современного Интернета. Целью TCP является обеспечение надежной передачи пакетов данных путем предоставления механизма контроля ошибок и проверки доставки пакетов данных в последовательности. TCP использует IP для разделения больших потоков данных на более мелкие пакеты и маршрутизации этих пакетов. Есть небольшие различия между уровнями модели OSI и модели TCP / IP. Например, уровни представления и сеанса объединены в его прикладной уровень в TCP / IP. Интернет-уровень соответствует сетевому уровню в модели OSI. Протокол IP является основной частью этого уровня. Кроме того, TCP / IP объединяет канал передачи данных OSI и физические уровни в один уровень, называемый уровнем доступа к сети.

Отличия TCP от UDP

После того, как мы получили быстрый обзор модели OSI и TCP / IP, мы теперь увидим разницу между двумя протоколами транспортного уровня. Ниже мы суммировали основные отличия:

  1. TCP (протокол управления передачей) и UDP (протокол дейтаграмм пользователя)являются протоколами транспортного уровня. TCP — это протокол сквозной связи, ориентированный на установление соединения. В то время как UDP — это простой протокол без установления соединения. Для большинства приложений, использующих архитектуру протокола TCP / IP, протокол TCP используется на транспортном уровне.
  2. TCP использует надежное соединение для передачи данных между системами. В случае UDP не гарантируется надежность передачи данных, но он более эффективен, чем TCP. И TCP, и UDP обеспечивают полнодуплексную передачу.
  3. Заказная доставка данных недоступна в протоколе UDP. В отличие от UDP, TCP обеспечивает функции управления потоком и перегрузкой. TCP гарантирует отсутствие дублирования пакетов, сохраняя последовательность пакетов данных во время передачи.
  4. Поскольку UDP- протокол без установления соединения, у него меньше накладных расходов по сравнению с TCP. Это делает UDP быстрее, чем TCP. Причина объясняется здесь: в случае UDP он напрямую начинает отправку пакетов по назначению без предварительной установки соединения. С другой стороны, TCP использует протокол рукопожатия для установления соединения, а затем начинает фактическую передачу данных.
  5. TCPиспользуется для длительных сеансов, а UDP лучше подходит для небольших сеансов.
Читайте также  На каких станциях нет турникетов?

Помимо этих различий, для этих двух протоколов существуют некоторые общие ограничения, например:

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

Какой использовать: TCP или UDP

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

Например, UDP отлично работает при использовании для чувствительных ко времени приложений, таких как игры, поиск DNS, VoIP и т.д. Если вы используете TCP здесь, задержка, вызванная во время передачи, значительно повлияет на производительность этих служб. TCP может использоваться для приложений передачи файлов, приложений чата, SMTP и т.д. В случае OpenVPN можно использовать оба из них.

Протоколы TCP и UDP

TCP— Transmission Control Protocol

Обмен данными, ориентированный на соединения, может использовать надежную связь, для обеспечения которой протокол уровня 4 посылает подтверждения о получении данных и запрашивает повторную передачу, если данные не получены или искажены. Протокол TCP использует именно такую надежную связь. TCP используется в таких прикладных протоколах, как HTTP, FTP, SMTP и Telnet.

Протокол TCP требует, чтобы перед отправкой сообщения было открыто соединение. Серверное приложение должно выполнить так называемое пассивное открытие (passive open), чтобы создать соединение с известным номером порта, и, вместо того чтобы отправлять вызов в сеть, сервер переходит в ожидание поступления входящих запросов. Клиентское приложение должно выполнить активное открытие (active open), отправив серверному приложению синхронизирующий порядковый номер (SYN), идентифицирующий соединение. Клиентское приложение может использовать динамический номер порта в качестве локального порта.

Сервер должен отправить клиенту подтверждение (ACK) вместе с порядковым номером (SYN) сервера. В свою очередь клиент отвечает АСК, и соединение устанавливается.

После этого может начаться процесс отправки и получения сообщений. При получении сообщения в ответ всегда отправляется сообщение АСК. Если до получения АСК отправителем истекает тайм-аут, сообщение помещается в очередь на повторную передачу.

Поля заголовка TCP перечислены в следующей таблице:

Заголовок TCP

Поле Длина Описание
Порт источника 2 байта Номер порта источника
Порт назначения 2 байта Номер порта назначения
Последовательный номер 4 байта Последовательный номер генерируется источником и используется назначением, чтобы переупорядочить пакеты для создания исходного сообщения и отправить подтверждение источнику.
Номер подтверждения 4 байта Если установлен бит АСК поля «Управление», в данном поле содержится следующий ожидаемый последовательный номер.
Смещение данных 4 бита Информация о начале пакета данных.
Резерв 6 битов Резервируются для будущего использования.
Управление 6 битов Биты управления содержат флаги, указывающие, верны ли поля подтверждения (АСК), указателя срочности (URG), следует ли сбрасывать соединение (RST), послан ли синхронизирующий последовательный номер (SYN) и т. д.
Размер окна 2 байта В этом поле указывается размер приемного буфера. Используя подтверждающие сообщения, получатель может информировать отправителя о максимальном размере данных, которые тот может отправить.
Контрольная сумма 2 байта Контрольная сумма заголовка и данных; по ней определяется, был ли искажен пакет.
Указатель срочности 2 байта В этом поле целевое устройство получает информацию о срочности данных.
Опции переменная Необязательные значения, которые указываются при необходимости.
Дополнение переменная В поле дополнения добавляется столько нулей, чтобы заголовок заканчивался на 32-битной границе.

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

Протокол TCP имеет встроенную возможность надежной доставки. Если сообщение не отправлено корректно, мы получим сообщение об ошибке. Протокол TCP определен в RFC 793.

UDP — User Datagram Protocol

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

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

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

Однонаправленное (unicast) сообщение отправляется из одного узла только в один другой узел. Это также называется связью «точка-точка». Протокол TCP поддерживает лишь однонаправленную связь. Если серверу нужно с помощью TCP взаимодействовать с несколькими клиентами, каждый клиент должен установить соединение, поскольку сообщения могут отправляться только одиночным узлам.

Широковещательная передача (broadcast) означает, что сообщение отправляется всем узлам сети. Групповая рассылка (multicast) — это промежуточный механизм: сообщения отправляются выбранным группам узлов.

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

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

Заголовок UDP гораздо короче и проще заголовка TCP:

Заголовок UDP

Поле Длина Описание
Порт источника 2 байта Указание порта источника для UDP необязательно. Если это поле используется, получатель может отправить ответ этому порту.
Порт назначения 2 байта Номер порта назначения
Длина 2 байта Длина сообщения, включая заголовок и данные.
Контрольная сумма 2 байта Контрольная сумма заголовка и данных для проверки

UDP — это быстрый протокол, не гарантирующий доставки. Если требуется поддержание порядка сообщений и надежная доставка, нужно использовать TCP. UDP главным образом предназначен для широковещательной и групповой передачи. Протокол UDP определен в RFC 786.