Назад | Перейти на главную страницу

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

В моем маршрутизаторе есть два протокола (и вариант «оба»), которые я могу выбрать при настройке переадресации портов: UDP и TCP. В чем разница между этими двумя протоколами и когда вы бы выбрали один из них при переадресации портов?

Здесь вы можете найти хорошее резюме:

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

И TCP, и UDP работают на модели TCP / IP транспортного уровня, но используются по-разному.

Наиболее важные отличия:

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

Структура кадра

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

Это структура кадра TCP:

Вот структура кадра UDP, намного проще:

Типичные протоколы, использующие TCP, - это HTTP, FTP и SMTP. Примерами протоколов, использующих UDP, являются DNS и DHCP.

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

Какой из них вы используете, зависит от приложения. Например, веб-сервер использует TCP.

И объяснение на уровне генерального директора:

UDP - это когда вы бросаете бумагу в общем направлении корзины.

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

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

Чтобы ответить на другую часть вашего вопроса, вы должны переслать то, что использует ваше приложение. Чтобы пересылать HTTP-трафик, выберите TCP. Чтобы пересылать трафик TFTP, выберите UDP. Программы p2p в основном используют и tcp, и udp, поэтому пересылайте их оба.

Все зависит от протокола и программы, которую вы используете.

Помимо упомянутых выше различий TCP также предоставляет

управление потоком. Используя оконный механизм, получатель ограничивает количество октетов (байтов), которое он хочет получить от отправителя, прежде чем отправитель должен будет дождаться разрешения на отправку дополнительных данных. Размер окна может быть изменен получателем по мере продолжения разговора. Это позволяет получателю «регулировать» скорость передачи данных от отправителя: UDP не позволяет этого, и все, что может сделать получатель, - это выбросить данные, которые он не может буферизовать или обработать по прибытии.

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

TCP делает все возможное, чтобы данные были доставлены получателю; UDP - нет.

Не обращайте внимания на все ответы, объясняющие одно против другого. В целях настройки переадресации портов правила довольно просты: вам нужно выбрать TCP, если только в документации для протокола / приложения, которое вы используете, не указано, что используется UDP. Обычно те, которые используют UDP, связаны с потоковой передачей или очень простыми вещами, которые предпочитают легкие протоколы / скорость надежности (особенно DNS и NTP). Обратите внимание, что есть и другие протоколы помимо TCP и UDP - ICMP, протоколы туннелирования и т. Д.

Чем более известен протокол, тем больше маршрутизаторов на пути вмешивается в протокол. Отправляйте tcp-пакеты, и есть большая вероятность, что полученные пакеты сильно искажены. UDP обычно не так искажен, а другие 254 IP-протокола обычно остаются полностью нетронутыми.

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

Это часть базовых протоколов Internet Protocol Suite. Программы на сетевых компьютерах могут отправлять короткие сообщения, иногда называемые дейтаграммами. UDP не гарантирует никакой надежности (случается, что датаграммы могут приходить не по порядку, дублироваться или отсутствовать без какого-либо уведомления). Тот факт, что проверка доставки всех пакетов не производится, UDP оказывается более быстрым и эффективным для приложений, которым не требуется гарантированная доставка. UDP находит свое применение в таких ситуациях:

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

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

Протокол управления передачей (TCP)

Его часто называют TCP / IP из-за важности этого протокола в Internet Protocol Suite. TCP работает на более высоком уровне и касается только двух конечных систем (например, между веб-браузером и веб-сервером). TCP обеспечивает надежную и последовательную доставку потока данных от одной программы на одном компьютере к другой программе на другом компьютере. Распространенное использование TCP перегруппирует поддержку электронной почты и передачи файлов и веб-приложений. Среди задач управления TCP контролирует размер сообщения, скорость обмена сообщениями и перегрузку сетевого трафика. Что касается IP, он обрабатывает низкоуровневую передачу с компьютера на компьютер как сообщение, передаваемое через Интернет.

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

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

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

Как правило, другие протоколы работают поверх TCP и UDP и известны как протоколы приложений, поскольку они работают в приложении, а не в операционной системе. Ваш веб-браузер использует протокол HTTP, который будет использовать протокол TCP.

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

Надеюсь, это ответ на ваш вопрос на более простом английском.