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

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

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

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

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

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

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

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

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

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

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

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

Связанная статья: Знакомство с Process Explorer

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

Связанная статья: Как из-за задержки даже быстрое подключение к Интернету может казаться медленным

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

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

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

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

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

Ну и что?

Связанная статья: Как использовать Wireshark для захвата, фильтрации и проверки пакетов

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

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

Хотите больше технической информации и досконально разобраться в вопросе данных протоколов? Тогда смотрите статью «Транспортные протоколы TCP и UDP».


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

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

wp-puzzle.com logo