Learn

284 статейКатегория: Все
Сеть

Разница между TCP и UDP

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

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

Но TCP и UDP не сравнивают как «что выше». Подходящий способ выбирают по цели связи.

Что такое TCP

TCP — способ связи, который делает акцент на надежности.

В TCP между сторонами устанавливается соединение, и данные передаются поверх этого соединения. TCP проверяет, дошли ли отправленные данные, и повторно отправляет потерянные.

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

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

Например, при входе, передаче файлов, отправке почты, Web-связи через HTTP/1.1 или HTTP/2 важна точность данных. Если часть данных входа потеряется или часть файла повредится, обработка не получится.

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

TCP управляет точной доставкой

Особенность TCP не просто в том, что он отправляет данные, а в управлении, которое делает отправленные данные полноценной связью.

TCP имеет такие свойства:

СвойствоСодержание
Ориентация на соединениеПередача начинается после установления соединения с другой стороной
Подтверждение доставкиПроверяет, дошли ли отправленные данные
Повторная отправкаПри необходимости отправляет заново потерянные данные
Управление порядкомУпорядочивает данные, пришедшие не по порядку
Обработка дублейУпорядочивает повторно пришедшие одинаковые данные

Благодаря этому TCP предоставляет приложению надежный поток данных с сохраненным порядком.

Однако TCP не сохраняет «одну порцию данных приложения» как отдельную единицу. TCP рассматривает данные как непрерывную последовательность байтов.

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

Что такое UDP

UDP — способ связи, который делает акцент на легкости и низкой задержке.

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

UDP отправляет данные относительно простыми единицами. Эти единицы называются датаграммами.

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

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

Суть UDP в том, что сам способ связи содержит мало гарантий.

UDP уменьшает гарантии и дает гибкость

UDP не содержит надежных механизмов TCP внутри самого способа связи.

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

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

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

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

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

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

Разница TCP и UDP — не только в наличии надежности. У них разная логика проектирования связи.

ПунктTCPUDP
Базовая идеяУправляет связью, чтобы доставить точноОблегчает сам способ связи и минимизирует управление
СоединениеУстанавливает соединение перед передачейНе предполагает установление соединения
Обработка данныхНепрерывная последовательность байтовЕдиницы датаграмм
Подтверждение доставкиВыполняетСам UDP не выполняет
Управление порядкомВыполняетСам UDP не выполняет
Повторная отправкаВыполняет при необходимостиСам UDP не выполняет
Подходящие случаиСвязь, где важна точностьСвязь, где важна низкая задержка или гибкое управление
ПримерыHTTP/1.1, HTTP/2, вход, передача файлов, отправка почтыDNS, видеозвонки, онлайн-игры, QUIC, HTTP/3

Где подходит TCP

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

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

В Web-связи HTTP/1.1 и HTTP/2 работают поверх TCP. HTML, CSS, JavaScript, изображения и другие данные страницы в основном нужно получить правильно.

В таких случаях, где важна точность связи, подходит TCP.

Однако современная Web-связь не вся работает только на TCP. В HTTP/3 используется QUIC. QUIC — способ связи на основе UDP.

Поэтому запоминать только «Web = TCP» для современного Web неточно. Точнее: HTTP/1.1 и HTTP/2 используют TCP, а HTTP/3 использует QUIC.

Где подходит UDP

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

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

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

В DNS тоже часто используется UDP. DNS — механизм запроса IP-адресов и других данных по доменному имени. Для коротких запросов и ответов UDP подходит.

Но DNS не всегда использует только UDP. TCP используется при больших ответах, зонной передаче или способах вроде DNS over TLS.

То есть DNS — типичный пример UDP, но не «только UDP».

Отношение QUIC и UDP

QUIC — способ связи, основанный на UDP. HTTP/3 работает поверх QUIC.

Важно, что QUIC не является «ненадежной связью, потому что это UDP».

Сам UDP не имеет подтверждений, повторной отправки, управления порядком и шифрования. Но QUIC поверх UDP реализует собственное управление, надежность и шифрование.

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

Поэтому UDP — не просто «грубая связь». Он используется и как основа для новых способов связи.

Что лучше: TCP или UDP

TCP и UDP не находятся в отношении, где один всегда лучше другого.

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

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

Даже при UDP приложение может добавлять надежность. И даже при TCP плохое состояние сети вызывает задержки и повторные отправки.

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

Связь с анонимностью

Разница TCP и UDP важна и для понимания анонимности и видимости связи.

Например, , , DNS, HTTP/3, видеозвонки и онлайн-игры могут обрабатываться по-разному в зависимости от TCP или UDP.

У TCP сравнительно ясно видны начало, продолжение и конец соединения. UDP не имеет соединения в таком же явном виде, и короткие датаграммы могут идти прерывисто.

Эта разница важна для файрволов, NAT, VPN, прокси и сетей анонимизации.

Например, Tor в основном спроектирован для TCP-потоков. Поэтому UDP-связь приложений не всегда можно просто пропустить через Tor как есть.

Кроме того, в HTTP/3 используется QUIC, поэтому даже Web-связь может быть основана на UDP. В таких случаях видимость и управление связью могут отличаться от HTTP/1.1 или HTTP/2.

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

Понимание TCP и UDP помогает видеть не просто факт связи, а какой вид связи как переносится.

Итоги

TCP — способ связи, который делает акцент на надежности. Он устанавливает соединение, проверяет доставку, повторно отправляет данные и выстраивает порядок.

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

TCP подходит для HTTP/1.1, HTTP/2, входа, передачи файлов, отправки почты и другого. UDP используется в DNS, видеозвонках, онлайн-играх, QUIC, HTTP/3 и другом.

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

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

Связанные инструменты

DNS Leak Test

DNSLeakTest

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

Почему указано здесь: Он может помочь с темой статьи, но находится вне Anonymity Sense, поэтому перед использованием его нужно проверить.

URL : https://www.dnsleaktest.com/

Открыть внешний сайт

Связанные статьи