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

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

Мария Богомаз
Мария Богомаз
Технический писатель
22 апреля 2024 г.
224
17 минут чтения
Средний рейтинг статьи: 3

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

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

Модель OSI

Модель OSI (Open Systems Interconnection), или модель взаимодействия открытых систем — это концептуальная модель, иллюстрирующая принципы взаимодействия и сотрудничества разнообразных сетевых протоколов для обеспечения бесперебойного обмена данными между устройствами внутри сети.

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

Уровни модели OSI:

  1. Физический уровень (Physical Layer): задача этого уровня — физическое преобразование данных для передачи по сетевой системе, определение параметров физического оборудования, таких как кабели для волоконной оптики или беспроводные радиосистемы.

  2. Канальный уровень (Data Link Layer): несет ответственность за передачу данных с одного устройства на другое, определяя механизм передачи: байтовую последовательность, кадры или пакеты.

  3. Сетевой уровень (Network Layer): задача данного уровня — определить оптимальный путь для передачи данных между устройствами в сети. Здесь проходят процессы маршрутизации и адресации данных. 

  4. Транспортный уровень (Transport Layer): обеспечивает бесперебойную и производительную передачу информации между устройствами. Он является своеобразным мостом, соединяющим нижестоящие, более технические уровни, с верхними, более программными уровнями. 

  5. Сеансовый уровень (Session Layer): этот уровень отвечает за создание, контроль и завершение сессий между приложениями, работающими на различных устройствах. 

  6. Уровень представления (Presentation Layer): этот уровень обеспечивает форматирование данных от приложения в таком виде, чтобы они стали понятными для прикладного слоя. Это может также включать в себя процессы кодирования и шифрования данных. 

  7. Прикладной уровень (Application Layer): предназначен для непосредственного взаимодействия с программным обеспечением или приложениям. Этот уровень предоставляет сетевые услуги конечным пользователям. 

Image3

Изображение: ib-bank.ru

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

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

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

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

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

Image4

Изображение: ib-bank.ru

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

Функции транспортного уровня

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

Инициирование соединения

При реализации протокола TCP (Transmission Control Protocol) происходит установление соединения. Этот процесс, также известный как трехстороннее рукопожатие», обеспечивает установление надежного контакта между отправляющим и получающим хостами перед отправкой данных. Подробнее про работу TCP мы поговорим в следующем разделе.

Сегментация и реорганизация данных

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

На принимающей стороне эти сегменты должны быть снова собраны в исходные данные, основываясь на информации, содержащейся в заголовке (например, номера последовательности). Представим, что система A передает видеофайл системе B. Файл разбивается на множество сегментов, каждый с уникальным номером последовательности. Когда система B получает эти сегменты, она использует номера последовательности для их сборки обратно в видеофайл. Если какой-либо сегмент пропущен или поврежден, система B может запросить его повторную передачу у системы A, что гарантирует получение полного и точного файла. 

Управление потоком

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

  1. Буферизация: на получателе есть буфер, который временно хранит входящие данные до тех пор, пока они не будут обработаны. Заполненный буфер указывает на временную неспособность принимать новые данные.

  2. Регулирование отправителя: при невозможности обрабатывать входящие данные, приемник может попросить отправителя задержать или снизить скорость передачи данных. 

  3. Методы управления потоком

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

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

    • Механизм управления затруднениями: в TCP действует механизм управления затруднениями, он регулирует размер окна передачи в зависимости от условий сети. 

Обнаружение и исправление ошибок

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

  1. Контрольные суммы: позволяют обнаружить любые ошибки, которые могли появиться в данных во время их передачи. Когда сегмент формируется на стороне отправителя, выполняется расчет контрольной суммы, которую можно считать «электронной подписью» этого сегмента. Эта контрольная сумма затем передается вместе с сегментом. Когда получатель принимает сегменты, он выполняет собственный расчет контрольной суммы для данных в сегменте и сопоставляет ее с контрольной суммой, полученной им. Если контрольные суммы совпадают, данные считаются безошибочными. Если они не совпадают, то это свидетельствует об ошибке. 

  2. Повторные передачи: если обнаружена ошибка, получатель может запросить повторную передачу ошибочного сегмента. Это процесс также известен как автоматический запрос на повторение (ARQ, Automatic Repeat request). ARQ использует подтверждения (ACKs) — сообщения, которые получатель посылает обратно отправителю, чтобы подтвердить прием сегмента. Если отправителю не приходит подтверждение в течение определенного периода времени (тайм-аут), это свидетельствует об ошибке, и сегмент автоматически передается снова.

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

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

Подтверждение доставки

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

  1. Процедура подтверждения: при получении пакетов данных получатель генерирует специальный сигнал подтверждения доставки, также известный как ACK (Acknowledgement), который затем направляется обратно отправителю. ACK означает, что пакет был успешно получен и может включать информацию, указывающую на последний полученный пакет.

  2. Тайм-ауты и повторные отправки: в случае, если ACK не достигает отправителя в установленный промежуток времени (тайм-аут), отправитель предполагает, что пакет утерян или поврежден во время отправки, и инициирует повторную отправку. Это исключает риск утраты пакетов при неустойчивых сетевых условиях. 

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

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

Мультиплексирование

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

  1. Мультиплексирование: каждый исходный поток данных разделяется на отдельные пакеты, которые затем комбинируются в один общий поток для передачи. Каждый пакет либо идентифицируется с помощью заранее установленного идентификатора источника (в случае временного мультиплекса), либо упаковывается в течение строго определенного промежутка времени (в случае частотного мультиплекса).

  2. Мультиплексирование на транспортном уровне: позволяет нескольким прикладным процессам одновременно использовать сетевые услуги. Это достигается благодаря использованию портов, уникальных идентификаторов, которые помогают различать процессы на одном и том же устройстве. Каждое соединение идентифицируется с помощью комбинации IP-адресов и номеров портов отправителя и получателя.

  3. Демультиплексирование: обратный процесс мультиплексирования, при котором комбинированный поток разделяется обратно на отдельные потоки. На транспортном уровне это означает, что данные, полученные из сети, распределяются между различными прикладными процессами с помощью номеров портов. 

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

Протоколы транспортного уровня OSI

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

  1. TCP (Transmission Control Protocol) — протокол, гарантирующий надежную, ориентированную на соединение передачу информации с упорядочиванием пакетов и контролем перегрузки. 

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

  3. SCTP (Stream Control Transmission Protocol) — сочетает в себе надежность и сохранение последовательности TCP с многократной отправкой данных, похожей на UDP. Он эффективен при необходимости тщательного контроля ошибок и имеет высокую стабильность при потере данных.

  4. DCCP (Datagram Congestion Control Protocol) — гарантирует надежную доставку дейтаграмм с двухсторонним синхронным соединением, но без гарантий доставки и последовательности приема пакетов. Он подходит для потокового медиа и других приложений, требующих сокращения задержек.

  5. RUDP (Reliable User Datagram Protocol) — расширяет возможности UDP, включая в себя базовые механизмы TCP, такие как подтверждение доставки пакетов и повторную отправку в случае неудавшейся доставки, при это сохраняя простоту и скорость UDP.

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

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

Протокол управления передачей или Transmission Control Protocol (TCP) представляет собой протокол, устанавливающий надежное соединение между двумя устройствами в сети. TCP гарантирует сохранность данных и их прибытие в том же порядке, в котором они были отправлены.

Процесс работы TCP состоит из нескольких стадий: 

  1. Установление соединения: начальным этапом служит установление соединения между отправителем и получателем. TCP применяет метод трехстороннего рукопожатия.

    • Первый шаг этого процесса начинается с того, что инициирующий узел отправляет пакет с установленным флагом SYN (синхронизация) к узлу-адресату.

    • В ответ узел-адресат отвечает пакетом, в котором установлены как флаг SYN, так и флаг ACK (подтверждение). 

    • В завершение процедуры инициирующий узел отправляет еще один пакет с установленным флагом ACK, тем самым завершая процесс установления соединения. 

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

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

  1. Завершение соединения: после окончания передачи данных связь должна быть прекращена. Завершение связи также осуществляется посредством трехстороннего обмена сигналами. 

    • Узел, инициирующий закрытие соединения, отправляет пакет с активным флагом FIN (завершение).

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

    • Узел, инициировавший разрыв связи, подтверждает получение пакета FIN, отправляя пакет с флагом ACK, после чего связь закрывается.

Image2

Изображение: thecode.media

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

Протокол передачи данных User Datagram Protocol (UDP) характеризуется своей простотой. Отличительная черта UDP заключается в том, что он действует как протокол без подключения, что предполагает отправку данных без процедуры установления и разрыва соединения, а также без подтверждений о доставке.

Работа протокола UDP включает следующие этапы:

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

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

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

Image1

Изображение: bunny.net

Сценарии использования протоколов UDP и TCP

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

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

  • Электронная почта: как SMTP (протокол передачи почты), так и POP3 (протокол управления почтой) ориентированы на TCP. Это обеспечивает надежность в процессе отправки и получения электронных сообщений.

  • Файловые передачи: протоколы передачи файлов, такие как FTP и HTTP, делают ставку на TCP для обеспечения сохранности файла во время передачи. 

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

  • Стриминг-медиа: сервисы стримингового контента, такие как Youtube или Netflix, могут работать на UDP. Его функциональность позволяет сделать стриминг более плавным и быстрым, так как он не старается повторно передавать утерянные пакеты. В процессе просмотра видео потеря нескольких пакетов может привести к микро-рассинхронизациям или уменьшению качества, что обычно воспринимается незаметнее для зрителя, нежели задержки или буферизация.

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

  • VoIP и видеоконференции: UDP также применяется в услугах VoIP и приложениях для видеоконференций, таких как Skype или Zoom. Это объясняется тем, что потеря некоторых пакетов (что может приводить к небольшим прерываниям в аудио или видео) обычно менее заметна, чем задержка, вызванная повторной передачей утерянных пакетов через TCP. 

Заключение

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

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

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону