Процессы, описанные в транспортном уровне OSI, обеспечивают прием данных от уровня приложений и их подготовку для пересылки на сетевом уровне.
Компьютер-отправитель устанавливает связь с компьютером-получателем, чтобы определить, как разделить данные на сегменты, как предотвратить их потери и как проверить доставку всех сегментов. Транспортный уровень можно сравнить с отделом отгрузки продукции, который занимается подготовкой к отправке одного заказа, состоящего из нескольких посылок.
Транспортный уровень отвечает за установление временного сеанса связи и передачу данных между двумя приложениями. Приложение создает данные, которые пересылаются из приложения на узле источника приложению на узле назначения независимо от типа узла назначения, а также среды, в которой должны передаваться данные, маршрута, используемого данными, перегрузки канала или размера сети. Как показано на рисунке, транспортный уровень — это канал между уровнем приложений и нижними уровнями, которые отвечают за передачу данных по сети.
Отслеживание отдельных сеансов связи
На транспортном уровне каждый определенный набор данных, передаваемых между приложением источника и приложением назначения, называется сеансом связи (рис. 1). Узел может иметь несколько приложений, которые одновременно обмениваются данными по сети. Каждое из этих приложений взаимодействует с одним или несколькими другими приложениями на одном или нескольких удаленных узлах. Транспортный уровень отвечает за поддержку и отслеживание этих нескольких сеансов связи.
Сегментация данных и последующая сборка сегментов
Данные необходимо подготовить для пересылки в среде, разделив их на подходящие для этого части. В большинстве сетей существуют ограничения на объем данных, которые можно включить в один пакет. Протоколы транспортного уровня включают сервисы, которые разделяют данные приложений на отдельные блоки необходимого размера (рис. 2). Такой сервис обеспечивает инкапсуляцию, необходимую для каждой части данных. К каждому блоку данных добавляется заголовок, который в последствии используется для повторной сборки. Этот заголовок позволяет отслеживать поток данных.
На узле назначения транспортный уровень должен обеспечить восстановление отдельных частей в один полный поток данных, пригодный для обработки на уровне приложений. Протоколы на транспортном уровне описывают, как использовать информацию в заголовке транспортного уровня для повторной сборки частей данных в потоки с целью их дальнейшей передачи на уровне приложений.
Определение приложений
Чтобы переслать потоки данных соответствующим приложениям, транспортному уровню необходимо определить целевое приложение (рис. 3). Для этого транспортный уровень присваивает каждому приложению отдельный идентификатор — номер порта. Каждому программному процессу, которому требуется доступ к сети, назначается номер порта, уникальный для этого узла.
При передаче по сети данных некоторых типов (например, потокового видео) в виде одного полного потока может использоваться вся доступная полоса пропускания, что в свою очередь приведет к блокированию других процессов передачи данных, выполняемых в это же время. Кроме того, это усложняет восстановление после сбоев и повторную передачу поврежденных данных.
Как показано на рисунке, сегментация данных на более мелкие блоки позволяет чередовать (мультиплексировать) большое количество разных процессов передачи данных от разных пользователей в одной и той же сети.
Транспортный уровень добавляет к каждому сегменту данных специальный заголовок, состоящий из нескольких полей в двоичном виде и позволяющий идентифицировать сегменты. Именно значения в этих полях позволяют различным протоколам транспортного уровня выполнять свои задачи по управлению процессом передачи данных.
Транспортный уровень также отвечает за обеспечение надежности сеанса связи. Различные приложения предъявляют разные требования к надежности передачи данных.
Протокол IP отвечает только за структуру, адресацию и маршрутизацию пакетов. Он не определяет способ доставки или передачи пакетов. Транспортные протоколы предписывают способ передачи сообщений между узлами. Как показано на рисунке, TCP/IP предоставляет два протокола транспортного уровня: TCP (протокол управления передачей) и UDP (протокол передачи датаграмм пользователя). Протокол IP использует эти транспортные протоколы для обеспечения связи и передачи данных между узлами.
TCP считается надежным и полнофункциональным протоколом транспортного уровня, который обеспечивает передачу всех данных на узел назначения. Однако это требует дополнительных полей в заголовке TCP, что увеличивает размер пакетов, а также замедляет процесс передачи данных. UDP, в отличие от него, — более простой протокол транспортного уровня, не гарантирующий надежность. Он имеет меньше полей, и поэтому быстрее, чем TCP.