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