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

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

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

Что у них общего

СВЯЗАННЫЕ: Как найти свои частные и общедоступные IP-адреса

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

TCP и UDP - не единственные протоколы, которые работают поверх IP. Однако они наиболее широко используются.

Как работает TCP

TCP - наиболее часто используемый протокол в Интернете.

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

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

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

СВЯЗАННЫЕ: Понимание Process Explorer

Process Explorer и другие системные утилиты могут отображать тип соединений, которые устанавливает процесс - здесь мы видим браузер Chrome с открытыми TCP-соединениями с множеством веб-серверов.

Как работает UDP

СВЯЗАННЫЙ: Как задержка может сделать даже быстрое подключение к Интернету медленным

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

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

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

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

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

И что?

СВЯЗАННЫЕ: Как использовать Wireshark для захвата, фильтрации и проверки пакетов

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

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