Протокол tcp простым и понятным языком

Протокол UDP: что это и как работает?

Была основана Протокол UDP (протокол пользовательских дейтаграмм) является одним из основных протоколов в Интернете, он позволяет приложениям обмениваться данными с гарантиями независимо от нижних уровней модели TCP / IP. Это означает, что маршрутизаторы (сетевой уровень в модели TCP / IP) должны отправлять только дейтаграммы (единица измерения в UDP). UDP поддерживает несколько протоколов прикладного уровня, например, популярный DNS и даже протокол DHCP для автоматического получения (и предоставления) IP-адресации.

основные черты

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

Этот протокол не обеспечивает какого-либо типа управления потоком Если одно устройство быстрее другого и отправляет информацию, вполне возможно, что информация будет потеряна, поскольку она будет разрушаться при самой низкой скорости, и нам придется перейти к пересылке информации

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

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

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

Заголовок UDP

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

Наконец, вернемся к нашему вопросу: разница между TCP и UDP

Благодаря приведенному выше объяснению каждый должен понимать разницу.

  1. TCP ориентирован на соединение, UDP — без установления соединения
  2. Структура программы UDP относительно проста
  3. TCP ориентирован на байты, UDP основан на дейтаграммах
  4. TCP гарантирует правильность данных, UDP может терять пакеты
  5. TCP гарантирует последовательность данных, UDP не гарантирует

Что ориентировано на соединение, а что нет

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

Почему TCP — надежное соединение

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

Как открыть порты на Windows 7

Для корректной работы программ в среде Windows 7 и прочих операционных систем от Microsoft, требующих наличие доступа к сети интернет и не только, предусмотрены так называемые порты.

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

К примеру, чтобы не быть голословным, на официальном сайте мессенджера Skype говорится, что для корректной работы программы в брандмауэре необходимо открыть порты «443/TCP», «3478-3481/UDP» и «49152-65535/UDP+TCP», в противном случае он их заблокирует с вытекающими последствиями. То же самое касается и браузеров, активно использующих порт 80. Исходя из этого, в данной теме рассмотрим, как открыть порты на Windows 7 для тех или иных задач и стоит ли это делать.

Открытие портов в панели управления

  1. Открываем Панель Управления, ставим просмотр «Категория» и открываем пункт «Система и безопасность».
  1. Теперь выбираем «Брандмауэр Windows».
  1. Слева кликаем «Дополнительные параметры». Должен появиться запрос «Открыть от имени администратора».
  1. Откроется окно «Брандмауэр Windows в режиме повышенной безопасности», где слева нужно выбрать «Правила для входящих подключений», а вверху с права нажать на «Создать правило».
  1. Выбираем пункт «Для порта».
  1. Вводим номер порта, например, 443 и нажимаем «Далее».
  1. Нажимаем «Разрешить подключение» и снова выбираем «Далее».
  1. В окне «Профиль» можно оставить все галочки. Жмём «Далее».
  1. Вводим произвольное имя для правила. Нажимаем «Готово».

Теперь на компьютере в списке правил появится то, которое мы только что создали.

Если желаете его удалить, нажмите клавишу «Delete» и подтвердите свой выбор.

Обратите внимание: часто порты могут быть закрыты вашим провайдером, поэтому никакие манипуляции без его участия не дадут результата. Проверить, открыт ли определённый порт, можно на сайте Speed-tester.info.

Как открывать порты через командную строку

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

Для этого открываем командную строку с правами администратора и вводим команду «netsh advfirewall firewall add rule name=L2TP_TCP protocol=TCP localport=хххх action=allow dir=IN», где вместо значения «xxxx» вписываем номер необходимого порта.

Как проверить открытые порты?

Посмотреть открытые порты можно все в той же командной строке. Снова запускаем ее от имени администратора и вводим команду «netstat –a». Нажав на «Enter» программа отобразит список всех открытых портов «TCP» и «UPD».

Где:

  • Established – порт открыт и используется. Как правило, в поле внешний адрес есть какое-то значение;
  • Time_wait – порт в режиме ожидания;
  • Listening – порт прослушивается.

Специальная программа для открытия портов не требуется. Однако, если вы заинтересовались сторонними утилитами, то установите «Simple Port Forwarding». Единственный её недостаток – она условно-бесплатная.

Задний план

UDT был разработан Юнхонг Гу во время его учебы в докторантуре Национального центра интеллектуального анализа данных (NCDM) Университета Иллинойса в Чикаго в лаборатории доктора Роберта Гроссмана. Доктор Гу продолжает поддерживать и улучшать протокол после окончания учебы.

Проект UDT стартовал в 2001 году, когда стали популярными недорогие оптические сети, которые спровоцировали более широкое осознание проблем эффективности TCP в высокоскоростных глобальных сетях. Первая версия UDT, также известная как SABUL (Simple Available Bandwidth Utility Library), была разработана для поддержки массовой передачи данных для перемещения научных данных по частным сетям. SABUL использовал UDP для передачи данных и отдельное TCP-соединение для управляющих сообщений.

В октябре 2003 года NCDM достиг скорости передачи 6,8 гигабит в секунду из Чикаго , США, в Амстердам , Нидерланды . Во время 30-минутного теста они передали примерно 1,4 терабайта данных.

Позднее SABUL был переименован в UDT, начиная с версии 2.0, выпущенной в 2004 году. UDT2 удалил управляющее соединение TCP в SABUL и использовал UDP как для данных, так и для управляющей информации. UDT2 также представил новый алгоритм управления перегрузкой, который позволил протоколу работать «справедливо и дружелюбно» с одновременными потоками UDT и TCP.

UDT3 (2006) распространил использование протокола на бытовой Интернет. Контроль перегрузки также был настроен для поддержки относительно низкой пропускной способности. UDT3 также значительно сократил использование системных ресурсов (ЦП и памяти). Кроме того, UDT3 позволяет пользователям легко определять и устанавливать свои собственные алгоритмы управления перегрузкой.

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

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

Более того, поскольку отсутствие функции безопасности для UDT было проблемой при ее первоначальном внедрении в коммерческую среду, Бернардо (2011) разработал архитектуру безопасности для UDT в рамках своих докторских исследований. Однако эта архитектура подвергается усовершенствованию для поддержки UDT в различных сетевых средах (например, оптических сетях).

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

http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>style=»clear:both;»>

Paste_Image.png

—https://www.zhihu.com/question/20583641
— ссылка — ответ от Жиху

HTTP, FTP является протоколом прикладного уровня, HTTP используется для передачи гипертекста и FTP используется для передачи файлов TCP / UDP — протокол транспортного уровня IP — протокол сетевого уровня — и другие «Так называемые протоколы «уровня приложений», такие как HTTP, FTP, SMTP и т. Д.«Относится к приложениям, которые реализуют определенные функции в рамках протокола связи TCP / IP (HTTP используется для реализации передачи гипертекста, передачи файлов FTP, обработки почты SMTP и т. Д.).

— Другими словами: протокол прикладного уровня выше протокола транспортного уровня.

Интеллектуальная рекомендация

Преобразование objectMapper json введение maven object -> json json -> object jsonUtil JSONMain Результат вывода…

Анализ принципа реализации HashMap концепция хеширования Концепция HashMap концепция структура данных Основной принцип хранения и принцип работы HashMap Базовый принцип хранения HashMap и состав содер…

тема It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately if w…

При создании файла .py кстати автоматически добавляется информация об авторе, времени, имени файла … В системе Mac откройте редактор Добавьте следующий код: END…

Вам также может понравиться

02 Описательная статистика Урок 4 Электронная таблица 2: Обработка данных Справочник статей 02 Описательная статистика Урок 4 Электронная таблица 2: Обработка данных 2. Клеточная формула 4. ЗАМЕНЯЮЩАЯ…

Эта часть рассказывает о JSP, связанных То, что передается фону в этом утверждении, является item.dict_idкоторыйvalue=»${item.dict_id}(Передача идентификатора в фоновый режим удобна для фоновой о…

6.1 Память и адрес (стр.92) Байт имеет позицию. Адрес слова может быть адресом крайнего левого байта или крайнего правого байта. Граничное выравнивание: начальная позиция хранилища целочисленных значе…

1. cd в корневой каталог проекта 2. Создайте файл .podspec, xxx должен соответствовать имени проекта. 3. Отредактируйте файл .podspec. 4. Отметьте код. 5. Чтобы зарегистрировать транк, вам нужно зарег…

В этом разделе в основном рассказывается о том, как реализовать реализацию мобильного терминала в 1px. Почему мы говорим это, мы должны поговорить об devicePixelRatio. window.devicePixelRatio — это от…

Сравнение UDP и TCP

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

  • Надежный — TCP управляет подтверждением сообщений, повторной передачей и тайм-аутом. Сделано несколько попыток доставить сообщение. Если данные будут потеряны по пути, данные будут отправлены повторно. В TCP либо отсутствуют недостающие данные, либо, в случае нескольких тайм-аутов, соединение разрывается.
  • Упорядоченный — если по соединению последовательно отправляются два сообщения, первое сообщение сначала достигнет принимающего приложения. Когда сегменты данных прибывают в неправильном порядке, TCP буферизует неупорядоченные данные до тех пор, пока все данные не будут должным образом переупорядочены и доставлены в приложение.
  • Heavyweight — TCP требует трех пакетов для установки сокетного соединения, прежде чем какие-либо пользовательские данные могут быть отправлены. TCP обеспечивает надежность и контроль перегрузки .
  • Потоковая передача — данные читаются как поток байтов , отличительные признаки не передаются на границы сигнального сообщения (сегмента).

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

  • Ненадежный — при отправке сообщения UDP нельзя узнать, достигнет ли оно места назначения; он мог потеряться по пути. Нет концепции подтверждения, повторной передачи или тайм-аута.
  • Не упорядочено — если два сообщения отправлены одному и тому же получателю, порядок их доставки не может быть гарантирован.
  • Легковесный — сообщения не упорядочиваются, не отслеживаются соединения и т. Д. Это очень простой транспортный уровень, разработанный поверх IP.
  • Датаграммы — пакеты отправляются индивидуально и проверяются на целостность по прибытии. Пакеты имеют определенные границы, которые соблюдаются при получении; операция чтения в сокете получателя приведет к тому, что сообщение будет полностью отправлено в том виде, в котором оно было отправлено изначально.
  • Нет контроля перегрузки — UDP сам по себе не предотвращает перегрузку. Меры по контролю за перегрузкой должны быть реализованы на уровне приложений или в сети.
  • Широковещательная рассылка — протокол UDP не требует установления соединения — отправленные пакеты могут быть адресованы для приема всеми устройствами в подсети.
  • Многоадресная рассылка — поддерживается режим многоадресной рассылки, при котором один пакет дейтаграммы может автоматически маршрутизироваться без дублирования группе подписчиков.

Какие проблемы может решить Advanced TCP/IP Data Logger?

Типовое применение для Advanced TCP/IP Data Logger — это запись данных с одного или нескольких терминальных серверов на диск. Терминальный сервер (не путать с Windows Terminal Server) — это устройство, которое позволяет подключать устройства с интерфейсами RS232 или RS485 в сеть Ethernet, что позволяет располагать сервер сбора данных на значительном удалении от конечных точек. Терминальные серверы обычно имеют порт Ethernet и один или несколько портов RS232 или RS485 и используют сетевой протокол TCP/IP во время передачи данных между портами RS232 или RS485 и TCP/IP портом удаленного компьютера. Каждый терминальный сервер может иметь свой IP адрес и данные каждого последовательного порта могут отсылаться через свой порт TCP/IP.
Другое типовое применение программа — это считывание данных с удаленных устройств RS232 или RS485, используемых в промышленных системах. Устройства ввода-вывода могут собирать данные, но иногда бывает проблематично расположить сервер сбора данных рядом с устройством. Тогда оптимальным является подключение такого устройства к Ethernet инфраструктуре, благодаря которой сбор данных можно осуществлять на значительном расстоянии от конечной точки.

Какая польза от открытия портов роутера?

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

  • Настройте FTP-сервер для удаленного доступа к вашим файлам.
  • Настройте VPN-сервер для безопасного доступа к локальной сети.
  • Настройте SSH-сервер на своем компьютере, чтобы управлять им удаленно.
  • Настройте почтовый сервер или веб-сервер.
  • Если вы собираетесь использовать частное облако Nextcloud для синхронизации файлов или папок.
  • Если вы собираетесь играть онлайн, в играх необходимо сделать переадресацию портов, потому что мы сами выступаем в роли сервера.
  • Если вы собираетесь загружать через eMule, необходимо открыть порты, чтобы другие узлы могли подключиться к вам.
  • Если вы собираетесь загружать через BitTorrent, необходимо открыть один или несколько портов, чтобы другие узлы могли соединиться с вами, чтобы вы могли быстрее загружать и выгружать.
  • Любое другое использование, которое требует подключения из Интернета к вашей внутренней локальной сети (ПК, сервер, консоль и т. Д.).

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

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

Однако, если связь начинается через Интернет (WAN, внешняя сеть) с локальной сетью, необходимо открыть порт, чтобы правильно перенаправить пакеты к месту назначения. Как вы могли заметить, компьютеры локальной сети используют частную адресацию, которая не маршрутизируется через Интернет. Чтобы сделать их доступными извне, нам нужно будет «открыть порт» в NAT, чтобы все пакеты, которые достигают общедоступного IP-адреса и определенного порта, были правильно перенаправлены их получателю.

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

Как сделать выбор: TCP или UDP для vpn?

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

Наши клиенты часто спрашивают, какой протокол лучше: tcp или udp для vpn. Прочитав этой статье о tcp и udp протоколах, вы сами можете решить, какой из них лучше подходит именно вам. OpenVPN приложения работают как с UDP, так и с TCP, и оба протокола безопасны и обеспечивают анонимность. Какой из них использовать, зависит от того, для чего вы используете VPN.

В дополнение к собственному впн-клиенту, мы предоставляем нашим пользователям Openvpn конфиги для использования с любым подходящим клиентом на выбранной платформе. Рекомендуем вам посмотреть видео-инструкцию Меняем TCP на UDP в OpenVPN на нашем youtube-канале, если вы используете OpenVPN клиент.

Подписывайтесь на нас в соцсетях, задавайте вопросы и делитесь полезной информацией с друзьями и близкими!

Функциональность

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

Видео в прямом эфире

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

Онлайн игры

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

В онлайн-играх важно то, что происходит в режиме реального времени

Сравнение с моделью OSI

Три верхних уровня в модели OSI, то есть уровень приложения, уровень представления и уровень сеанса, отдельно не различаются в модели TCP/IP, которая имеет только прикладной уровень над транспортным уровнем. Хотя некоторые чистые приложения протокола OSI, такие как X.400, также объединяют их, нет требования, чтобы стек протокола TCP/IP должен накладывать монолитную архитектуру над транспортным уровнем. Например, протокол NFS-приложений работает через протокол представления данных External Data Representation (XDR), который, в свою очередь, работает по протоколу Remote Procedure Call (RPC). RPC обеспечивает надежную передачу данных, поэтому он может безопасно использовать транспорт UDP с максимальным усилием.

Различные авторы интерпретировали модель TCP/IP по-разному и не согласны с тем, что уровень связи или вся модель TCP/IP охватывает проблемы первого уровня модели OSI (физический уровень) или предполагается, что аппаратный уровень ниже уровня канала.

Несколько авторов попытались включить слои 1 и 2 модели OSI в модель TCP/IP, поскольку они обычно упоминаются в современных стандартах (например, IEEE и ITU). Это часто приводит к модели с пятью слоями, где уровень связи или уровень доступа к сети разделяются на слои 1 и 2 модели OSI.

Например, считается, что уровни сеанса и представления пакета OSI включены в прикладной уровень пакета TCP/IP. Функциональность уровня сеанса можно найти в протоколах, таких как HTTP и SMTP, и более очевидна в таких протоколах, как Telnet и протокол инициации сеанса (SIP). Функциональность уровня сеанса также реализована с нумерацией портов протоколов TCP и UDP, которые охватывают транспортный уровень в наборе TCP/IP. Функции уровня представления реализуются в приложениях TCP/IP со стандартом MIME при обмене данными.

Конфликты очевидны также в оригинальной модели OSI, ISO 7498, когда не рассматриваются приложения к этой модели, например, ISO 7498/4 Management Framework или ISO 8648 Internal Organization of the Network layer (IONL). Когда рассматриваются документы IONL и Management Framework, ICMP и IGMP определяются как протоколы управления уровнем для сетевого уровня. Аналогичным образом IONL предоставляет структуру для «зависимых от подсетей объектов конвергенции», таких как ARP и RARP.

Протоколы IETF могут быть инкапсулированы рекурсивно, о чем свидетельствуют протоколы туннелирования, такие как Инкапсуляция общей маршрутизации (GRE). GRE использует тот же механизм, который OSI использует для туннелирования на сетевом уровне.
Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают.

К тому же, модель OSI не использует дополнительный уровень — «Internetworking» — между канальным и сетевым уровнями. Примером спорного протокола может быть ARP или STP.

Вот как традиционно протоколы TCP/IP вписываются в модель OSI:

Распределение протоколов по уровням модели OSI
TCP/IP OSI
7 Прикладной Прикладной напр., HTTP, SMTP, SNMP, FTP, Telnet, SSH, SCP, SMB, NFS, RTSP, BGP
6 Представления напр., XDR, AFP, TLS, SSL
5 Сеансовый напр., ISO 8327 / CCITT X.225, RPC, NetBIOS, PPTP, L2TP, ASP
4 Транспортный Транспортный напр., TCP, UDP, SCTP, SPX, ATP, DCCP, GRE
3 Сетевой Сетевой напр., IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP
2 Канальный Канальный напр., Ethernet, Token ring, HDLC, PPP, X.25, Frame relay, ISDN, ATM, SPB, MPLS, ARP
1 Физический напр., электрические провода, радиосвязь, волоконно-оптические провода, инфракрасное излучение

Обычно в стеке TCP/IP верхние 3 уровня модели OSI (прикладной, представления и сеансовый) объединяют в один — прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению.

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.

Уровень доступа к среде

Функции этого уровня следующие:

  • Отображение IP-адресов в физические адреса сети. Эту функцию выполняет протокол ARP;
  • Инкапсуляция IP-дейтаграмм в кадры для передачи по физическому каналу и извлечение дейтаграмм из кадров, при этом не требуется какого-либо контроля безошибочной передачи, поскольку в стеке TCP/IP такой контроль возложен на транспортный уровень или на само приложение. В заголовке кадров указывается точка доступа к сервису SAP, это поле содержащее код протокола;
  • Определение метода доступа к среде передачи, т.е. способа, с помощью которого компьютеры устанавливает свое право на передачу данных;
  • Определение представления данных в физической среде;
  • Пересылка и прием кадра.

Рассмотрим инкапсуляцию на примере перехвата пакета протокола HTTP с помощью сниффера wireshark, который работает на прикладном уровне протокола TCP/IP:

Помимо самого перехваченного протокола HTTP, на основании стека TCP/IP сниффер описывает каждый нижележащий уровень. HTTP инкапсулируется в TCP, протокол TCP в IPv4, IPv4 в Ethernet II.

TCP vs self-made UDP. Final fighting

  • Send/recv buffer: для своего протокола можно делать mutable buffer, с TCP будут проблемы с buffer bloat.
  • Congestion control вы можете использовать существующие. У UDP они любые. 
  • Новый Congestion control трудно добавить в TCP, потому что нужно модифицировать acknowledgement, вы не можете это сделать на клиенте.
  • Мультиплексирование — критичная проблема. Случается head-of-line blocking, при потере пакета вы не можете мультиплексировать в TCP. Поэтому HTTP2.0 по TCP не должен давать серьезного прироста.
  • Случаи, когда вы можете получить установку соединения за 0-RTT в TCP крайне редки, порядка 5 %, и порядка 97 % для self-made UDP.
  • IP Migration — не такая важная фича, но в случае сложных подписок и хранения состояния на сервере она однозначно нужна, но в TCP никак не реализована.
  • Nat unbinding не в пользу UDP. В этом случае в UDP надо часто делать ping-pong пакеты.
  • Packet pacing в UDP простой, пока нет оптимизации, в TCP эта опция не работает.
  •  MTU и исправление ошибок и там, и там примерно сравнимы.
  • По скорости TCP, конечно, быстрее, чем UDP сейчас, если вы раздаете тонну трафика. Но зато какие-то оптимизации очень долго доставляются.

Выбираем UDP!

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

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

надежность

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

заказ

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

соединение

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

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

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

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

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

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

Краткое описание:

Advanced TCP/IP Data Logger позволяет захватывать данные, передаваемые по протоколу TCP/IP или UDP и сохранять их в файл, а также передавать в другие приложения , или , или просто другое Windows приложение. Advanced TCP/IP Data Logger в реальном времени собирает данные от любого устройства или инструмента и может использоваться как при работе в локальной сети, так и при работе в Интернет.
Advanced TCP/IP Data Logger собирает данные, обрабатывает их соответственно вашим нуждам, выделяет блоки данных из общего потока и затем передает данные в любое приложение Windows или DOS — путем отправки в окно приложения, передает данные через (Dynamic Data Exchange), , и т.п. Это идеальное решение для автоматизированных систем сбора данных, которые используют в своем составе устройства с Ethernet портами.

Выводы

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector