TCP против UDP: демистификация спора о надежности и эффективности

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

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

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

Что такое TCP? (Mylinking'sСетевой краниСетевой брокер пакетовможет обрабатывать как TCP, так и UDP пакеты)
TCP (протокол управления передачей) — это ориентированный на соединение, надежный протокол связи транспортного уровня на основе потока байтов.

Ориентированный на соединение: Ориентация на соединение означает, что TCP-связь является связью «один к одному», то есть сквозной связью «точка-точка», в отличие от UDP, который может отправлять сообщения нескольким хостам одновременно, поэтому связь «один ко многим» не может быть реализована.
Надежный: Надежность TCP гарантирует надежную доставку пакетов получателю независимо от изменений в сетевом соединении, что делает формат пакета протокола TCP более сложным, чем у UDP.
На основе потока байтов: Потоковая природа TCP позволяет передавать сообщения любого размера и гарантирует порядок сообщений: даже если предыдущее сообщение не было получено полностью, и даже если последующие байты были получены, TCP не будет передавать их на прикладной уровень для обработки и автоматически отбрасывать дублирующиеся пакеты.
После того, как хост A и хост B установили соединение, приложению нужно использовать только виртуальную линию связи для отправки и получения данных, тем самым обеспечивая передачу данных. Протокол TCP отвечает за управление такими задачами, как установление соединения, отключение и удержание. Следует отметить, что здесь мы говорим, что виртуальная линия означает только установление соединения, соединение по протоколу TCP только указывает на то, что две стороны могут начать передачу данных, и обеспечивает надежность данных. Узлы маршрутизации и транспортировки обрабатываются сетевыми устройствами; сам протокол TCP не касается этих деталей.

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

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

TCP-UDP

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

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

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

В компьютерных сетях передача данных между хостами осуществляется с помощью сегментов. Так что же такое сегмент пакета?

TCP создает сегмент TCP или сегмент пакета, разделяя входящий поток на фрагменты и добавляя заголовки TCP к каждому фрагменту. Каждый сегмент может передаваться только в течение ограниченного времени и не может превышать максимальный размер сегмента (MSS). На своем пути вниз сегмент пакета проходит через канальный уровень. Канальный уровень имеет максимальный блок передачи (MTU), который является максимальным размером пакета, который может пройти через канальный уровень. Максимальный блок передачи обычно связан с интерфейсом связи.

Так в чем же разница между MSS и MTU?

В компьютерных сетях иерархическая архитектура очень важна, поскольку она учитывает различия между разными уровнями. Каждый уровень имеет свое название; на транспортном уровне данные называются сегментом, а на сетевом уровне данные называются IP-пакетом. Таким образом, максимальный блок передачи (MTU) можно рассматривать как максимальный размер IP-пакета, который может быть передан сетевым уровнем, в то время как максимальный размер сегмента (MSS) — это концепция транспортного уровня, которая относится к максимальному объему данных, которые могут быть переданы TCP-пакетом за один раз.

Обратите внимание, что когда максимальный размер сегмента (MSS) больше максимального размера передаваемого блока (MTU), фрагментация IP будет выполняться на сетевом уровне, и TCP не будет разбивать большие данные на сегменты, подходящие для размера MTU. На сетевом уровне будет раздел, посвященный уровню IP.

Структура сегмента TCP-пакета
Давайте рассмотрим формат и содержимое заголовков TCP.

TCP-сегмент

Порядковый номер: Случайное число, генерируемое компьютером при установлении соединения в качестве его начального значения при установлении соединения TCP, и порядковый номер отправляется получателю через пакет SYN. ​​Во время передачи данных отправитель увеличивает порядковый номер в соответствии с объемом отправленных данных. Получатель оценивает порядок данных в соответствии с полученным порядковым номером. Если данные обнаружены не в порядке, получатель переупорядочит данные, чтобы обеспечить порядок данных.

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

Контрольные биты сегмента TCP включают в себя следующее:

ACK-бит: Когда этот бит равен 1, это означает, что поле ответа подтверждения действительно. TCP указывает, что этот бит должен быть установлен в 1, за исключением пакетов SYN, когда соединение изначально установлено.
RST-бит: Если этот бит равен 1, это указывает на наличие исключения в TCP-соединении и необходимость принудительного разрыва соединения.
SYN-бит: Если этот бит установлен в 1, это означает, что соединение должно быть установлено, а начальное значение порядкового номера установлено в поле порядкового номера.
FIN бит: Когда этот бит равен 1, это означает, что в будущем данные отправляться не будут и требуется соединение.
Различные функции и характеристики TCP воплощены в структуре сегментов TCP-пакета.

Что такое UDP? (Mylinking'sСетевой краниСетевой брокер пакетовможет обрабатывать как TCP, так и UDP-пакеты)
Протокол пользовательских датаграмм (UDP) — это протокол связи без установления соединения. По сравнению с TCP, UDP не предоставляет сложных механизмов управления. Протокол UDP позволяет приложениям напрямую отправлять инкапсулированные IP-пакеты без установления соединения. Когда разработчик выбирает использование UDP вместо TCP, приложение напрямую взаимодействует с IP.

Полное название протокола UDP — User Datagram Protocol, а его заголовок составляет всего восемь байт (64 бита), что очень кратко. Формат заголовка UDP следующий:

UDP-сегмент

Порты назначения и источника: Их основная цель — указать, какому процессу UDP следует отправлять пакеты.
Размер пакета: Поле размера пакета содержит размер заголовка UDP плюс размер данных.
Контрольная сумма: Разработано для обеспечения надежной доставки заголовков и данных UDP. Роль контрольной суммы заключается в обнаружении ошибок или повреждений во время передачи пакета UDP для обеспечения целостности данных.

Различия между TCP и UDP в MylinkingСетевой краниСетевой брокер пакетовможет обрабатывать как TCP, так и UDP пакеты
TCP и UDP различаются в следующих аспектах:

TCP против UDP

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

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

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

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

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

TCP против UDP

Сценарии применения TCP и UDP:
TCP и UDP — это два разных протокола транспортного уровня, и у них есть некоторые различия в сценариях применения.

Поскольку TCP — это протокол, ориентированный на соединение, он в основном используется в сценариях, где требуется надежная доставка данных. Некоторые распространенные варианты использования включают:

Передача файлов по FTP: TCP может гарантировать, что файлы не будут потеряны и повреждены во время передачи.
HTTP/HTTPS: TCP обеспечивает целостность и корректность веб-контента.
Поскольку UDP — это протокол без установления соединения, он не обеспечивает гарантии надежности, но обладает характеристиками эффективности и реального времени. UDP подходит для следующих сценариев:

Низкопакетный трафик, такой как DNS (система доменных имен): DNS-запросы обычно представляют собой короткие пакеты, и UDP может выполнять их быстрее.
Мультимедийная связь, такая как видео и аудио: Для передачи мультимедиа с высокими требованиями к работе в режиме реального времени протокол UDP может обеспечить меньшую задержку, гарантируя своевременную передачу данных.
Вещательная связь: UDP поддерживает связь «один ко многим» и «многие ко многим» и может использоваться для передачи широковещательных сообщений.

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


Время публикации: 03.12.2024