TCP против UDP: в чем разница?



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

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

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

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

Краткий обзор модели OSI

Физический слой

На самом базовом уровне этот уровень состоит из механических элементов отправки и получения данных. Это определяет, как контакты и провода кодируют 0 и 1 в сигнал, который затем отправляется в местные средства массовой информации в виде световых, электрических и радиосигналов.

Уровень канала передачи данных (DLL)

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

Сетевой уровень

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

Транспортный уровень

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

Сеансовый уровень

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

Уровень представления

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

Прикладной уровень

Наконец, эти полученные данные (или данные, которые будут отправлены) необходимо передать пользователю. Хотя OSI является полезной моделью, имейте в виду, что ни один современный протокол не следует ее точным контурам на всех семи уровнях. Например, протоколы TCP и UDP ориентированы только на сетевой и транспортный уровни.

Что такое TCP

Протокол управления транспортировкой был, по сути, первым сетевым протоколом. Изобретенная вскоре после появления Интернета в 1981 году, ее первая форма была сосредоточена на сегментации данных на пакеты. За прошедшие десятилетия он вырос и превратился в стек TCP/IP, который является сегодняшним стандартом. Пакеты в TCP разделены на 4 уровня: канальный уровень, сетевой, транспортный и прикладной.

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

Сначала клиент инициирует соединение, отправляя сообщение SYN (синхронизация) (в форме случайного числа) — при получении сервер подтверждает его с помощью SYN-ACK (который просто добавляет 1 в конце номера клиента).). Наконец, этот SYN-ACK подтверждается клиентом сообщением ACK. Это виртуальное рукопожатие гарантирует, что и отправитель, и получатель готовы к общению и знают, что канал установлен. Если принимающий порт отключен или недоступен, сообщение ACK заменяется пакетом TCP RST (сброс).

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

Важность интеллектуальной собственности

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

Каждое устройство или домен, подключенное к Интернету, имеет уникальный IP-адрес. В заголовке каждого пакета данных указан IP-адрес предполагаемого получателя, что означает, что данные попадают туда, где они необходимы. Как только IP-адрес идентифицирован, процесс TCP может инициировать передачу данных. Однако полученные данные должны попасть в правильный порт, поэтому TCP-пакеты включают данные порта. Считайте IP-адрес почтовым индексом, а данные TCP-порта — номером конкретного дома. Наконец, TCP-пакеты включают порядковый номер, аналогичный нумерованным страницам в письме; они определяют, в каком порядке отправляются пакеты.

Хотя TCP/IP стал стандартом безопасной и надежной передачи данных через Интернет, основным преимуществом подхода IP является его гибкость, и TCP — не единственный способ передачи данных из точки А в точку Б.

Что такое UDP

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

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

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

Отличия между TCP и UDP по функциям

Особенность UDP (протокол пользовательских дейтаграмм) TCP (протокол управления передачей)
Связь Без установления соединения: соединение не устанавливается перед отправкой данных. Ориентированный на соединение, перед передачей данных устанавливается трехстороннее рукопожатие.
Надежность Не гарантирует доставку, заказ или проверку ошибок. Архитектура пакетов обеспечивает доставку в правильном порядке.
Скорость Быстрый. Медленнее, чем UDP, из-за обширных механизмов проверки ошибок.
Управление потоком данных Нет контроля потока; отправляет данные так быстро, как отправитель может их сгенерировать и сеть может обработать. Управление потоком осуществляется с помощью оконных методов для настройки потока данных.
Применение Используется для чувствительных ко времени приложений, где потеря некоторых данных допустима (например, потоковое аудио/видео в реальном времени). Используется там, где надежная доставка данных имеет решающее значение (например, просмотр веб-страниц, электронная почта).
Размер заголовка Меньший размер заголовка (8 байт). Увеличенный размер заголовка (минимум 20 байт).
Последовательность действий Не упорядочивает пакеты данных. Упорядочивает пакеты данных для обеспечения упорядоченной доставки.

Еще немного пищи для размышления, посвященной вопросам безопасности

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

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

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

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