Отличия TCP и UDP протоколов — выяcняем разницу на примерах

Современный мир завязан на системах связи, когда различные устройства «общаются» между собой посредством «правил», или протоколов модели OSI (Open Systems Interconnection model), определяющей методы взаимодействия. В тексте рассмотрим два самых популярных протокола транспортного уровня — TCP и UDP — и сравним их.

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

TCP — протокол транспортного уровня

Первым из рассматриваемых протоколов будет TCP, или Transmission Control Protocol, который используется для транспортировки сообщений между устройствами в сети.

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

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

У протокола TCP есть несколько особенностей:

  • Система нумерации сегментов. TCP отслеживает передаваемые и принимаемые сегменты, присваивая номера каждому из них. Байтам данных, которые должны быть переданы, присваивается определенный номер байта, в то время как сегментам присваиваются порядковые номера.
  • Управление потоком. Функция ограничивает скорость, с которой отправитель передает данные. Это делается для обеспечения надежности доставки, в том числе чтобы компьютер не генерировал пакетов больше, чем может принять другое устройство. Если говорить простым языком, то получатель постоянно сообщает отправителю о том, какой объем данных может быть получен.
  • Контроль ошибок. Функция реализуется для повышения надежности путем проверки байтов на целостность.
  • Контроль перегрузки сети. Протокол TCP учитывает уровень перегрузки в сети, определяемый объемом данных, отправленных узлом.

Примеры применения сетевого протокола TCP

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

  • SSH, FTP, Telnet: в данных протоколах TCP используется для обмена файлами.
  • SMTP, POP, IMAP: протоколы, где TCP отвечает за передачу сообщений электронной почты.
  • HTTP/HTTPS: протоколы, где TCP отвечает за загрузку страниц из интернета.

Эти примеры работают на уровне приложений стека TCP/IP и передают данные вниз к TCP, на транспортный уровень.

Строение протокола TCP

Структура пакета протокола TCP/IP.

В каждый пакет данных TCP добавляет заголовок общим объемом в 20 байт (или октетов), в котором содержатся 10 обязательных полей:

  • Порт источника — порт устройства-отправителя.
  • Порт назначения — порт принимающего устройства.
  • Порядковый номер. Устройство, инициирующее TCP-соединение, должно выбрать случайный начальный порядковый номер, который затем увеличивается в соответствии с количеством переданных байтов.
  • Номер подтверждения. Принимающее устройство увеличивает этот номер с нуля в соответствии с количеством полученных байтов.
  • Сдвиг данных TCP. Данный параметр определяет размер заголовка, чтобы система могла понять, где начинаются данные.
  • Зарезервированные данные — зарезервированное поле, значение которого всегда равно нулю.
  • Флаги управления. TCP использует девять флагов для управления потоком данных в определенных ситуациях — например, при инициировании сброса сессии.
  • Размер окна — самая важная часть заголовка TCP. Это поле используется получателем для указания отправителю объема данных, которые он может принять.
  • Контрольная сумма. Отправитель генерирует контрольную сумму и передает ее в заголовке каждого пакета. Принимающее устройство может использовать контрольную сумму для проверки ошибок в полученном файле.
  • Срочный указатель — это предлагаемая протоколом возможность помечать некоторые байты данных тегом «Срочно» для их пересылки и обработки вне очереди.
  • Поле опции. Может использоваться для расширения протокола или его тестирования.

Ускоряем работу протокола TCP при хорошем соединении или выжимаем максимум

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

Чтобы достичь максимальной пропускной способности TCP-соединения, можно выполнить следующие шаги:

Увеличить размер окна. Размер окна, или TCP Window Size, — это количество данных, которое может быть передано в данный момент без подтверждения. Это значение устанавливается в начале соединения между устройствами. Однако это значение можно изменить заранее, введя команду regedit в поиске и перейдя по следующему пути: 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\DefaultSendWindow

Увеличение параметра приведет к тому, что уменьшится количество проверок полученных данных и увеличится эффективность использования полосы пропускания. Также, перейдя по пути:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

, можно добавить значение Tcp1323Opts, которое отвечает за изменение размера окна и управление временной меткой.

Изменение значения SackOpts. SACK, или селективное подтверждение, крайне важно для подключений с большим размером окна. Без этой функции проверка полученных данных выполняется только по последнему номеру последовательности полученных данных. Но с включением этой функции появляется возможность подтверждать получение отдельных блоков. Чтобы изменить данный параметр, можно перейти по пути:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

и выбрать параметр SackOpts. 

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

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

Стоит отметить, что данными манипуляциями выигрываются доли секунд, поэтому сильно прироста скорости вы не увидите.

UDP — протокол транспортного уровня

Если нам очень важна скорость передачи, а вот потеря пакетов не так критична (как, например, в голосовом или видеотрафике), то лучше использовать UDP, или User Datagram Protocol. В отличие от TCP он обеспечивает передачу данных без получения подтверждения от пользователя. Проще говоря, просто отправляет пакеты и не ждет ничего в ответ. Из-за этого достигается высокая скорость в ущерб надежности.

Чаще всего UDP применяется в чувствительных ко времени службах, где потерять пакеты лучше, чем ждать. Звонки в Skype или Google Meet, стриминг видео, онлайн-трансляции используют этот протокол из-за того, что они чувствительны ко времени и рассчитаны на определенный уровень потерь. Вся голосовая связь через интернет работает по протоколу UDP. Также UDP очень часто используется в онлайн-играх. Аналогичная история с DNS-серверами, поскольку они должны быть быстрыми и эффективными.

Примеры использования протокола UDP

Примерами протоколов, использующих UDP-протокол, являются:

  • DNS — протокол, преобразующий домены в IP-адреса, чтобы сделать возможной загрузку интернет-ресурса через браузер.
  • SNMP — протокол, позволяющий системному администратору проводить мониторинг, контролировать производительность сети и изменять конфигурацию подключенных устройств.
  • DHCP — протокол, отвечающий за автоматическое назначение IP-адреса клиенту.
Структура пакета протокола UDP.

Разница между TCP и UDP

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

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

TCP vs UDP

Рассмотрим разницу характеристик протоколов TCP и UDP.

TCPUDP
Состояние соединенияТребуется установленное соединение для передачи данных (соединение должно быть закрыто после завершения передачи)Протокол без соединения, без требований к открытию, поддержанию или прерыванию соединения
Гарантия доставкиМожет гарантировать доставку данных получателюНе гарантирует доставку данных получателю
Повторная передача данныхПовторная передача нескольких кадров в случае потери одного из нихОтсутствие повторной передачи потерянных пакетов
Проверка ошибокПолная проверка ошибокБазовый механизм проверки ошибок. Использует вышестоящие протоколы для проверки целостности
Метод передачиДанные считываются как поток байтов; сообщения передаются по границам сегментовUDP-пакеты с определенными границами; отправляются по отдельности и проверяются на целостность по прибытии
Сферы примененияИспользуется для передачи сообщений электронной почты, HTML-страниц браузеровВидеоконференции, потоковое вещание, DNS, VoIP, IPTV

Отличия TCP и UDP при использовании в VPN

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

Условимся, что VPN заворачивает передаваемые данные в еще один протокол (на самом деле все намного сложнее). Если ваш VPN-туннель использует в качестве транспортного протокола TCP, то передача данных по UDP-протоколу теряет свои преимущества. Как минимум на определенном участке пути. Поэтому для VPN-туннеля советуют использовать UDP-протокол, ведь TCP будет штатно работать внутри UDP-туннеля.

Более 100 готовых к работе конфигураций.

Итог сравнения протоколов TCP и  UDP 

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

Также серьезным отличием TCP от UDP является размер заголовков. У TCP он составляет 20-60 байт, а у UDP — всего 8 байт. Это показывает, насколько сложнее устроен протокол TCP, ведь он приоритизирует трафик и проверяет блоки данных на наличие ошибок.

Сетевое оборудование

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

121

C# и .NET — Сетевое программирование — Протоколы 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.

Что такое протокол пользовательских дейтаграмм (UDP)?

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

Однако UDP также может привести к потере пакетов данных при их передаче от источника к месту назначения. Это также может упростить хакеру выполнение распределенной атаки типа «отказ в обслуживании» (DDoS).

Во многих случаях, особенно с протоколом управления передачей (TCP), когда данные передаются через Интернет, они должны быть отправлены не только из пункта назначения, но и принимающая сторона должна сигнализировать о готовности к приему данных. . Как только оба эти аспекта коммуникации выполнены, можно начинать передачу. Однако при использовании UDP данные отправляются до того, как соединение будет установлено. Это может привести к проблемам с передачей данных, а также открывает возможности для хакеров, стремящихся выполнить DDoS-атаки.

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

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

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

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

Когда данные передаются из одной точки в другую, им присваивается заголовок, который сообщает устройствам, что с ними делать. Заголовок UDP представляет собой простой 8-байтовый фиксированный заголовок. С другой стороны, в TCP размер заголовка может варьироваться от 20 до 60 байт. Поля для номеров портов UDP имеют длину 16 бит, что дает им диапазон от 0 до 65535. Заголовок состоит из 16-битного порта источника, 16-битного порта назначения, 16-битной длины и 16-битного порта. -битная контрольная сумма. Это информация, используемая для отправки дейтаграммы к месту назначения. Процесс отправки не требует проверки соединения между источником и получателем.

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

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

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

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

Протокол пользовательских дейтаграмм (UDP) используется для:

  1. Прямой передачи относительно небольших объемов данных по запросу/ответу, устраняющей проблемы, связанные с контролем ошибок или потоком пакетов
  2. Многоадресная рассылка, так как UDP хорошо работает с коммутацией пакетов
  3. Протоколы обновления маршрутизации, такие как протокол информации о маршрутизации (RIP)
  4. Приложения реального времени, в которых информация должна доставляться быстро и плавно
  5. Следующие реализации, где это полезный протокол транспортного уровня:
    • Протокол сетевого времени (NTP)
    • Протокол сетевых новостей (NNP)
    • Протокол динамической конфигурации хоста (DHCP), протокол начальной загрузки (BOOTP)
    • Протокол потоковой передачи в реальном времени (RTSP), упрощенный протокол передачи файлов (TFTP), RIP
    • Протокол котировок дня (QOTD)
    • DNS

Хотя UDP (протокол пользовательских дейтаграмм), возможно, быстрее и является лучшим решением в ситуациях, когда необходим быстрый прием данных в режиме реального времени, он также оставляет получателя уязвимым для DDoS-атак.

Во время DDoS-атаки сайт подвергается бомбардировке огромным количеством дейтаграмм. Каждый раз, когда возникает проблема, целевой компьютер должен ответить пакетом протокола управляющих сообщений Интернета (ICMP). Сервер сайта не может справиться со всей этой активностью и в конечном итоге «засоряется», как забитая канализация. Это препятствует прохождению законных сообщений — они получают отказ в обслуживании — и делает сайт бесполезным для благонамеренных клиентов и клиентов, которые пытаются общаться с ним.

UDP оставляет сайт особенно уязвимым для DDoS-атак, поскольку не требуется рукопожатие между источником и получателем. Источник может свободно бомбардировать пункт назначения, не получая на это «добро».

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

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

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

FortiDDoS анализирует трафик, бомбардирующий ваш сайт, и отличает полезный трафик от трафика, используемого в DDoS-атаке. Затем он передает полезный трафик на ваш сайт и отклоняет вредоносный трафик. FortiDDoS позволяет вам отслеживать многие — сотни тысяч — параметров одновременно. Это также сводит к минимуму количество ложных срабатываний, экономя драгоценное время вашей ИТ-команды.

Что такое УДП?

Протокол пользовательских дейтаграмм (UDP) относится к протоколу, используемому для связи в Интернете. Он специально выбран для чувствительных ко времени приложений, таких как игры, воспроизведение видео или поиск в системе доменных имен (DNS). UDP обеспечивает более быструю связь, потому что не тратит время на установление прочного соединения с пунктом назначения перед передачей данных.

Что использует UDP?

UDP часто используется, когда связь зависит от времени. Для пользователей лучше получить полную передачу вовремя, чем ждать, пока она будет доставлена ​​в почти идеальном состоянии. По этой причине UDP также обычно используется в приложениях для передачи голоса по интернет-протоколу (VoIP).

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

В чем разница между TCP и UDP?

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

Безопасен ли UDP?

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

User Datagram Protocol (UDP) — GeeksforGeeks

Улучшить статью

Сохранить статью

Нравится Статья

  • Читать
  • Обсудить
  • Улучшить статью

    Сохранить статью

    Нравится Статья

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

    Хотя протокол управления передачей (TCP) является основным протоколом транспортного уровня, используемым в большинстве интернет-сервисов; обеспечивает гарантированную доставку, надежность и многое другое, но все эти услуги требуют дополнительных затрат и задержек. Здесь на сцену выходит UDP. Для услуг в режиме реального времени, таких как компьютерные игры, голосовая или видеосвязь, живые конференции; нам нужен УДП. Поскольку требуется высокая производительность, UDP позволяет отбрасывать пакеты вместо обработки задержанных пакетов. В UDP нет проверки ошибок, что также экономит пропускную способность.
    Протокол пользовательских дейтаграмм (UDP) более эффективен с точки зрения задержки и пропускной способности.

    Заголовок UDP —  

    Заголовок UDP представляет собой 8-байтовый фиксированный и простой заголовок , в то время как для TCP он может варьироваться от 20 до 60 байт. Первые 8 байтов содержат всю необходимую информацию заголовка, а оставшаяся часть состоит из данных. Каждое поле номера порта UDP имеет длину 16 бит, поэтому диапазон номеров портов определяется от 0 до 65535; порт номер 0 зарезервирован. Номера портов помогают различать разные пользовательские запросы или процессы.

     

     

    1. Порт источника: Порт источника — это поле длиной 2 байта, используемое для определения номера порта источника.
    2. Порт назначения: Это поле длиной 2 байта, используемое для идентификации порта получателя пакета.
    3. Длина: Длина — это длина UDP, включая заголовок и данные. Это 16-битное поле.
    4. Контрольная сумма: Контрольная сумма представляет собой поле длиной 2 байта. Это 16-битное дополнение до единицы суммы дополнения до единицы заголовка UDP, псевдозаголовка информации из заголовка IP и данных, дополненных нулевыми октетами в конце (при необходимости), чтобы сделать кратным двум октеты.

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

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

    • Используется для простой связи типа запрос-ответ, когда размер данных меньше и, следовательно, меньше забот о потоке и контроле ошибок.
    • Этот протокол подходит для многоадресной рассылки, поскольку UDP поддерживает коммутацию пакетов.
    • UDP используется для некоторых протоколов обновления маршрутизации, таких как RIP (протокол информации о маршрутизации).
    • Обычно используется для приложений реального времени, которые не допускают неравномерных задержек между разделами полученного сообщения.
    • UDP широко используется в онлайн-играх, где низкая задержка и высокая скорость связи необходимы для хорошего игрового процесса. Игровые серверы часто отправляют небольшие, частые пакеты данных клиентам, и UDP хорошо подходит для этого типа связи, поскольку он быстрый и легкий.
    • Приложения потокового мультимедиа, такие как IPTV, онлайн-радио и видеоконференции, используют UDP для передачи аудио- и видеоданных в реальном времени. В этих приложениях допустима потеря некоторых пакетов, поскольку данные передаются непрерывно и не требуют повторной передачи.
    • Службы VoIP (передача голоса по интернет-протоколу), такие как Skype и WhatsApp, используют UDP для голосовой связи в реальном времени. Задержка в голосовой связи может быть заметной, если пакеты задерживаются из-за управления перегрузкой, поэтому UDP используется для обеспечения быстрой и эффективной передачи данных.
    • DNS (система доменных имен) также использует UDP для своих сообщений запроса/ответа. Запросы DNS, как правило, небольшие и требуют быстрого ответа, что делает UDP подходящим протоколом для этого приложения.
    • DHCP (протокол динамической конфигурации хоста) использует UDP для динамического назначения IP-адресов устройствам в сети. Сообщения DHCP обычно имеют небольшой размер, а задержка, вызванная потерей или повторной передачей пакетов, обычно не критична для этого приложения.
    • Следующие реализации используют UDP в качестве протокола транспортного уровня: 
      • NTP (сетевой протокол времени)
      • DNS (служба доменных имен)
      • BOOTP, DHCP.
      • NNP (Протокол сетевых новостей)
      • Протокол котировки дня
      • TFTP, RTSP, RIP.
    • Прикладной уровень может выполнять некоторые задачи через UDP- 
      • Трассировка маршрута
      • Запись маршрута
      • Метка времени
    • отправляет его пользователю. Итак, работает быстро.
    • На самом деле UDP является нулевым протоколом, если убрать поле контрольной суммы.
      1. Уменьшить потребность в компьютерных ресурсах.
      2. При использовании Multicast или Broadcast для передачи.
      3. Передача пакетов в реальном времени, в основном в мультимедийных приложениях.

    Преимущества UDP:

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

    2. Меньшая задержка: поскольку соединение не устанавливается, задержка меньше, а время отклика быстрее.

    3. Простота: UDP имеет более простую структуру протокола, чем TCP, что упрощает его внедрение и управление.

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

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

    Недостатки UDP:

    1. Отсутствие надежности: UDP не гарантирует доставку пакетов или порядок доставки, что может привести к отсутствию или дублированию данных.

    2. Нет контроля перегрузки: UDP не имеет контроля перегрузки, что означает, что он может отправлять пакеты со скоростью, которая может вызвать перегрузку сети.

    3. Нет управления потоком: UDP не имеет управления потоком, что означает, что он может перегружать получателя пакетами, которые он не может обработать.

    4. Уязвимость для атак: UDP уязвим для атак типа «отказ в обслуживании», когда злоумышленник может залить сеть UDP-пакетами, перегрузив сеть и вызвав ее сбой.

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

    ПСЕВДОЗАГОЛОВОК UDP:

    • целью использования псевдозаголовка является проверка того, что пакет UDP достиг своего правильного пункта назначения
    • правильный пункт назначения состоит из определенной машины и определенного номера порта протокола на этой машине

    псевдозаголовок UDP

    UDP сведения о псевдозаголовке:

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

    Пользовательский интерфейс:

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

    IP-интерфейс:

    • модуль UDP должен иметь возможность определять исходный и конечный интернет-адрес и поле протокола из интернет-заголовка в ответ на операцию приема
    • такой интерфейс также позволит UDP передать полную интернет-датаграмму с заголовком на IP-адрес для отправки. IP будет проверять определенные поля на согласованность и вычислять контрольную сумму интернет-заголовка.
    • IP-интерфейс позволяет модулю UDP взаимодействовать с сетевым уровнем стека протоколов, который отвечает за маршрутизацию и доставку данных по сети.
    • IP-интерфейс обеспечивает механизм для модуля UDP для связи с другими хостами в сети, предоставляя доступ к базовому IP-протоколу.
    • IP-интерфейс может использоваться модулем UDP для отправки и получения пакетов данных по сети с помощью механизмов IP-маршрутизации и адресации.
    • IP-интерфейс обеспечивает уровень абстракции, который позволяет модулю UDP взаимодействовать с сетевым уровнем, не сталкиваясь напрямую со сложностями IP-маршрутизации и адресации.
    • IP-интерфейс также обрабатывает фрагментацию и повторную сборку IP-пакетов, что важно при передаче больших объемов данных, размер которых может превышать максимальный размер пакета, разрешенный сетью.
    • Интерфейс IP также может предоставлять дополнительные услуги, такие как поддержка параметров качества обслуживания (QoS) и механизмов безопасности, таких как IPsec.