Кај компјутерските мрежи, **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: 

> 
> * TCP ги обезбедуваше и двете, и сигурен пренос на податоци и строг редослед на пренос при испраќање на податоците. Некои апликации имаат птореба од сигурен пренос без добар редослед на секвенците, додека други ќе бидат задоволни со делумно подредување на податоците. И во двата случаја, head-of-line блокирањето понудено од TCP предизвикува непотребно одложување.
> * Поток-ориентираната природа на TCP, често е непријатна. Апликациите мора сами да вметнуваат свое обележување за разграничување на пораките, и мора да направат експлицитна употреба на push facility за да се осигураат дека целата порака е пренесена во дозволеното време на одговор.
> * Ограничениот опсег на TCP приклучниците ја комплицира задачата за обезбедување на високо достапен капацитет за пренос на податоци користејќи повеќе-мрежни домаќини.
> * TCP е релативно подложен на одбивање-на-услуга напади, како што се SYN нападите.
> 
> 
> 
>   
> 
> 
> 
>

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

Главна статија: SCTP packet structure

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| Бита | 0–7 | 8–15 | 16–23 | 24–31 |
| --- | --- | --- | --- | --- |
| +0 | Изворна порта | Дестинациска порта |
| 32 | Ознака за верификација |
| 64 | Проверка на сума |
| 96 | Парче 1 тип | Парче 1 знаме | Парче 1 должина |
| 128 | Парче 1 податок |
| … | … |
| … | Парче N тип | Парче N знаме | Парче N должина |
| … | Парче N податок |

 |

SCTP пакетите имаат поедноставна основна структура од TCP пакетите. Секој пакет се состои од два основни дела:

1. *Заеднички наслов*, кој ги зафаќа првите 12 бајти и е означен сино, и
2. *Парчиња од податоци*, кои го зафаќаат останатиот дел од пакетот. Првото парче е означен со зелена, а последниот од *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

Наводи
------

1. ↑
2. ↑  RFC 2960 October 2000
3. ↑   (March 2000). "*Tunneling of SCTP over Single UDP Port*". IETF.  (консултирано на 2011-07-15) Архивирано на 22 март 2007 г. „архивска копија". Архивирано од изворникот на 2007-03-22. Посетено на 2013-09-19.CS1-одржување: бот: непознат статус на изворната URL (link)
4. ↑  Bickhart, Ryan; Paul D. Amer; Randall R. Stewart (2007). „Transparent TCP-to-SCTP Translation Shim Layer" (PDF). Посетено на 2008-09-13.
5. ↑  "Transport". *Diameter Base Protocol*. IETF. sec. 2.1. RFC 3588.. Retrieved 2012-05-18.
6. ↑  RFC 5351 Section 4.2
7. ↑  The SCTP reference implementation
8. ↑  „About FreeBSD's Technological Advances". The FreeBSD Project. 2008-03-09. Посетено на 2008-09-13. SCTP: FreeBSD 7.0 is the reference implementation for the new IETF Stream Control Transmission Protocol (SCTP) protocol, intended to support VoIP, telecommunications, and other applications with strong reliability and variable quality transmission through features such as multi-path delivery, fail-over, and multi-streaming.
9. ↑  „Stream Control Transmission Protocol (SCTP)". Hewlett-Packard Development Company. Архивирано од изворникот на 2013-01-03. Посетено на 2013-09-19.
10. ↑  „TCP/IP Networking". *QNX Developer Support*. QNX Software Systems. Посетено на 2008-09-13.
11. ↑  „What's New in this Reference". *QNX Library Reference*. QNX Software Systems. Посетено на 2012-12-18.
12. ↑  „Solaris 10 Operating System Networking — Extreme Network Performance". Sun Microsystems. Архивирано од изворникот на 2009-04-20. Посетено на 2008-09-13.
13. ↑  „SctpDrv: an SCTP driver for Microsoft Windows". Архивирано од изворникот на 2011-01-08. Посетено на 2011-02-04.
14. ↑  „SCTP Download Page". 2006-05-29. Посетено на 2011-02-04.
15. ↑  „Windows SCTP library installer". Посетено на 2011-02-04.

Надворешни врски
----------------

* 
* 
* 
* 
* SCTP workgroup for Linux
* Michael Tüxen's SCTP Page
* Lode Coene's SCTP Page
* Thomas Dreibholz's SCTP Project Page Архивирано на 26 ноември 2013 г.