- Stream Control Transmission Protocol
-
SCTP (англ. Stream Control Transmission Protocol — «протокол передачи с управлением потоком»), протокол транспортного уровня в компьютерных сетях, родившийся в 2000 году в RFC 4960 описывает этот протокол, а RFC 3286 содержит техническое вступление к нему.
Как и любой другой протокол передачи данных транспортного уровня, SCTP работает аналогично UDP[1]. Но на самом деле SCTP имеет в арсенале широкий спектр приятных новшеств, таких как многопоточность, защита от
Содержание
Многопоточность
последовательностью байт: данные, посланные приложением-отправителем, должны поступать приложению-получателю строго в том же порядке (в то время как протокол IP способен поменять последовательность пакетов; кроме того, пропавшие пакеты посылаются повторно и обычно прибывают к получателю с нарушением последовательности; для борьбы с этими явлениями данные накапливаются в буфере). SCTP может транспортировать данные между двумя точками одновременно по нескольким потокам сообщений. В противоположность к сообщения, а не обычные байты информации. Это означает, что если отправитель отсылает серверу сообщение, состоящее из 100 байт за первый шаг, а за ним ещё 50 байт, то получатель за первый шаг получит именно первые 100 байт в первом сообщении, а только затем и только 50 байт на второй операции чтения из сокета.
Термин "многопоточность" (англ. multi-streaming) обозначает способность SCTP параллельно передавать по нескольким независимым потокам сообщений. Например, мы передаем несколько фотографий через приложение (например браузер). Можно использовать для этого связку из нескольких SCTP-ассоциация (англ. SCTP-association), управляющее несколькими потоками сообщений для этой цели.
TCP достигает правильного порядка байт в потоке, абстрактно назначая порядковый номер каждой отосланной единице, а упорядочивая принятые байты, используя назначенные порядковые номера, по мере их прибывания. С другой стороны, SCTP присваивает различные порядковые номера сообщениям, посылаемым в конкретном потоке. Это разрешает независимое упорядочивание сообщений по разным потокам. Так или иначе, многопоточность является опцией в SCTP. В зависимости от желаний пользовательского приложения, сообщения могут быть обработаны не в порядке их отправления, а в порядке их поступления.
Достоинства
Достоинства использования SCTP включают в себя:
- Использование множественных интерфейсов (англ Multihoming)
Допустим, у нас есть два хоста. И хотя бы один из них имеет несколько сетевых интерфейсов, и соответственно несколько IP-адресов. В TCP, понятие "соединение" означает обмен данными между двумя точками, в то время, как в SCTP имеет место концепция "ассоциации" (англ. association), обозначащая всё происходящее между двумя хостами
- Многопоточность
Данные приходят в точку по независимым потокам. Это позволяет устранить феномен en:Head-of-line blocking, которым так страдает Протоколом выбирается первичный маршрут передачи данных, а также производится проверка и мониторинг связности пути. - Механизмы валидации и проверки подлинности
Защита адресата от flood-атак (технология 4-way handshake), и уведомление о потерянных пакетах и нарушенных цепочках. - Улучшенная система контроля ошибок, подходящая для jumbo-пакетов в SS7) по протоколу
Причины появления
предоставляет основные средства для передачи данных по сети Internet по надежному пути. Однако TCP накладывает некоторые ограничения на транспорт данных:
- TCP предоставляет надежную передачу данных в строгой последовательности. Тем не менее одни приложения требуют передачу без управления и контроля последовательности, а другие будут вполне удовлетворены частичной упорядоченностью данных. Оба этих случая страдают из-за ненужных задержек, связанных с восстановлением и упорядочиванием нарушенных последовательностей TCP.
- Природа TCP ориентирована на поток байт, что вызывает неудобства. Приложения вынуждены самостоятельно добавлять собственные маркеры в пакеты, чтобы распараллелить передачу собственных сообщений, а так же использовать дополнительные ухищрения, чтобы убедиться в том, что целое сообщение было доставлено за определенное время.
- Ограниченные рамки возможностей хостам по нескольким каналам связи (см. multi-homing выше).
- TCP относительно уязвим к атакам класса «Отказ в обслуживании» (DoS), таким как телефонных сетей через
Сравнение возможностей протоколов транспортного уровня
Параметр UDP TCP SCTP Установка соединения Нет Да Да Надежная передача Нет Да Да Сохранение границ сообщения Да Нет Да Упорядоченная доставка Нет Да Да Неупорядоченная доставка Да Нет Да Контрольные суммы данных Да Да Да Размер контрольной суммы (бит) 16 16 32 Путь MTU Нет Да Да Управление накоплением Нет Да Да Многопоточность Нет Нет Да Поддержка множественных интерфейсов Нет Нет Да Связка потоков Нет Да Да Структура пакета
Реализации
SCTP реализован в
- Linux 2.4 и выше
- Sun Solaris 10
- Cisco
- DragonFly BSD начиная с версии 1.4
- (с внешним дополнением от проекта KAME)
- AIX 5
Примечания
- ↑ TCP и UDP работают столь различно, что проводить аналогию к ним обоим некоректно. Вся аналогия - в том, что SCTP, TCP и UDP относятся к одному и тому же уровню модели OSI.
Ссылки
- RFC 3286
- http://www.sigtran.org
- http://www.sctp.org
- http://www.openss7.org
- http://www.sctp.de
- SCTP for Beginners
- SeveNTest онлайн декодер сообщений TCP/IP
- Использование множественных интерфейсов (англ Multihoming)
Wikimedia Foundation. 2010.