SCTP

Кај компјутерските мрежи,  **Stream Control Transmission Protocol** (**SCTP**) е протокол (број 132) на транспортно ниво, и има слична улога со познатите протоколи: Transmission Control Protocol (TCP) and User Datagram Protocol (UDP). SCTP обезбедува некои слични услуги како овие два протоколи: тој е ориентриан кон пораките како UDP и орбезбедува сигурност во секвенцијалната размена на пораки со контролата на застој како TCP.

Протоколот е утврден од работната група на IETF Signaling Transport (SIGTRAN) во 2000,, а го одржува работната група на IETF Transport Area (TSVWG). RFC 4960 го дефинира протоколот.

При отсуство на вградена SCTP поддршка кај оперативните системи, SCTP се тунелира преку UDP, како и мапирање на TCP API повиците во SCTP повици.

## Message-based multi-streaming
SCTP апликациите ги доставуваат нивните податоци до SCTP траснспортното ниво за да бидат пренесени во пораки(групи од бајти). SCTP, пораките и контролните информации ги сместува во одделни парчиња(податочни парчиња и контролни парчиња, секој препознатлив по својот наслов. Овој протокол може да ја подели пораката на неколку податочни парчиња, при што секој податочен дел содржи податоци од само еден корисник на пораки. SCTP ги групира парчињата во SCTP пакети. SCTP пакетите, кои се доставуваат до интернет протоколот, се состојат од: наслов на пакетот, SCTP контролни парчиња (кога е неопходно), проследно со SCTP податочни парчиња (кога се достапни).
SCTP може да се одликува како порака-ориентиран, што значи дека пренесува секвенца од пораки(секоја од нив е група од бајти), наместо пренесување на непрекинат поток од бајти како што е случај со TCP. Како и UDP, кај SCTP испраќачот испраќа порака со една операциајa. Спротивно на SCTP, TCP е поток-ориентиран протокол, пренесувајќи потоци од бајти безбедно и по редослед. Сепак, TCP не му дава на знаење на примачот колку пати е повикана испраќачката апликација во TCP сообраќајот при протекувањето на група од бајти кои треба да бидат испратени.
 
Терминот *мулти-стриминг* се однесува на способноста на SCTP паралелно да се пренесуваат потоци, на пример, преносот на web фотографии заедно со текстот на страната.  Во суштина, тоа вклучува градење на неколку врски во една SCTP асоцијација, кои работат со пораки(или парчиња) наместо со бајти.

TCP го зачувува редоследот на бајти во потокот преку доделување на секвенцијален број на секој пакет. Од друга страна, SCTP доделува секвенцијален број на секоја испратена *порака* во потокот. Ова овозможува различен редослед на пораките во различни потоци. Меѓутоа, подредувањето на пораките не е задолжително во SCTP; апликацијата за примање пораки може да избере да ги обработува пораките по редослед на примање, наместо по редослед како биле испратени.

## Особености
Одлики на SCTP:
* Повеќенасочност каде една илли двете крајни точки на врската може да имаат повеќе од една IP-адреса, овозможувајќи им трансапрентен fail-over помеѓу редундантни мрежни патеки.
* Достава на парчиња во рамките на независни потоци го елиминираат непотребното head-of-line блокирање, што е спротивно на испораката кај TCP бајт-потоци.
* Селекцијата на патека и мониторингот избираат примарна патека за пренос на податоците и ја тестираат врската на патеката за пренос.
* Механизмите за проверка и потврда заштитуваат од преплавување на напади и даваат известувања за податочни парчиња кои недостасуваат или се повторуваат.
* Подобрената детекција на грешки е погодна за Ethernet џамбо рамки.

творците на SCTP,  го дизајнираат SCTP со првична намена за пренос на телефонија(Signaling System 7) преку Интернет протокол, со цел да се повторат некои од доверливите атрибути на SS7 сигнализациската мрежа во IP. Овој IETF обид е познат како SIGTRAN. Во меѓувреме, беа предложени други протоколи, на пример, Пречник протоколот and Reliable server pooling (RSerPool).

## Мотивации
TCP ја имаше остварено примарната цел да пренесува безбедно податоци преку Интернет, но TCP имаше поставено ограничувања на некои апликации. Од RFC 4960: 

## Структура на пакет

SCTP пакетите имаат поедноставна основна структура од TCP пакетите. Секој пакет се состои од два основни дела:
# *Заеднички наслов*, кој ги зафаќа првите 12 бајти и е означен сино, и
# *Парчиња од податоци*, кои го зафаќаат останатиот дел од пакетот. Првото парче е означен со зелена, а последниот од *N*-те парчиња (Парчето N) е означен со црвена боја.

Секое парче има тип-идентификатор, кој е со големина од еден бајт, најчесто, постојат 255 различни податочни типови.  RFC 4960 дефинира листа од податочни типовви и до сега има дефинирано 15 типа. Остатокот од парчето е со должина од 2 бајта(максимална големина од 65,535 бајти), и податоците. Ако парчето не е поголемо од 4 бајти(т.е. должината не му е повеќе од 4), тогаш парчето е имплицитно пополнето со нули кои не се вклучени во должината на парчето.

## Безбедност
Иако криптирањето не беше дел од оригиналниот дизајн на SCTP, сепак SCTP беше дизајниран со одлики кои ја подобруваат безбедноста, како што е 4-насочноторакување (споредено со 3-насочното ракување на TCP) за заштита од SYN полава од напади, и долги "колачиња" за здружена верификација и автентичност.

Исто така, доверливоста беше клучен дел од безбедносниот дизајн на SCTP.  Повеќенасочноста овозможува асоцијацијата да остане отворена дури и кога некои рути и интерфејси се паднати. Ова е од особено значење за SIGTRAN кој го пренесува SS7 преку една IP мрежа користејќи SCTP, и бара силна отпорност за време на паѓање на врската за да може да се одржи телекомуникациската услуга, дури и кога се случуваат мрежни аномалии.

SCTP понекогаш е добар fingerprinting кандидат. Некои оперативни системи овозможуваат SCTP поддршка, но ако таа не е добро позната како TCP или UDP, се случува е занемарена од огнениот ѕид, и тогаш најчесто се дозволува испробувачки пренос.

## Имплементации
Референтната SCTP имплементација работи на FreeBSD, Mac OS X, Windows, Linux.

Следните оперативни системи имплементираат SCTP:
* AIX верзија 5 и понови
* Генерик BSD со надворешен печ во KAME project
* Cisco IOS 12
* DragonFly BSD од верзија 1.4
* FreeBSD, верзија 7 и нагоре, ја содржат референтната SCTP имплемнтација
* HP-UX, 11 и в2 и нагоре
* Linux кернел-ориентиран 2.4 и понови
* QNX Neutrino Realtime OS, 6.3.0 до 6.3.2, но не 6.4.0, и нагоре
* Sun Solaris 10 и погоре
* VxWorks верзија 6.2.x до 6.4.x, и 6.7 и понови
* Microsoft Windows:
** SctpDrv јадрениот драјвер е порта на BSD SCTP стекот на Windows

Корисничка библиотека:
* SCTP библиотека
** Windows XP порта
* Oracle Java SE 7

## RFC историја
* RFC 6525 Stream Control Transmission Protocol (SCTP) Stream Reconfiguration
* RFC 6458 Sockets API Extensions for the Stream Control Transmission Protocol (SCTP)
* RFC 6096 Stream Control Transmission Protocol (SCTP) Chunk Flags Registration (updates RFC 4960)
* RFC 5062 Security Attacks Found Against the Stream Control Transmission Protocol (SCTP) and Current Countermeasures
* RFC 5061 Stream Control Transmission Protocol (SCTP) Dynamic Address Reconfiguration
* RFC 5043 Stream Control Transmission Protocol (SCTP) Direct Data Placement (DDP) Adaptation
* RFC 4960 Stream Control Transmission Protocol
* RFC 4895 Authenticated Chunks for the Stream Control Transmission Protocol (SCTP)
* RFC 4820 Padding Chunk and Parameter for the Stream Control Transmission Protocol (SCTP)
* RFC 4460 Stream Control Transmission Protocol (SCTP) Specification Errata and Issues
* RFC 3873 Stream Control Transmission Protocol (SCTP) Management Information Base (MIB)
* RFC 3758 Stream Control Transmission Protocol (SCTP) Partial Reliability Extension
* RFC 3554 On the Use of Stream Control Transmission Protocol (SCTP) with IPsec
* RFC 3436 Transport Layer Security over Stream Control Transmission Protocol
* RFC 3309 Stream Control Transmission Protocol (SCTP) Checksum Change (obsoleted by RFC 4960)
* RFC 3286 An Introduction to the Stream Control Transmission Protocol
* RFC 3257 Stream Control Transmission Protocol Applicability Statement
* RFC 2960 Stream Control Transmission Protocol (updated by RFC 3309 and obsoleted by RFC 4960)

## Поврзано
* Transport protocol comparison table
* Session initiation protocol (SIP), кој може да иницира повеќе потоци преку SCTP, TCP или UDP
## Наводи

## Надворешни врски
* http://www.sigtran.org
* http://www.ietf.org/html.charters/sigtran-charter.html
* http://www.ietf.org/html.charters/tsvwg-charter.html
* http://www.openss7.org
* SCTP workgroup for Linux
* Michael Tüxen's SCTP Page
* Lode Coene's SCTP Page
* Thomas Dreibholz's SCTP Project Page 

Категорија:Стриминг
Категорија:IИнтернет стандарди
Категорија:Протоколи на транспортно ниво
Категорија:Повеќенасочност
Категорија:Гени на хромозомот 2