SCTP (Stream Control Transmission Protocol) — надежный, ориентированный на сообщения транспортный протокол

Семейство интернет-протоколов формирует основу для взаимодействия систем в таких сетях, как интернет. В нем более 500 различных членов, которые выполняют в основном разные роли, но есть и протоколы, выполняющие более или менее одинаковые функции. Например, и TCP (Transmission Control Protocol), и UDP (User Datagram Protocol) определяют, как происходит обмен данными между участниками сети. Однако если TCP требует для этого существующего соединения, то UDP позволяет передавать файлы без соединения. В 2000 году IETF (Internet Engineering Task Force) опубликовала протокол SCTP (Stream Control Transmission Protocol), объединяющий свойства TCP и UDP.

Что такое SCTP (Stream Control Transmission Protocol)?

Stream Control Transmission Protocol, сокращенно SCTP, — это надежный сетевой протокол семейства интернет-протоколов, который был разработан рабочей группой IETF Signaling Transport (SIGTRAN). Первая версия протокола определена в RFC 2960, опубликованном в 2000 году — семь лет спустя IETF опубликовала пересмотренную версию в RFC 4960. SCTP в первую очередь описывается в этих стандартах как протокол, используемый для отображения инфраструктуры телефонии в IP-сетях. Кроме того, он используется и в других областях, например, для надежного объединения серверов (администрирование пулов серверов для балансировки нагрузки).

Определение

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

Каковы характеристики SCTP?

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

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

Таким образом, протокол Stream Control Transmission Protocol фокусируется на безопасной и надежной передаче данных. Строгое регулирование последовательности передаваемых потоков данных не является необходимым, но в принципе возможно в любое время. Таким образом, фиксированная последовательность передачи пакетов с помощью SCTP должна соблюдаться только тогда, когда этого требует приложение, осуществляющее доступ. Отправленные данные, которые могут быть разделены на несколько потоков, перехватываются не побайтно, а по пакетам, что особенно удобно для сервисов, ориентированных на передачу сообщений.

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

Как работают отдельные функции протокола SCTP

Чтобы прояснить функциональность передачи данных через протокол Stream Control Transmission Protocol, мы подробно рассмотрим наиболее важные функции SCTP — от четырехстороннего рукопожатия, фрагментации и передачи пакетов.

Установка и удаление SCTP-соединения

Как и TCP, SCTP — это прежде всего протокол, ориентированный на соединение, который требует наличия существующего соединения между клиентом и сервером, чтобы они могли обмениваться пакетами данных. Чтобы установить такое соединение, обе стороны выполняют так называемое четырехстороннее рукопожатие, которое клиент инициализирует запросом INIT. Сервер отвечает на этот запрос сообщением INIT-ACK, содержащим, помимо подтверждения, cookie, уникально идентифицирующее предлагаемое соединение. Этот cookie, в свою очередь, отправляет клиент обратно на сервер в запросе COOKIE-ECHO, после чего последний завершает соединение с помощью сообщения COOKIE-ACK.

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

Последовательная передача в потоках (потоки данных)

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

Примечание

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

Фрагментация пользовательских данных

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

Подтверждение пакетов и контроль перегрузки

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

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

Пакетирование (пакетирование нескольких сообщений в одном пакете SCTP)

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

Проверка пакета

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

Для дополнительной защиты данных отправитель имеет возможность добавить в заголовок контрольную сумму CRC32C. Для этого протокол предоставляет необязательное 32-битное поле.

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

Поскольку SCTP поддерживает мультинавигацию, пользователи могут указать полный набор транспортных адресов, которые могут быть использованы в качестве потенциальных пунктов назначения для отправляемых пакетов. Если указано несколько адресов, протокол по умолчанию использует основной адресный путь. Если основной адресный путь не может быть достигнут, выбираются альтернативные адреса, чтобы передача могла продолжаться без прерывания. Для обеспечения этой услуги в протоколе Streaming Control Transmission Protocol реализована функция управления путями, которая использует указанные адресные инструкции. Она также контролирует доступность всех определенных адресных путей, регулярно посылая на них так называемые пульсы (управляющие сигналы).

Примечание

Управление путями и проверка пакетов всегда происходят одновременно.

Преимущества протокола Stream Control Transmission Protocol

Как протокол транспортного уровня, SCTP конкурирует в первую очередь с уже упомянутыми протоколами TCP и UDP. Однако обзор реализованных функций и свойств SCTP показывает, что он не заменяет ни один из протоколов, а скорее объединяет их. В следующей таблице приведены данные о том, в каких аспектах протокол Stream Control Transmission Protocol более похож на протокол TCP, а в каких — на протокол UDP:

Между TCP и SCTP есть три важных сходства: оба протокола требуют наличия соединения между партнерами по коммуникации, предлагают механизм контроля перегрузки, а также являются надежными — оба гарантируют, что пакеты придут к получателю без потерь. UDP не обеспечивает такой гарантии из-за отсутствия подтверждающих сообщений. В свою очередь, UDP избавляет пользовательское приложение от необходимости устанавливать собственные маркеры записи данных (для обозначения границ пакетов), поскольку он ориентирован не на байты, а на сообщения — преимущество, которым обладает и SCTP.

Помимо этой гибкости, которая делает SCTP идеальным решением для услуг передачи голоса, таких как VoIP (Voice over IP), протокол также набирает очки благодаря поддержке многопотоковой передачи и мультихоминга (отказоустойчивость вместо альтернативных хостов), чего не предлагают ни UDP, ни TCP. Кроме того, протокол Stream Control Transmission Protocol с четырехсторонним рукопожатием (включая аутентификационный cookie) и обязательной меткой проверки в заголовке каждого отправляемого пакета обеспечивает наивысшую безопасность среди всех трех транспортных протоколов.

Оцените статью
cdelat.ru
Добавить комментарий