Набор интернет-протоколов |
---|
Уровень приложения |
Транспортный уровень |
|
Интернет-уровень |
Связующий слой |
|
|
Протокол управления передачей потока ( SCTP) представляет собой компьютерный сетевой протокол связи в транспортном уровне в протоколов Интернет. Первоначально предназначенный для передачи сообщений Системы сигнализации 7 (SS7) в телекоммуникациях, протокол обеспечивает ориентированную на сообщения функцию протокола дейтаграмм пользователя (UDP), обеспечивая при этом надежную последовательную транспортировку сообщений с контролем перегрузки, например протокол управления передачей ( TCP). В отличие от UDP и TCP, протокол обеспечивает множественную адресацию и избыточные пути для повышения устойчивости и надежности. SCTP стандартизирован Инженерной группой Интернета (IETF) в RFC 4960. Эталонная реализация SCTP была выпущена как часть FreeBSD версии 7 и с тех пор широко переносится на другие платформы.
Рабочая группа IETF Signaling Transport ( SIGTRAN ) определила протокол (номер 132) в октябре 2000 года, а рабочая группа IETF Transport Area (TSVWG) поддерживает его. RFC 4960 определяет протокол. RFC 3286 предоставляет введение.
Приложения SCTP отправляют данные для передачи в сообщениях (группах байтов) на транспортный уровень SCTP. SCTP помещает сообщения и управляющую информацию в отдельные блоки ( блоки данных и блоки управления), каждый из которых идентифицируется заголовком блока. Протокол может фрагментировать сообщение на несколько блоков данных, но каждый блок данных содержит данные только из одного пользовательского сообщения. SCTP объединяет фрагменты в пакеты SCTP. Пакет SCTP, который передается по Интернет-протоколу, состоит из заголовка пакета, управляющих блоков SCTP (при необходимости), за которыми следуют блоки данных SCTP (при их наличии).
SCTP может быть охарактеризован как ориентированный на сообщения, что означает, что он транспортирует последовательность сообщений (каждое из которых представляет собой группу байтов), а не транспортирует непрерывный поток байтов, как в TCP. Как и в UDP, в SCTP отправитель отправляет сообщение за одну операцию, и это точное сообщение передается процессу принимающего приложения за одну операцию. Напротив, TCP - это поточно-ориентированный протокол, надежно и по порядку передающий потоки байтов. Однако TCP не позволяет получателю узнать, сколько раз приложение-отправитель вызывало транспорт TCP, передавая ему группы байтов для отправки. У отправителя TCP просто добавляет больше байтов в очередь байтов, ожидающих выхода по сети, вместо того, чтобы хранить очередь отдельных отдельных исходящих сообщений, которые должны быть сохранены как таковые.
Термин « многопоточность» относится к способности SCTP передавать несколько независимых потоков фрагментов параллельно, например передавать изображения веб-страниц одновременно с текстом веб-страницы. По сути, он включает объединение нескольких соединений в одну ассоциацию SCTP, оперируя сообщениями (или фрагментами), а не байтами.
TCP сохраняет порядок байтов в потоке, включая порядковый номер байта в каждый сегмент. SCTP, с другой стороны, назначает порядковый номер или идентификатор сообщения каждому сообщению, отправляемому в потоке. Это позволяет независимо упорядочивать сообщения в разных потоках. Однако порядок сообщений в SCTP не является обязательным; получающее приложение может выбрать обработку сообщений в порядке получения, а не в порядке отправки.
Возможности SCTP включают:
Разработчики SCTP изначально предназначались для передачи телефонии ( система сигнализации 7 ) по Интернет-протоколу с целью дублирования некоторых атрибутов надежности сигнальной сети SS7 в IP. Эта работа IETF известна как SIGTRAN. Тем временем были предложены другие варианты использования, например протокол Diameter и надежный пул серверов (RSerPool).
TCP является основным средством надежной передачи данных через Интернет. Однако TCP наложил ограничения на несколько приложений. Из RFC 4960 :
Принятие было замедлено из-за недостаточной осведомленности, отсутствия реализаций (особенно в Microsoft Windows), отсутствия поддержки приложений и отсутствия поддержки сети.
SCTP предоставляет избыточные пути для повышения надежности.
SCTP множественная адресацияКаждый конец SCTP, точка должна проверить достижимость первичных и избыточных адреса удаленной конечной точки, используя сердцебиение. Каждая конечная точка SCTP должна подтверждать контрольные пакеты, которые она получает от удаленной конечной точки.
Когда SCTP отправляет сообщение на удаленный адрес, исходный интерфейс будет определяться только таблицей маршрутизации хоста (а не SCTP).
При асимметричной множественной адресации одна из двух конечных точек не поддерживает множественную адресацию.
В режимах «Локальная множественная адресация» и «Удаленная одиночная адресация», если удаленный первичный адрес недоступен, ассоциация SCTP не выполняется, даже если возможен альтернативный путь.
Асимметричное множественное возвращение в исходное положение: локальное множественное возвращение в исходное положение - удаленное одиночное возвращение в исходное положение
|
Пакет SCTP состоит из двух основных разделов:
Каждый блок начинается с однобайтового идентификатора типа, из которых 15 типов блоков определены в RFC 4960 и по крайней мере еще пять определены дополнительными RFC. Восемь битов флага, поле длиной два байта и данные составляют оставшуюся часть блока. Если фрагмент не кратен 4 байтам (т. Е. Длина не кратна 4), то он дополняется нулями, которые не включаются в длину фрагмента. Поле длины в два байта ограничивает длину каждого блока до 65 535 байтов (включая поля типа, флагов и длины).
Хотя шифрование не было частью исходной конструкции SCTP, SCTP был разработан с функциями для повышения безопасности, такими как четырехстороннее рукопожатие (по сравнению с трехсторонним рукопожатием TCP ) для защиты от атак SYN-лавинной рассылки и большие файлы cookie для проверки ассоциации. и подлинность.
Надежность также была ключевой частью системы безопасности SCTP. Множественная адресация позволяет ассоциации оставаться открытой даже при отключении некоторых маршрутов и интерфейсов. Это особенно важно для SIGTRAN, поскольку он передает SS7 по IP-сети с использованием протокола SCTP и требует высокой устойчивости во время сбоев связи для поддержания телекоммуникационных услуг даже при длительных сетевых аномалиях.
SCTP иногда является хорошим кандидатом для снятия отпечатков пальцев. Некоторые операционные системы поставляются с включенной поддержкой SCTP, и, поскольку он не так хорошо известен как TCP или UDP, его иногда упускают из виду в конфигурациях брандмауэра и обнаружения вторжений, таким образом часто разрешая зондирование трафика.
Эталонная реализация SCTP работает во FreeBSD, Mac OS X, Microsoft Windows и Linux.
Следующие операционные системы реализуют SCTP:
Сторонние драйверы:
Библиотека пользовательского пространства :
Следующие приложения реализуют SCTP:
При отсутствии собственной поддержки SCTP в операционных системах можно туннелировать SCTP через UDP, а также сопоставлять вызовы TCP API с вызовами SCTP, чтобы существующие приложения могли использовать SCTP без изменений.