SCTP
Материал из Википедии — свободной энциклопедии
SCTP (англ. Stream Control Transmission Protocol — «протокол передачи с управлением потоком»), протокол транспортного уровня в компьютерных сетях, родившийся в 2000 году в IETF. RFC 4960 описывает этот протокол, а RFC 3286 содержит техническое вступление к нему.
Как и любой другой протокол передачи данных транспортного уровня, SCTP работает аналогично TCP или UDP[1]. Но на самом деле SCTP имеет в арсенале широкий спектр приятных новшеств, таких как многопоточность, защита от SYN-flood атак, синхронное соединение между двумя хостами по двум и более независимым физическим каналам (multi-homing).
Содержание |
[править] Многопоточность
TCP управляет последовательностью байт: данные, посланные приложением-отправителем, должны поступать приложению-получателю строго в том же порядке (в то время как протокол IP способен поменять последовательность пакетов; кроме того, пропавшие пакеты посылаются повторно и обычно прибывают к получателю с нарушением последовательности; для борьбы с этими явлениями данные накапливаются в буфере). 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 относительно уязвим к атакам класса «Отказ в обслуживании» (DoS), таким как 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
[править] Примечания
- ↑ 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
|
|
|||||||
|---|---|---|---|---|---|---|---|
| Прикладной уровень |
HTTP · DHCP · IRC · SNMP · DNS · NNTP · XMPP · SIP · BitTorrent · IPP · NTP · SNTP
|
||||||
| Уровень представления | XDR | ||||||
| Транспортный уровень | TCP · UDP · SCTP · DCCP · RTP · RUDP | ||||||
| Сетевой уровень | IPv4 · IPv6 · ARP · RARP · ICMP · IGMP | ||||||
| Канальный уровень | Ethernet · 802.11 WiFi · Token ring · FDDI · PPP · HDLC · SLIP · ATM · DTM · X.25 · Frame Relay · SMDS | ||||||
| Физический уровень | Ethernet · RS-232 · EIA-422 · RS-449 · EIA-485 | ||||||
| Это незавершённая статья о компьютерных сетях. Вы можете помочь проекту, исправив и дополнив её. |

