<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://www.aidalinux.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=SCTP</id>
	<title>SCTP - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://www.aidalinux.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=SCTP"/>
	<link rel="alternate" type="text/html" href="http://www.aidalinux.ru/wiki/index.php?title=SCTP&amp;action=history"/>
	<updated>2026-04-24T10:22:14Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://www.aidalinux.ru/wiki/index.php?title=SCTP&amp;diff=263&amp;oldid=prev</id>
		<title>Langator в 14:06, 27 июня 2011</title>
		<link rel="alternate" type="text/html" href="http://www.aidalinux.ru/wiki/index.php?title=SCTP&amp;diff=263&amp;oldid=prev"/>
		<updated>2011-06-27T14:06:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 14:06, 27 июня 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l57&quot; &gt;Строка 57:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 57:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Шифрование не является частью оригинального дизайна SCTP.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Шифрование не является частью оригинального дизайна SCTP.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;В некоторых случаях SCTP является хорошим кандидатом для &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;{{translation|:en:&lt;/del&gt;TCP/IP stack fingerprinting&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;|Цифровой отпечаток стэка TCP/IP|&lt;/del&gt;проверки на прочность стэка TCP/IP&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;}}&lt;/del&gt;. Причиной для этого является тот факт, что некоторые операционные системы распространяются с поддержкой протокола SCTP, но ввиду его слабой известности (по сравнению с TCP или UDP), администраторы иногда забывают настроить в брандмауэре обнаружения вторжений, что даёт возможности для сканирования трафика.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;В некоторых случаях SCTP является хорошим кандидатом для TCP/IP stack fingerprinting &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/ins&gt;проверки на прочность стэка TCP/IP&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;)&lt;/ins&gt;. Причиной для этого является тот факт, что некоторые операционные системы распространяются с поддержкой протокола SCTP, но ввиду его слабой известности (по сравнению с TCP или UDP), администраторы иногда забывают настроить в брандмауэре обнаружения вторжений, что даёт возможности для сканирования трафика.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Сравнение возможностей протоколов транспортного уровня ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Сравнение возможностей протоколов транспортного уровня ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l235&quot; &gt;Строка 235:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 235:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* http://tdrwww.exp-math.uni-essen.de/inhalt/forschung/sctp_fb/sctp_intro.html&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* http://tdrwww.exp-math.uni-essen.de/inhalt/forschung/sctp_fb/sctp_intro.html&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://decoder.seventest.com/cgi-bin/decoder?family=TCP/IP SeveNTest онлайн декодер сообщений TCP/IP]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://decoder.seventest.com/cgi-bin/decoder?family=TCP/IP SeveNTest онлайн декодер сообщений TCP/IP]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{IPstack}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{compu-net-stub}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:TCP/IP]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:TCP/IP]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Интернет-протоколы]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Интернет-протоколы]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Langator</name></author>
	</entry>
	<entry>
		<id>http://www.aidalinux.ru/wiki/index.php?title=SCTP&amp;diff=240&amp;oldid=prev</id>
		<title>Langator в 18:15, 16 июня 2011</title>
		<link rel="alternate" type="text/html" href="http://www.aidalinux.ru/wiki/index.php?title=SCTP&amp;diff=240&amp;oldid=prev"/>
		<updated>2011-06-16T18:15:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://www.aidalinux.ru/wiki/index.php?title=SCTP&amp;amp;diff=240&amp;amp;oldid=239&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Langator</name></author>
	</entry>
	<entry>
		<id>http://www.aidalinux.ru/wiki/index.php?title=SCTP&amp;diff=239&amp;oldid=prev</id>
		<title>Langator: Новая страница: «'''SCTP''' ({{lang-en|Stream Control Transmission Protocol}} — «протокол передачи с управлением потоком»), [[сетевой п...»</title>
		<link rel="alternate" type="text/html" href="http://www.aidalinux.ru/wiki/index.php?title=SCTP&amp;diff=239&amp;oldid=prev"/>
		<updated>2011-06-16T18:02:44Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&amp;#039;&amp;#039;&amp;#039;SCTP&amp;#039;&amp;#039;&amp;#039; ({{lang-en|Stream Control Transmission Protocol}} — «протокол передачи с управлением потоком»), [[сетевой п...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''SCTP''' ({{lang-en|Stream Control Transmission Protocol}} — «протокол передачи с управлением потоком»), [[сетевой протокол | протокол]] [[Транспортный уровень | транспортного уровня]] в [[Компьютерные сети|компьютерных сетях]], появившийся в [[2000 год]]у в [[IETF]]. [http://tools.ietf.org/html/rfc4960 RFC 4960] описывает этот протокол, а [http://tools.ietf.org/html/rfc3286 RFC 3286] содержит техническое вступление к нему.&lt;br /&gt;
&lt;br /&gt;
Как и любой другой протокол передачи данных транспортного уровня, SCTP работает аналогично [[TCP]] или [[UDP]] &amp;lt;ref&amp;gt;TCP и UDP работают столь различно, что проводить аналогию к ним обоим некорректно. Вся аналогия — в том, что SCTP​​, TCP и UDP относятся к одному и тому же уровню модели OSI.&amp;lt;/ref&amp;gt;. Но на самом деле SCTP имеет в арсенале широкий спектр приятных нововведений, таких как многопоточность, защита от [[SYN-flood]] атак, синхронное соединение между двумя хостами по двум и более независимым физическим каналам (multi-homing).&lt;br /&gt;
&lt;br /&gt;
== Безопасное установление подключения ==&lt;br /&gt;
Создание нового подключения в протоколах TCP и SCTP происходит при помощи механизма подтверждения (квитирования) пакетов. В протоколе TCP данная процедура получила название трехэтапное квитирование (three-way handshake). Клиент посылает пакет SYN (сокр. Synchronize). Сервер отвечает пакетом SYN-ACK (Synchronize-Acknowledge). Клиент подтверждает прием пакета SYN-ACK пакетом ACK. На этом процедура установления соединения завершается.&lt;br /&gt;
&lt;br /&gt;
Протокол TCP имеет потенциальную уязвимость, обусловленную тем, что нарушитель, установив фальшивый IP-адрес отправителя, может послать серверу множество пакетов SYN. При получении пакета SYN сервер выделяет часть своих ресурсов для установления нового соединения. Обработка множества пакетов SYN рано или поздно, затребует все ресурсы сервера и сделает невозможным обработку новых запросов Такая атака получила название «отказ в обслуживании» (Denial of Service (DoS)).&lt;br /&gt;
&lt;br /&gt;
Протокол SCTP защищен от подобных атак с помощью механизма четырехэтапного квитирования (four-way handshake) и вводом маркера (cookie). По протоколу SCTP клиент начинает процедуру установления соединения посылкой пакета INIT. В ответ сервер посылает пакет INIT-ACK, который содержит маркер (уникальный ключ, идентифицирующий новое соединение). Затем клиент отвечает посылкой пакета COOKIE-ECHO, в котором содержится маркер, посланный сервером. Только после этого сервер выделяет свои ресурсы новому подключению и подтверждает это отправлением клиенту пакета COOKIE-ACK.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Безопасность_устанавливаемого_подключения.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для решения проблемы задержки пересылки данных при выполнении процедуры четырехэтапного квитирования в протоколе SCTP допускается включение данных в пакеты COOKIE-ECHO и COOKIE-ACK.&lt;br /&gt;
&lt;br /&gt;
== Поэтапное завершение передачи данных ==&lt;br /&gt;
Рассмотрим отличия между процедурой закрытия сокетов протокола SCTP и процедурой частичного закрытия (half-close) протокола TCP.&lt;br /&gt;
&lt;br /&gt;
В протоколе TCP возможна ситуация, когда узел закрывает у себя сокет (выполняя посылку пакета FIN), но продолжает принимать данные. Пакет FIN указывает корреспонденту на отсутствие данных для передачи, однако до тех пор, пока корреспондент не закроет свой сокет, он может продолжать передавать данные. Состояние частичного закрытия используется приложениями крайне редко, поэтому разработчики протокола SCTP посчитали нужным заменить его последовательностью сообщений для разрыва существующей ассоциации. Когда узел закрывает свой сокет (посылает сообщение SHUTDOWN), оба корреспондента должны прекратить передачу данных, при этом разрешается лишь обмен пакетами, подтверждающими прием ранее отправленных данных.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Поэтапное_завершение_передачи_данных.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
== Многопоточность ==&lt;br /&gt;
[[TCP]] управляет [[последовательность]]ю [[байт]]: данные, посланные приложением-отправителем, должны поступать приложению-получателю строго в том же порядке (в то время как протокол IP способен поменять последовательность пакетов; кроме того, пропавшие пакеты посылаются повторно и обычно прибывают к получателю с нарушением последовательности; для борьбы с этими явлениями данные накапливаются в буфере). SCTP может транспортировать [[данные]] между двумя [[точка]]ми одновременно по нескольким [[поток]]ам ''сообщений''. В противоположность к [[TCP]], SCTP обрабатывает целые ''сообщения'', а не обычные байты [[Информация|информации]]. Это означает, что если отправитель отсылает серверу ''сообщение'', состоящее из 100 байт за первый шаг, а за ним ещё 50 байт, то получатель за первый шаг получит именно первые 100 байт в первом сообщении, а только затем и только 50 байт на второй операции чтения из [[сокет]]а.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Многопотоковая передача данных.jpg]]&lt;br /&gt;
&lt;br /&gt;
Термин «многопоточность» (англ. ''multi-streaming'') обозначает способность SCTP параллельно передавать по нескольким независимым потокам ''сообщений''. Например, мы передаем несколько [[Фотография|фотографий]] через [[HTTP]]-[[приложение]] (например [[браузер]]). Можно использовать для этого связку из нескольких [[TCP]]-соединений, однако также допустимо ''SCTP-ассоциация'' (англ. ''SCTP-association''), управляющее несколькими [[поток]]ами сообщений для этой цели.&lt;br /&gt;
&lt;br /&gt;
TCP достигает правильного порядка байт в потоке, абстрактно назначая порядковый номер каждой отосланной единице, а упорядочивая принятые байты, используя назначенные порядковые номера, по мере их прибывания. С другой стороны, SCTP присваивает различные порядковые номера сообщениям, посылаемым в конкретном ''[[поток]]е''. Это разрешает независимое упорядочивание сообщений по разным потокам. Так или иначе, [[многопоточность]] является опцией в SCTP. В зависимости от желаний пользовательского приложения, сообщения могут быть обработаны не в порядке их отправления, а в порядке их поступления.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
Достоинства использования SCTP включают в себя:&lt;br /&gt;
* Использование множественных интерфейсов (англ ''Multihoming'')&amp;lt;br /&amp;gt;Допустим, у нас есть два [[хост]]а. И хотя бы один из них имеет несколько сетевых интерфейсов, и соответственно несколько IP-адресов. В TCP, понятие «соединение» означает обмен данными между двумя точками, в то время, как в SCTP имеет место концепция «ассоциации» (англ. ''association''), обозначащая всё происходящее между двумя хостами&lt;br /&gt;
[[Файл:SCTP.multi-homing.svg]]&lt;br /&gt;
* Многопоточность&amp;lt;br /&amp;gt;Данные приходят в точку по независимым потокам. Это позволяет устранить феномен [[:en:Head-of-line blocking]], которым так страдает [[TCP]]&lt;br /&gt;
* Поиск пути с мониторингом&amp;lt;br /&amp;gt;Протоколом выбирается ''первичный'' маршрут передачи данных, а также производится проверка и мониторинг связности пути.&lt;br /&gt;
* Механизмы валидации и проверки подлинности&amp;lt;br /&amp;gt;Защита адресата от flood-атак (технология 4-way handshake), и уведомление о потерянных пакетах и нарушенных цепочках.&lt;br /&gt;
* Улучшенная система контроля ошибок, подходящая для jumbo-пакетов в [[Ethernet]].&lt;br /&gt;
&lt;br /&gt;
Часть достоинств вытекает из того факта, что изначально разработчики SCTP проектировали протокол под нужды передачи телефонии ([[SS7]]) по протоколу [[IP]].&lt;br /&gt;
&lt;br /&gt;
== Причины появления ==&lt;br /&gt;
[[TCP|Протокол TCP]] предоставляет основные средства для передачи данных по сети [[Internet]] по надежному пути. Однако TCP накладывает некоторые ограничения на транспорт данных:&lt;br /&gt;
* TCP предоставляет надежную передачу данных в строгой последовательности. Тем не менее одни приложения требуют передачу без управления и контроля последовательности, а другие будут вполне удовлетворены частичной упорядоченностью данных. Оба этих случая страдают из-за ненужных задержек, связанных с восстановлением и упорядочиванием нарушенных последовательностей TCP.&lt;br /&gt;
* Природа TCP ориентирована на поток байт, что вызывает неудобства. Приложения вынуждены самостоятельно добавлять собственные маркеры в пакеты, чтобы распараллелить передачу собственных сообщений, а также использовать дополнительные ухищрения, чтобы убедиться в том, что целое сообщение было доставлено за определенное время.&lt;br /&gt;
* Ограниченные рамки возможностей [[TCP]]-[[сокет]]ов ещё более усложняют задачу предоставления возможности параллельной передачи информации к [[хост]]ам по нескольким каналам связи (см. ''multi-homing'' выше).&lt;br /&gt;
* TCP относительно уязвим к атакам класса «Отказ в обслуживании» ([[DoS]]), таким как [[SYN-flood]].&lt;br /&gt;
&lt;br /&gt;
Все эти ограничения наносят ущерб производительности работы [[Телефонная сеть общего пользования|телефонных сетей]] через [[IP]].&lt;br /&gt;
&lt;br /&gt;
== Безопасность ==&lt;br /&gt;
SCTP был разработан с некоторыми функциями позволяющими повысить безопасности, такими как «4-х кратное рукопожатие» (по сравнению с «трёхкратным рукопожатием» в TCP), чтобы предотвратить [[SYN-flood]] атаки, и больших [[Magic cookie|Cookie]] для проверки подлинности ассоциации.&lt;br /&gt;
&lt;br /&gt;
Надежность была одним из ключевых аспектов разработки безопасности протокола SCTP. Multi-homing позволяет ассоциации оставаться открытой, даже если некоторые используемые маршруты и интерфейсы стали недоступны. Это имеет особое значение для [[SIGTRAN]], который используя SCTP, передаёт сообщения и сервисы протоколов [[ОКС-7]] поверх IP сети, что требует сильной устойчивости во время отключений линков для поддержания телекоммуникационных услуг, даже при серьёзных аномалиях в сети.&lt;br /&gt;
&lt;br /&gt;
Шифрование не является частью оригинального дизайна SCTP.&lt;br /&gt;
&lt;br /&gt;
В некоторых случаях SCTP является хорошим кандидатом для {{translation|:en:TCP/IP stack fingerprinting|Цифровой отпечаток стэка TCP/IP|проверки на прочность стэка TCP/IP}}. Причиной для этого является тот факт, что некоторые операционные системы распространяются с поддержкой протокола SCTP, но ввиду его слабой известности (по сравнению с TCP или UDP), администраторы иногда забывают настроить в [[Межсетевой экран|брандмауэре]] обнаружения вторжений, что даёт возможности для сканирования трафика.&lt;br /&gt;
&lt;br /&gt;
== Сравнение возможностей протоколов транспортного уровня ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Параметр&lt;br /&gt;
! UDP&lt;br /&gt;
! TCP&lt;br /&gt;
! SCTP&lt;br /&gt;
|-&lt;br /&gt;
| Установка соединения&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Надежная передача&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Сохранение границ сообщения&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Упорядоченная доставка&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Неупорядоченная доставка&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Контрольные суммы данных&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Размер контрольной суммы (бит)&lt;br /&gt;
| 16&lt;br /&gt;
| 16&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| Путь MTU&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Управление накоплением &amp;lt;!--Congestion control--&amp;gt;&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Многопоточность&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Поддержка множественных интерфейсов&amp;lt;!-- multihoming --&amp;gt;&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| Связка потоков&lt;br /&gt;
| {{Нет}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формирование кадров сообщения ==&lt;br /&gt;
При формировании кадров сообщения обеспечивается сохранение границ сообщения в том виде, в котором оно передается сокету; это означает, что если клиент посылает серверу 100 байт, за которыми следуют 50 байт, то сервер воспринимает 100 байт и 50 байт за две операции чтения. Точно так же функционирует протокол UDP, это является особенностью протоколов, ориентированных на работу с сообщениями.&lt;br /&gt;
&lt;br /&gt;
В противоположность им протокол TCP обрабатывает неструктурированный поток байт. Если не использовать процедуру формирования кадров сообщения, то узел сети может получать данные по размеру больше или меньше отправленных. Такой режим функционирования требует, чтобы для протоколов, ориентированных на работу с сообщениями и функционирующих поверх протокола TCP, на прикладном уровне был предоставлен специальный буфер данных и выполнялась процедура формирования кадров сообщений (что потенциально является сложной задачей).&lt;br /&gt;
&lt;br /&gt;
Протокол SCTP обеспечивает формирование кадров при передаче данных. Когда узел выполняет запись в сокет, его корреспондент с гарантией получает блок данных того же размера.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Формирование_кадров_сообщения.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Структура пакета ==&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;right&amp;quot; width=&amp;quot;40%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; text-align: center; white-space: nowrap;&amp;quot; nowrap&lt;br /&gt;
|-&lt;br /&gt;
! Биты&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; width=&amp;quot;24%&amp;quot;| Биты 0-7&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; width=&amp;quot;24%&amp;quot;| 8-15&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; width=&amp;quot;24%&amp;quot;| 16-23&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; width=&amp;quot;24%&amp;quot;| 24-31&lt;br /&gt;
|- style=&amp;quot;background-color: #ddddff&amp;quot;&lt;br /&gt;
!+0&lt;br /&gt;
|colspan=&amp;quot;16&amp;quot; style=&amp;quot;text-align: center&amp;quot;|Порт источника&lt;br /&gt;
|colspan=&amp;quot;16&amp;quot; style=&amp;quot;text-align: center&amp;quot;|Порт назначения&lt;br /&gt;
|- style=&amp;quot;background-color: #ddddff&amp;quot;&lt;br /&gt;
! 32&lt;br /&gt;
|colspan=&amp;quot;32&amp;quot; style=&amp;quot;text-align: center&amp;quot;|Тег проверки&lt;br /&gt;
|- style=&amp;quot;background-color: #ddddff&amp;quot;&lt;br /&gt;
! 64&lt;br /&gt;
|colspan=&amp;quot;32&amp;quot; style=&amp;quot;text-align: center&amp;quot;|Контрольная сумма&lt;br /&gt;
|- style=&amp;quot;background-color: #ddffdd&amp;quot;&lt;br /&gt;
! 96&lt;br /&gt;
|style=&amp;quot;text-align: center&amp;quot; colspan=&amp;quot;8&amp;quot;|Тип 1 блока&lt;br /&gt;
|style=&amp;quot;text-align: center&amp;quot; colspan=&amp;quot;8&amp;quot;|Флаги 1 блока&lt;br /&gt;
|colspan=&amp;quot;16&amp;quot; style=&amp;quot;text-align: center&amp;quot;|Длина 1 блока&lt;br /&gt;
|- style=&amp;quot;background-color: #ddffdd&amp;quot;&lt;br /&gt;
! 128&lt;br /&gt;
|colspan=&amp;quot;32&amp;quot; style=&amp;quot;text-align: center&amp;quot;|Данные 1 блока&lt;br /&gt;
|-&lt;br /&gt;
!…&lt;br /&gt;
|colspan=&amp;quot;32&amp;quot; style=&amp;quot;text-align: center&amp;quot;|…&lt;br /&gt;
|- style=&amp;quot;background-color: #ffdddd&amp;quot;&lt;br /&gt;
!…&lt;br /&gt;
|style=&amp;quot;text-align: center&amp;quot; colspan=&amp;quot;8&amp;quot;|Тип N блока&lt;br /&gt;
|style=&amp;quot;text-align: center&amp;quot; colspan=&amp;quot;8&amp;quot;|Флаги N блока&lt;br /&gt;
|colspan=&amp;quot;16&amp;quot; style=&amp;quot;text-align: center&amp;quot;|Длина N блока&lt;br /&gt;
|- style=&amp;quot;background-color: #ffdddd&amp;quot;&lt;br /&gt;
!…&lt;br /&gt;
|colspan=&amp;quot;32&amp;quot; style=&amp;quot;text-align: center&amp;quot;|Данные N блока&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SCTP пакеты имеют более простую структуру, чем пакеты TCP. Каждый пакет состоит из двух основных разделов:&lt;br /&gt;
# Общий заголовок, который занимает первые 12 байт (выделены синим цветом)&lt;br /&gt;
# Блоки данных, которые занимают оставшуюся часть пакета.&lt;br /&gt;
Первый блок отмечен зелёным цветом, и последний из блоков N (N блок) выделен красным.&lt;br /&gt;
&lt;br /&gt;
Каждый блок имеет идентификатор типа, занимающий один байт. Таким образом, возможно определение не более 255 различных типов блоков. RFC 4960 определяет список типов блоков, всего на данный момент определено 15 типов. Остальная часть блока состоит из поля длины размером в 2 байта (максимальная длина, которя может содержаться в данном поле, равна 65535 байтам) и, собственно, данных. Если размер блока не кратен 4-м байтам, то он заполняется нулями до размера, кратного 4-м байтам.&lt;br /&gt;
&lt;br /&gt;
== Обработка ошибок ==&lt;br /&gt;
&lt;br /&gt;
=== Повтор передачи ===&lt;br /&gt;
{{достоверность}}&lt;br /&gt;
Повторная передача блоков DATA может быть обусловлена (a) тайм-аутом, определяемым таймером повтора (retransmission timer) или (b) получением SACK, показывающих что блок DATA не был получен адресатом. Для снижения вероятности насыщения повтор передачи блоков DATA ограничивается. Значение тайм-аута для повтора (RTO) устанавливается на основе оценки времени кругового обхода и уменьшается экспоненциально с ростом частоты потери сообщений.&lt;br /&gt;
Для активных ассоциаций с почти постоянным уровнем трафика DATA причиной повтора скорей всего будут сообщения SACK, а не тайм-аут. Для снижения вероятности ненужных повторов используется правило 4 SACK, в соответствии с которым повтор передачи происходит только по четвертому SACK, указывающему на пропуск блока данных. Это позволяет предотвратить повторы передачи, вызванные нарушением порядка доставки.&lt;br /&gt;
&lt;br /&gt;
=== Сбой в пути ===&lt;br /&gt;
&lt;br /&gt;
Поддерживается счетчик для числа повторов передачи по конкретному адресу получателя без подтверждения успешной доставки. Когда значение этого счетчика достигает заданного порога (конфигурационный параметр), адрес объявляется неактивным и протокол SCTP начинает использовать другой адрес для передачи блоков DATA.&lt;br /&gt;
Кроме того, по всем неиспользуемым (дополнительным) адресам периодически передаются специальные блоки Heartbeat и поддерживается счетчик числа блоков Heartbeat, переданных без возврата соответствующего Heartbeat Ack. Когда значение счетчика достигает заданного порога (параметр конфигурации), соответствующий адрес объявляется неактивным.&lt;br /&gt;
Блоки Heartbeat передаются по неактивным адресам до тех пор, пока не будет получено сообщение Ack, говорящее о восстановлении активности адреса. Частота передачи блоков Heartbeat определяется значение RTO и дополнительной задержкой, которая позволяет передавать блоки Heartbeat без помех для пользовательского трафика.&lt;br /&gt;
&lt;br /&gt;
=== Отказ в конечной точке ===&lt;br /&gt;
&lt;br /&gt;
Для всех адресов получателя поддерживается общий счетчик числа повторов или блоков Heartbeat, переданных удаленной точке без получения от нее соответствующего подтверждения (Ack). Когда значение счетчика достигает заданного порога (параметр конфигурации) конечная точка декларируется как недостижимая и ассоциация SCTP закрывается.&lt;br /&gt;
&lt;br /&gt;
== Реализации ==&lt;br /&gt;
Протокол SCTP реализован в следующих операционных системах:&lt;br /&gt;
* [[Linux (ядро)|Linux]] 2.4 и выше&lt;br /&gt;
* [[Sun Solaris]] 10&lt;br /&gt;
* [[Cisco IOS]] 12+&lt;br /&gt;
* [[DragonFly BSD]] начиная с версии 1.4&lt;br /&gt;
* [[QNX]] Neutrino,&lt;br /&gt;
* [[BSD|BSD UNIX]] (с внешним дополнением от проекта KAME)&lt;br /&gt;
* [[FreeBSD]] начиная с версии 7&lt;br /&gt;
* [[HP-UX]]&lt;br /&gt;
* [[AIX]] 5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Отличительные особенности:&amp;lt;br /&amp;gt;&lt;br /&gt;
4-way Handshake — от SYN flood аттак&amp;lt;br /&amp;gt;&lt;br /&gt;
Передача фрагментов разных потоков данных (multi-streaming)&amp;lt;br /&amp;gt;&lt;br /&gt;
При потере фрагмента необходима повторная передача только потерянного фрагмента&amp;lt;br /&amp;gt;&lt;br /&gt;
Поддержка нескольких IP-адресов узла (multi-homing, not load-balancing!)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
{{примечания}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* RFC 3286&lt;br /&gt;
* http://rfc2.ru/3286.rfc - перевод RFC 3286 на русский язык&lt;br /&gt;
* http://www.sigtran.org&lt;br /&gt;
* http://www.sctp.org&lt;br /&gt;
* http://www.openss7.org&lt;br /&gt;
* http://www.sctp.de&lt;br /&gt;
* http://tdrwww.exp-math.uni-essen.de/inhalt/forschung/sctp_fb/sctp_intro.html&lt;br /&gt;
* [http://decoder.seventest.com/cgi-bin/decoder?family=TCP/IP SeveNTest онлайн декодер сообщений TCP/IP]&lt;br /&gt;
&lt;br /&gt;
{{IPstack}}&lt;br /&gt;
&lt;br /&gt;
{{compu-net-stub}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:TCP/IP]]&lt;br /&gt;
[[Категория:Интернет-протоколы]]&lt;br /&gt;
&lt;br /&gt;
[[cs:Stream Control Transmission Protocol]]&lt;br /&gt;
[[de:Stream Control Transmission Protocol]]&lt;br /&gt;
[[en:Stream Control Transmission Protocol]]&lt;br /&gt;
[[es:Stream Control Transmission Protocol]]&lt;br /&gt;
[[eu:Stream Control Transmission Protocol]]&lt;br /&gt;
[[fr:Stream Control Transmission Protocol]]&lt;br /&gt;
[[he:Stream Control Transmission Protocol]]&lt;br /&gt;
[[it:Stream Control Transmission Protocol]]&lt;br /&gt;
[[ja:Stream Control Transmission Protocol]]&lt;br /&gt;
[[nl:Stream Control Transmission Protocol]]&lt;br /&gt;
[[nn:Stream Control Transmission Protocol]]&lt;br /&gt;
[[pl:Stream Control Transmission Protocol]]&lt;br /&gt;
[[pt:Stream Control Transmission Protocol]]&lt;br /&gt;
[[sv:Stream Control Transmission Protocol]]&lt;br /&gt;
[[tr:SCTP]]&lt;br /&gt;
[[yo:Stream Control Transmission Protocol]]&lt;br /&gt;
[[zh:流控制传输协议]]&lt;/div&gt;</summary>
		<author><name>Langator</name></author>
	</entry>
</feed>