Разница между TCP и UDP? - PullRequest
136 голосов
/ 12 мая 2011

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

Я знаю, что TCP используется в случае не критичных ко времени приложений, а UDP используется для игр или приложений, требующих быстрой передачи данных. Я знаю, что TCP используется для HTTP, HTTP, FTP, SMTP и Telnet. Я знаю, что UDP используется для DNS и DHCP.

Но почему? Какие характеристики TCP и UDP делают его полезным для их соответствующих случаев использования?

Ответы [ 10 ]

114 голосов
/ 12 мая 2011

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

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

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

50 голосов
/ 12 мая 2011

С статья Skullbox:

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

UDP (Протокол пользовательских дейтаграмм) - это другой широко используемый протокол в Интернете.Однако UDP никогда не используется для отправки важных данных, таких как веб-страницы, информация о базе данных и т. Д .;UDP обычно используется для потоковой передачи аудио и видео.Потоковое мультимедиа, такое как аудиофайлы Windows Media (.WMA), Real Player (.RM) и другие, использует UDP, поскольку обеспечивает высокую скорость!Причина, по которой UDP работает быстрее, чем TCP, заключается в том, что отсутствует управление потоком или исправление ошибок.Данные, отправленные через Интернет, подвержены коллизиям, и ошибки будут присутствовать.Помните, что UDP касается только скорости.Это основная причина, по которой потоковое мультимедиа не отличается высоким качеством.

1) TCP ориентирован на соединение и надежен, тогда как UDP является менее надежным и ненадежным соединением.

2) TCP нуждается в большей обработке на уровне сетевого интерфейса, а в UDP - нет.

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

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

40 голосов
/ 12 мая 2011

Думайте о TCP как о выделенном запланированном заборе / отправлении пакетов UPS / FedEx между двумя точками, тогда как UDP эквивалентен выбрасыванию открытки в почтовый ящик.убедитесь, что посылка, которую вы отправляете по почте, попадет туда и доставит ее вовремя.С открыткой вам повезет, если она вообще появится, и она может прийти не в порядке или поздно (сколько раз вы получили открытку от кого-то ПОСЛЕ того, как они вернулись домой из отпуска?)

TCP максимально приближен к гарантированному протоколу доставки, в то время как UDP - всего лишь «наилучшее усилие».

20 голосов
/ 12 мая 2011

Причины UDP используется для DNS и DHCP:

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

DHCP - DHCP является расширением BOOTP. BOOTP - это протокол, который клиентские компьютеры используют для получения информации о конфигурации с сервера во время загрузки клиента. Чтобы найти сервер, отправляется широковещательная рассылка с запросом серверов BOOTP (или DHCP). Широковещательные сообщения могут быть отправлены только через протокол без установления соединения, такой как UDP. Следовательно, для BOOTP требуется, по крайней мере, один пакет UDP для широковещательной рассылки на сервере. Более того, поскольку BOOTP работает, пока клиент ... загружается, и это период времени, когда у клиента может не быть загружен и запущен весь стек TCP / IP, UDP может быть единственным протоколом, который клиент может обработать при этом. время. Наконец, некоторые клиенты DHCP / BOOTP имеют только UDP на борту. Например, некоторые IP-термостаты реализуют только UDP. Причина в том, что они построены с такими крошечными процессорами и небольшим объемом памяти, что они не могут выполнять TCP - но им все равно нужно получить IP-адрес при загрузке.

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

15 голосов
/ 12 мая 2011

Одно из отличий коротко

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

9 голосов
/ 01 мая 2013

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

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

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

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

2 голосов
/ 27 января 2017

Короткие и простые различия между протоколами Tcp и Udp:

1) Tcp - протокол управления передачей и Udp - протокол дейтаграмм пользователя.

2) Tcp - надежный протокол, где Udp - ненадежный протокол.

3) Tcp является ориентированным на поток, где Udp является протоколом, ориентированным на сообщения.

4) Tcp медленнее, чем Udp.

2 голосов
/ 23 октября 2016
1 голос
/ 11 марта 2019

Запустите эту тему и позвольте мне попытаться выразить это таким образом.

TCP

Трехстороннее рукопожатие

Боб: Привет, Эми, я хотел бы рассказать тебе секрет
Эми: Хорошо, продолжай, я готова
Боб: ОК

Связь
Боб: «Я», это первая буква
Эми: Первое письмо получено, пожалуйста, пришлите мне второе письмо
Боб: '', это вторая буква
Эми: Второе письмо получено, пожалуйста, пришлите мне третье письмо
Боб: 'L', это третья буква
Через некоторое время
Боб: 'L', это третья буква
Эми: Третье письмо получено, пожалуйста, пришлите мне четвертое письмо
Боб: «О», это четвертое письмо
Эми: ...
......

рукопожатие в 4 направлениях
Боб: Мой секрет раскрыт, теперь ты знаешь мое сердце.
Эми: ОК. Мне нечего сказать.
Боб: ОК.

UDP

Боб: Я ЛЮБЛЮ U
Эми получила: OVI L E

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

0 голосов
/ 12 февраля 2018

Простое объяснение по аналогии

TCP такой.

Представьте, что у вас есть друг по переписке на Марсе (мы общались с письменными письмами в добрые старые времена перед Интернетом).

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

  1. Буква 1 - Будьте активны
  2. Письмо 2 - Начните с конца ...

и т.д.

и т. Д. Письмо 7 - Заточка пилы

Требования:

Вы хотите убедиться, что ваш друг по переписке получает все ваши письма - в порядке и что они приходят отлично . Если ваша ручка за перо получает букву 7 перед буквой 1 - это не хорошо. если ваш друг по переписке получает все буквы, кроме буквы 3, это тоже не годится.

Вот как мы обеспечиваем выполнение наших требований:

  • Письмо-подтверждение. Итак, ваш друг по переписке отправляет письмо-подтверждение, в котором говорится: «Я получил письмо 1». Таким образом, вы знаете, что ваш друг по переписке получил его. Если письмо не приходит или приходит не по порядку, вам нужно остановиться, вернуться назад и повторно отправить это письмо и все последующие письма.
  • Контроль потока: Во время Рождества вы знаете, что ваш друг по переписке будет получать много почты, поэтому вы замедляетесь, потому что не хотите перегружать своего друга по переписке. (Ваш друг по переписке отправляет вам постоянные обновления о количестве непрочитанных сообщений, которые есть в почтовом ящике друзей по переписке - если ваш друг по переписке говорит, что почтовый ящик собирается взорваться из-за его переполненности, то вы замедляете отправку писем - потому что ваш друг по переписке не смогу их прочитать.
  • Идеальное прибытие. Иногда, когда вы отправляете ваше письмо по почте, оно может порваться, или улитка может съесть половину его. Откуда вы знаете, что все ваше письмо прибыл в идеальном состоянии? Ну, ваш друг по переписке даст вам механизм, с помощью которого вы сможете проверить, получили ли они полное письмо, и что именно это письмо вы отправили. (например, через подсчет слов и т. д.). базовая аналогия.
...