sctp протокол что это

Русские Блоги

Подробное объяснение протокола SCTP

каталог

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Условия, связанные с SCTP

Адрес передачи определяется IP-адресом, типом протокола транспортного уровня и номером порта транспортного уровня. Поскольку SCTP загружается и передается по IP, адрес передачи SCTP определяется по IP-адресу плюс номер порта SCTP. Номер порта SCTP используется SCTP для идентификации пользователей по тому же адресу, а номер порта TCP является концепцией. Например, IP-адрес 10.105.28.92 и номер порта 1024 SCTP идентифицируют адрес передачи, в то время как 10.105.28.93 и 1024 идентифицируют другой адрес передачи. Аналогично, 10.105.28.92 и номер порта 1023 также идентифицируют другой адрес передачи.

2. Хост и конечная точка

Хост (ХоST) Хост оснащен одним или несколькими IP-адресами, что является типичным физическим объектом.

Конечная точка (конечная точка SCTP)

Адрес передачи (IP-адрес + номер порта SCTP) однозначно определяет конечную точку. Конечная точка может быть определена несколькими адресами передачи, но для одной и той же конечной точки назначения IP-адреса в этих адресах передачи могут быть настроены на несколько адресов, но должен использоваться один и тот же порт SCTP.

3. Сцепление и поток

4. Путь (основной путь)

Если в качестве адреса назначения для конечной точки можно использовать несколько адресов назначения, конечная точка SCTP является многоадресной. Если конечная точка, отправившая пакет SCTP, принадлежит узлу с множественной адресацией, если адрес назначения и адрес источника определены, путь, возвращаемый блоком ответных данных, и интерфейс, через который отправляется пакет данных, могут лучше контролироваться. Две конечные точки SCTP одной связи SCTP могут быть настроены с несколькими IP-адресами, так что между двумя конечными точками одной связи может быть несколько путей. Это многоадресная адресация связи SCTP. Многоадресный характер связи SCTP является самой большой разницей между SCTP и TCP.

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Рисунок 1 SCTP двойная адресация

Две конечные точки определяют связь, которая включает 4 пути (Path0, Path1, Path2 и Path3). В соответствии с конфигурацией данных, метод выбора этих 4 каналов может быть определен, как показано на рисунке 2. На рисунке определены 4 пути, и предпочтительным путем является Path0: Path0: локальный адрес передачи 1 (10.11.23.14: 2905) отправляет пакеты SCTP на адрес удаленной передачи 1 (10.11.23.16: 2904).

Path1: Локальный адрес передачи 1 (10.11.23.14: 2905) отправляет пакет SCTP на адрес удаленной передачи 2 (10.11.23.17: 2904).

Path2: Локальный адрес передачи 2 (10.11.23.15: 2905) отправляет пакет SCTP на адрес удаленной передачи 1 (10.11.23.16: 2904).

Path3: Локальный адрес передачи 2 (10.11.23.15: 2905) отправляет пакет SCTP на адрес удаленной передачи 2 (10.11.23.17: 2904).

Принцип работы протокола SCTP, отправленного конечной точкой, заключается в том, что пакет SCTP, отправленный конечной точкой по адресу A, отправляется равноправной конечной точке по предпочтительному пути. При сбое основного пути SCTP может автоматически переключаться на другие пути резервного копирования, предпочтительно переключать адрес передачи противоположной конечной точки и снова переключать адрес передачи локальной конечной точки.

SCTP определяет сообщения сердцебиения (Heart Beat). Когда канал находится в режиме ожидания, локальный пользователь SCTP требует, чтобы SCTP сгенерировал соответствующее сообщение тактового импульса и отправил его в конечную точку однорангового узла через канал, а конечная точка однорангового узла должна немедленно отправить обратно соответствующее сообщение подтверждения тактового импульса. Этот механизм используется для точного измерения задержки петли RTTTIя), и может контролировать доступность соединения в любое время и поддерживать активное состояние связи SCTP.

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Рисунок 2 Конфигурация данных для определения способа выбора канала

Порядковый номер передачи (TSN) Порядковый номер передачи (SCTP) использует механизм TSN для получения подтверждения передачи данных. Связанный конец выделяет 32-битный порядковый номер на основе начального TSN для каждого блока данных, отправленного концом, чтобы подтвердить конец, когда он его получает. TSN поддерживается на основе связи.

Порядковый номер потока (SSN)

SCTP назначает 16-битный SSN каждому блоку данных, отправляемому локальным концом в этом потоке, чтобы обеспечить последовательную доставку в потоке. Когда связь установлена, SSN во всех потоках начинается с 0. Когда SSN достигает 65535, следующий SSN равен 0. Распределение TSN и SSN не зависит друг от друга.

6. Окно перегрузки CWND (Окно перегрузки)

SCTP также является протоколом скользящего окна. Окно перегрузки поддерживается для каждого адреса назначения и будет настроено в соответствии с условиями сети. Когда длина неподтвержденного сообщения адреса получателя превышает его CWND, конечная точка прекращает отправку данных на этот адрес.

7. Окно получения RWND (Окно получения)

RWND используется для описания размера буфера приема связанного однорангового узла. Во время установления соединения обе стороны будут обмениваться своим первоначальным RWND. RWND изменится немедленно согласно передаче данных и проверке. Размер RWND ограничивает размер данных, которые может отправлять SCTP. Когда RWND равно 0, SCTP также может отправлять дейтаграмму, чтобы узнать об изменении буфера другой стороны через сообщение подтверждения, пока не будет достигнут предел CWND.

8. Блок управления коробкой передач (TCB)

Функция SCTP

Как показано на рисунке, функции SCTP в основном включают в себя: установление и закрытие соединения, доставку последовательности сообщений в потоке, сегментацию пользовательских данных, подтверждение и предотвращение перегрузки, связывание блоков сообщений, достоверность пакетов и управление трактом.

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Рисунок SCTP функциональная схема

1. Установка и закрытие сцепления

2. Отправьте сообщение заказа в потоке

SCTP обеспечивает последовательную доставку дейтаграмм. Последовательно доставленные дейтаграммы должны доставляться в «потоке». Поток является краеугольным камнем последовательной доставки. Через потоковую передачу SCTP разделяет подтверждение данных и упорядоченную доставку передачи на два разных механизма. SCTP использует механизм TSN для реализации подтверждающей передачи данных и использует номер потока и SSN (порядковый номер потока) для осуществления упорядоченной доставки данных. Когда SSN данных, полученных SCTP, является непрерывным, SCTP может отправлять данные пользователям SCTP, не дожидаясь, пока номер TSN данных будет продолжать передаваться пользователям SCTP.

Когда один поток заблокирован, следующее ожидаемое сообщение пользователя SCTP может быть отправлено из другого потока. SCTP также предоставляет непоследовательные услуги доставки.Полученные пользовательские сообщения могут быть немедленно доставлены пользователям SCTP таким образом без необходимости гарантировать порядок приема.

3. Сегментация пользовательских данных

SCTP обнаруживает максимальное значение PMTU (Path Maximum TransmissiON Unit) на пути передачи, чтобы упаковать большие фрагменты пользовательских данных на уровне SCTP, избегая многократной фрагментации и повторной сборки на уровне IP, что может снизить нагрузку на данные уровня IP.

На отправляющей стороне SCTP может фрагментировать большие пользовательские дейтаграммы, чтобы гарантировать, что дейтаграммы SCTP подходят для максимальной единицы передачи (MTU), когда они доставляются на нижние уровни.

На принимающей стороне SCTP повторно собирает фрагменты в полные пользовательские дейтаграммы, которые затем доставляются пользователям SCTP.

4. Подтвердите и избегайте заторов

SCTP последовательно присваивает порядковый номер передачи (TSN) данным (пользовательские дейтаграммы с сегментированными или неэкранированными данными) перед отправкой на нижний уровень.

TSN и SSN (порядковый номер потока) не зависят друг от друга. TSN используется для обеспечения надежности передачи, а SSN используется для обеспечения последовательной доставки сообщений в потоке.

TSN и SSN функционально разделяют надежную доставку и последовательную доставку. Принимающая сторона подтверждает все полученные TSN, даже если некоторые из них не были получены.

Функция повторной передачи пакета отвечает за проверку TSN, а также за устранение перегрузки.

5. Привязка блока сообщений

Если пользовательские данные с очень короткой длиной переносятся с большим заголовком сообщения SCTP, его эффективность передачи будет очень низкой, поэтому SCTP связывает несколько пользовательских данных в сообщении SCTP для передачи, чтобы улучшить использование полосы пропускания.

Пакеты SCTP состоят из общего заголовка пакета и одного или нескольких информационных блоков. Информационные блоки могут быть пользовательскими данными или управляющей информацией SCTP.

Пользователи SCTP могут дополнительно использовать функцию объединения, чтобы решить, следует ли объединять несколько пользовательских дейтаграмм в один пакет SCTP.

Чтобы повысить эффективность, во время перегрузки / повторной передачи функция объединения может все еще выполняться, даже если пользователь запретил объединение.

6, срок действия группировки

Корректность пакета является краеугольным камнем SCTP для обеспечения безошибочной передачи. Общий заголовок пакета SCTP-пакета содержит проверочный тег (VerificATIon Tag) и необязательную 32-битную контрольную сумму (Checksum). Значение проверочной метки выбирается обоими концами соединения, когда соединение инициируется. Если в принятом пакете нет ожидаемого значения тега аутентификации, принимающая сторона отбросит пакет, чтобы предотвратить атаки и недопустимые пакеты SCTP. Контрольный код устанавливается отправителем пакета SCTP для обеспечения дополнительной защиты во избежание ошибок данных, вызванных сетью. Принимающая сторона отбрасывает SCTP-пакеты, содержащие недействительные контрольные коды.

7. Управление доступом

Пользователь SCTP на передающей стороне может использовать набор адресов передачи в качестве пункта назначения пакета SCTP. Функция управления SCTP может выбирать адрес передачи назначения для каждого отправленного пакета SCTP на основании инструкций пользователя SCTP и состояния достижимости текущего квалифицированного набора назначения. Когда другой пакетный трафик не может полностью указать достижимость, функция управления каналом может контролировать достижимость определенного адреса назначения посредством сообщений пульса, а когда достижимость адреса передачи любого однорангового узла изменяется, она отправляет сообщение в SCTP. Пользователь предоставляет инструкции. Функция канала также используется, чтобы сообщить квалифицированный локальный адрес передачи, установленный одноранговому узлу, когда соединение установлено, и сообщить адрес передачи, возвращенный от однорангового узла, локальному пользователю SCTP. Когда связь установлена, предпочтительный путь определяется для каждой конечной точки SCTP, которая используется для отправки пакетов SCTP при нормальных обстоятельствах.

На принимающей стороне функция управления каналом используется для проверки наличия связи входящего пакета SCTP перед обработкой пакета SCTP.

SCTP основной процесс сигнализации

1 Создание муфты и процесс доставки

Конечная точка SCTP A инициирует установление соединения и отправляет пользовательское сообщение конечной точке B, затем конечная точка B отправляет два пользовательских сообщения A. (Предположим, что эти сообщения не связаны и не фрагментированы). Процесс сигнализации показан на рисунке 1.

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Рисунок 1. Схема взаимодействия сообщений процесса установления связи

(1) Конечная точка A создает структуру данных TCB (блок управления передачей) для описания соединения, которое должно быть инициировано (содержит основную информацию о соединении), а затем отправляет блок данных INIT в конечную точку B. Блок данных INIT в основном включает в себя следующие параметры:

Количество выходных потоков (ОС): максимальное количество исходящих потоков, ожидаемое этой конечной точкой.

Количество входных потоков (MIS): максимальное количество входящих потоков, разрешенное в этой конечной точке.

(2) После получения сообщения INIT конечная точка B немедленно отвечает блоком данных INIT ACK. Блок данных INIT ACK должен иметь следующие параметры:

IP-адрес получателя: укажите исходный IP-адрес блока данных INIT.

Инициировать тег: установите значение Tag_B.

State COOKIE (СОСТОЯНИЕ COOKIE): Создать TCB на основе базовой информации о соединении, но этот TCB является временным TCB. После того, как TCB сгенерирован, необходимая информация (включая временную метку, сгенерированную COOKIE, время жизни COOKIE) и локальный ключ вычисляются в 32-битный MAC-код дайджеста по алгоритму, описанному в RFC2401 (этот расчет необратим) ). Необходимая информация и MAC объединяются в параметр STATE COOKIE.

Эта конечная точка отправляет адрес.

Максимальное количество входящих потоков.

Максимальное количество исходящих потоков.

(3) После получения ACK INIT конечная точка A сначала останавливает INIT.таймерsctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что этоВыйдите из состояния COOKIE-WAIT, затем отправьте блок данных COOKIE ECHO и верните параметр STATE COOKIE в блок данных INIT ACK. Наконец, конечная точка A начинает COOKIEтаймерИ войдите в состояние COOKIE-ECHOED.

(4) После получения блока данных COOKIE ECHO конечная точка B выполняет проверку COOKIE. Часть TCB в STATE COOKIE и локальный ключ вычисляются в соответствии с алгоритмом MAC RFC2401, и результирующий MAC сравнивается с MAC, переносимым в STATE COOKIE. Если оно отличается, откажитесь от этого сообщения, если оно одинаковое, выньте метку времени детали TCB и сравните ее с текущим временем, чтобы увидеть, превысило ли время время существования COOKIE. Если это так, откажитесь и от этого. В противном случае установите соединение с клеммой A на основании информации в TCB. Конечная точка B переводит состояние в ESTABLISHED и отправляет блок данных COOKIE ACK. Конечная точка B отправляет уведомление SCOMMUNCIATION UP пользователям SCTP.

(5) Конечная точка A отправляет блок данных DATA в конечную точку B, чтобы запустить таймер T3-RTS. Блок данных DATA должен иметь следующие параметры:

TSN: начальный TSN блока данных DATA.

Идентификатор потока (Идентификатор потока): пользовательские данные принадлежат потоку, при условии, что идентификатор потока равен 0.

Порядковый номер потока (порядковый номер потока): порядковый номер пользовательских данных в потоке. Поле составляет от 0 до 65535.

Пользовательские данные (User Data): несет данные пользователя.

(6) После получения блока данных DATA конечная точка B возвращает блок данных SACK. Блок данных SACK должен иметь следующие параметры:

Совокупный TSN Ack: Совокупный TSN Ack: начальный TSN конечной точки A.

Gap Ack Block: Это значение равно 0. После получения блока данных SACK конечная точка A останавливает таймер T3-RTX.

(7) Конечная точка B отправляет первый блок данных DATA в конечную точку A. Блок данных DATA должен иметь следующие параметры:

TSN: конечная точка B отправляет начальный TSN блока данных DATA.

Идентификатор потока (Идентификатор потока): пользовательские данные принадлежат потоку, при условии, что идентификатор потока равен 0.

Порядковый номер потока (порядковый номер потока): порядковый номер пользовательских данных в потоке. Предположим, что код последовательности потока равен 0.

Пользовательские данные (User Data): несет данные пользователя.

(8) Конечная точка B отправляет второй блок данных DATA в конечную точку A. Блок данных DATA должен иметь следующие параметры:

TSN: конечная точка B отправляет начальный TSN + 1 блока данных DATA.

Идентификатор потока (Идентификатор потока): пользовательские данные принадлежат потоку, при условии, что идентификатор потока равен 0.

Порядковый номер потока (порядковый номер потока): порядковый номер пользовательских данных в потоке. В это время код последовательности потока равен 1.

Пользовательские данные (User Data): несет данные пользователя.

(9) После получения блока данных DATA конечная точка A возвращает блок данных SACK. Блок данных SACK должен иметь следующие параметры:

Совокупный TSN Ack: Совокупный TSN Ack: начальный TSN конечной точки B.

Gap Ack Block: Это значение равно 0.

2 Процесс закрытия муфты

Когда конечная точка выходит из службы, она должна прекратить соединение. Для остановки муфты используются две процедуры: процедура подвески муфты (аварийное отключение) и обычная процедура выключения муфты. Приостановка муфты (аварийное отключение) может быть выполнена в течение любого неполного периода: оба конца муфты отбрасывают данные и не подают их на противоположный конец. Этот метод не учитывает безопасность данных. Этап завершения соединения является относительно простым: инициирующая конечная точка отправляет блок данных ABORT в конечную точку однорангового узла, отправленный пакет SCTP должен быть заполнен проверочной меткой конечной точки однорангового узла, и никакие данные DATA не связаны в блоке данных ABORT, принимающая конечная точка получает ABORT После блока данных проверьте тег подтверждения. Если тег проверки совпадает с локальным тегом проверки, принимающая конечная точка очищает соединение из записи и сообщает об остановке соединения пользователю SCTP.

Нормальное отключение связывания: когда любая конечная точка выполняет обычную процедуру выключения, оба конца связывания прекращают принимать новые данные от своих пользователей SCTP, а при отправке или получении блоков данных SHUTDOWN отправляют данные в пакете. Для пользователей SCTP. Закрытие соединения может обеспечить отправку и подтверждение неотправленных неподтвержденных данных, отправленных с обоих концов, до прекращения соединения.

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Рисунок 2 Диаграмма взаимодействия связывания нормально закрытого сообщения

Обычная процедура закрытия соединения выглядит следующим образом:

(1) Пользователь SCTP, который инициирует отключение конечной точки A, отправляет запрос причины ВЫКЛЮЧЕНИЯ в SCTP. Соединение SCTP переходит из УСТАНОВЛЕННОГО состояния в состояние ОТКЛЮЧЕНИЯ. В этом состоянии SCTP не принимает никаких запросов на передачу данных от пользователей SCTP по этому соединению. В то же время дождитесь, пока конечная точка A отправит все неподтвержденные данные, которые будут подтверждены конечной точкой B. Когда вся конечная точка A отправляет непроверенные данные для подтверждения, она отправляет блок данных SHUTDOWN конечной точке B. Конечная точка A запускает таймер отключения T2 и переходит в состояние ОТКЛЮЧЕНО. Целью запуска таймера выключения T2 является ожидание блока данных SHUTDOWN-ACK, отправленного обратно конечной точкой B. Если время таймера истекло, конечная точка A должна повторно отправить блок данных SHUTDOWN.

(2) После получения сообщения SHUTDOWN конечная точка B переходит в состояние SHOUTDOWN-RECEIVED, больше не принимает новые данные от пользователей SCTP и проверяет накопительное поле TSN ACK блока данных, чтобы убедиться, что все незавершенные блоки данных DATA были Отправитель ОТКЛЮЧЕНИЯ получает. Когда все непереданные данные и неподтвержденные данные, отправленные конечной точкой B, отправлены и подтверждены, отправляется блок данных SHUTDOWN ACK, запускается локальный таймер T2-SHUTDOWN и вводится состояние SHUTDOWN-ACK-SENT. Если таймер истекает, конечная точка B повторно передает блок данных SHUTDOWN ACK.

(3) После получения сообщения SHUTDOWN ACK конечная точка A останавливает таймер выключения T2 и отправляет блок данных SHUTDOWN COMPLETE в конечную точку B и очищает все записи соединения. После получения блока данных SHUTDOWN COMPLETE конечная точка B проверяет, находится ли она в состоянии SHUTDOWN-ACK-SENT. Если он не находится в этом состоянии, блок данных отбрасывается, если конечная точка находится в состоянии SHUTDOWN-ACK-SENT, конечная точка B останавливает таймер выключения T2 и очищает все связанные записи, чтобы войти в состояние ЗАКРЫТО.

Источник

Sctp протокол что это

SCTP (англ. Stream Control Transmission Protocol — «протокол передачи с управлением потоком»), сетевой протокол транспортного уровня в компьютерных сетях, появившийся в 2000 году в IETF. RFC 4960 описывает этот протокол, а RFC 3286 содержит техническое вступление к нему.

Как и любой другой протокол передачи данных транспортного уровня, SCTP работает аналогично TCP или UDP TCP и UDP работают столь различно, что проводить аналогию к ним обоим некорректно. Вся аналогия — в том, что SCTP​​, TCP и UDP относятся к одному и тому же уровню модели OSI. Но на самом деле SCTP имеет в арсенале широкий спектр приятных нововведений, таких как многопоточность, защита от SYN-flood атак, синхронное соединение между двумя хостами по двум и более независимым физическим каналам (multi-homing).

Содержание

Безопасное установление подключения

Создание нового подключения в протоколах TCP и SCTP происходит при помощи механизма подтверждения (квитирования) пакетов. В протоколе TCP данная процедура получила название трехэтапное квитирование (three-way handshake). Клиент посылает пакет SYN (сокр. Synchronize). Сервер отвечает пакетом SYN-ACK (Synchronize-Acknowledge). Клиент подтверждает прием пакета SYN-ACK пакетом ACK. На этом процедура установления соединения завершается.

Протокол TCP имеет потенциальную уязвимость, обусловленную тем, что нарушитель, установив фальшивый IP-адрес отправителя, может послать серверу множество пакетов SYN. При получении пакета SYN сервер выделяет часть своих ресурсов для установления нового соединения. Обработка множества пакетов SYN рано или поздно, затребует все ресурсы сервера и сделает невозможным обработку новых запросов Такая атака получила название «отказ в обслуживании» (Denial of Service (DoS)).

Протокол SCTP защищен от подобных атак с помощью механизма четырехэтапного квитирования (four-way handshake) и вводом маркера (cookie). По протоколу SCTP клиент начинает процедуру установления соединения посылкой пакета INIT. В ответ сервер посылает пакет INIT-ACK, который содержит маркер (уникальный ключ, идентифицирующий новое соединение). Затем клиент отвечает посылкой пакета COOKIE-ECHO, в котором содержится маркер, посланный сервером. Только после этого сервер выделяет свои ресурсы новому подключению и подтверждает это отправлением клиенту пакета COOKIE-ACK.

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Для решения проблемы задержки пересылки данных при выполнении процедуры четырехэтапного квитирования в протоколе SCTP допускается включение данных в пакеты COOKIE-ECHO и COOKIE-ACK.

Поэтапное завершение передачи данных

Рассмотрим отличия между процедурой закрытия сокетов протокола SCTP и процедурой частичного закрытия (half-close) протокола TCP.

В протоколе TCP возможна ситуация, когда узел закрывает у себя сокет (выполняя посылку пакета FIN), но продолжает принимать данные. Пакет FIN указывает корреспонденту на отсутствие данных для передачи, однако до тех пор, пока корреспондент не закроет свой сокет, он может продолжать передавать данные. Состояние частичного закрытия используется приложениями крайне редко, поэтому разработчики протокола SCTP посчитали нужным заменить его последовательностью сообщений для разрыва существующей ассоциации. Когда узел закрывает свой сокет (посылает сообщение SHUTDOWN), оба корреспондента должны прекратить передачу данных, при этом разрешается лишь обмен пакетами, подтверждающими прием ранее отправленных данных.

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Многопоточность

TCP управляет последовательностью байт: данные, посланные приложением-отправителем, должны поступать приложению-получателю строго в том же порядке (в то время как протокол IP способен поменять последовательность пакетов; кроме того, пропавшие пакеты посылаются повторно и обычно прибывают к получателю с нарушением последовательности; для борьбы с этими явлениями данные накапливаются в буфере). SCTP может транспортировать данные между двумя точками одновременно по нескольким потокам сообщений. В противоположность к TCP, SCTP обрабатывает целые сообщения, а не обычные байты информации. Это означает, что если отправитель отсылает серверу сообщение, состоящее из 100 байт за первый шаг, а за ним ещё 50 байт, то получатель за первый шаг получит именно первые 100 байт в первом сообщении, а только затем и только 50 байт на второй операции чтения из сокета.

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Термин «многопоточность» (англ. multi-streaming) обозначает способность SCTP параллельно передавать по нескольким независимым потокам сообщений. Например, мы передаем несколько фотографий через HTTP-приложение (например браузер). Можно использовать для этого связку из нескольких TCP-соединений, однако также допустимо SCTP-ассоциация (англ. SCTP-association), управляющее несколькими потоками сообщений для этой цели.

TCP достигает правильного порядка байт в потоке, абстрактно назначая порядковый номер каждой отосланной единице, а упорядочивая принятые байты, используя назначенные порядковые номера, по мере их прибывания. С другой стороны, SCTP присваивает различные порядковые номера сообщениям, посылаемым в конкретном потоке. Это разрешает независимое упорядочивание сообщений по разным потокам. Так или иначе, многопоточность является опцией в SCTP. В зависимости от желаний пользовательского приложения, сообщения могут быть обработаны не в порядке их отправления, а в порядке их поступления.

Достоинства

Достоинства использования SCTP включают в себя:

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

Часть достоинств вытекает из того факта, что изначально разработчики SCTP проектировали протокол под нужды передачи телефонии (SS7) по протоколу IP.

Причины появления

Протокол TCP предоставляет основные средства для передачи данных по сети Internet по надежному пути. Однако TCP накладывает некоторые ограничения на транспорт данных:

Все эти ограничения наносят ущерб производительности работы телефонных сетей через IP.

Безопасность

SCTP был разработан с некоторыми функциями позволяющими повысить безопасности, такими как «4-х кратное рукопожатие» (по сравнению с «трёхкратным рукопожатием» в TCP), чтобы предотвратить SYN-flood атаки, и больших Cookie для проверки подлинности ассоциации.

Надежность была одним из ключевых аспектов разработки безопасности протокола SCTP. Multi-homing позволяет ассоциации оставаться открытой, даже если некоторые используемые маршруты и интерфейсы стали недоступны. Это имеет особое значение для SIGTRAN, который используя SCTP, передаёт сообщения и сервисы протоколов ОКС-7 поверх IP сети, что требует сильной устойчивости во время отключений линков для поддержания телекоммуникационных услуг, даже при серьёзных аномалиях в сети.

Шифрование не является частью оригинального дизайна SCTP.

В некоторых случаях SCTP является хорошим кандидатом для TCP/IP stack fingerprinting (проверки на прочность стэка TCP/IP). Причиной для этого является тот факт, что некоторые операционные системы распространяются с поддержкой протокола SCTP, но ввиду его слабой известности (по сравнению с TCP или UDP), администраторы иногда забывают настроить в брандмауэре обнаружения вторжений, что даёт возможности для сканирования трафика.

Сравнение возможностей протоколов транспортного уровня

ПараметрUDPTCPSCTP
Установка соединенияНетДаДа
Надежная передачаНетДаДа
Сохранение границ сообщенияДаНетДа
Упорядоченная доставкаНетДаДа
Неупорядоченная доставкаДаНетДа
Контрольные суммы данныхДаДаДа
Размер контрольной суммы (бит)161632
Путь MTUНетДаДа
Управление накоплениемНетДаДа
МногопоточностьНетНетДа
Поддержка множественных интерфейсовНетНетДа
Связка потоковНетДаДа

Формирование кадров сообщения

При формировании кадров сообщения обеспечивается сохранение границ сообщения в том виде, в котором оно передается сокету; это означает, что если клиент посылает серверу 100 байт, за которыми следуют 50 байт, то сервер воспринимает 100 байт и 50 байт за две операции чтения. Точно так же функционирует протокол UDP, это является особенностью протоколов, ориентированных на работу с сообщениями.

В противоположность им протокол TCP обрабатывает неструктурированный поток байт. Если не использовать процедуру формирования кадров сообщения, то узел сети может получать данные по размеру больше или меньше отправленных. Такой режим функционирования требует, чтобы для протоколов, ориентированных на работу с сообщениями и функционирующих поверх протокола TCP, на прикладном уровне был предоставлен специальный буфер данных и выполнялась процедура формирования кадров сообщений (что потенциально является сложной задачей).

Протокол SCTP обеспечивает формирование кадров при передаче данных. Когда узел выполняет запись в сокет, его корреспондент с гарантией получает блок данных того же размера.

sctp протокол что это. Смотреть фото sctp протокол что это. Смотреть картинку sctp протокол что это. Картинка про sctp протокол что это. Фото sctp протокол что это

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

БитыБиты 0-78-1516-2324-31
+0Порт источникаПорт назначения
32Тег проверки
64Контрольная сумма
96Тип 1 блокаФлаги 1 блокаДлина 1 блока
128Данные 1 блока
Тип N блокаФлаги N блокаДлина N блока
Данные N блока

SCTP пакеты имеют более простую структуру, чем пакеты TCP. Каждый пакет состоит из двух основных разделов:

Первый блок отмечен зелёным цветом, и последний из блоков N (N блок) выделен красным.

Каждый блок имеет идентификатор типа, занимающий один байт. Таким образом, возможно определение не более 255 различных типов блоков. RFC 4960 определяет список типов блоков, всего на данный момент определено 15 типов. Остальная часть блока состоит из поля длины размером в 2 байта (максимальная длина, которя может содержаться в данном поле, равна 65535 байтам) и, собственно, данных. Если размер блока не кратен 4-м байтам, то он заполняется нулями до размера, кратного 4-м байтам.

Обработка ошибок

Повтор передачи

Повторная передача блоков DATA может быть обусловлена (a) тайм-аутом, определяемым таймером повтора (retransmission timer) или (b) получением SACK, показывающих что блок DATA не был получен адресатом. Для снижения вероятности насыщения повтор передачи блоков DATA ограничивается. Значение тайм-аута для повтора (RTO) устанавливается на основе оценки времени кругового обхода и уменьшается экспоненциально с ростом частоты потери сообщений. Для активных ассоциаций с почти постоянным уровнем трафика DATA причиной повтора скорей всего будут сообщения SACK, а не тайм-аут. Для снижения вероятности ненужных повторов используется правило 4 SACK, в соответствии с которым повтор передачи происходит только по четвертому SACK, указывающему на пропуск блока данных. Это позволяет предотвратить повторы передачи, вызванные нарушением порядка доставки.

Сбой в пути

Поддерживается счетчик для числа повторов передачи по конкретному адресу получателя без подтверждения успешной доставки. Когда значение этого счетчика достигает заданного порога (конфигурационный параметр), адрес объявляется неактивным и протокол SCTP начинает использовать другой адрес для передачи блоков DATA. Кроме того, по всем неиспользуемым (дополнительным) адресам периодически передаются специальные блоки Heartbeat и поддерживается счетчик числа блоков Heartbeat, переданных без возврата соответствующего Heartbeat Ack. Когда значение счетчика достигает заданного порога (параметр конфигурации), соответствующий адрес объявляется неактивным. Блоки Heartbeat передаются по неактивным адресам до тех пор, пока не будет получено сообщение Ack, говорящее о восстановлении активности адреса. Частота передачи блоков Heartbeat определяется значение RTO и дополнительной задержкой, которая позволяет передавать блоки Heartbeat без помех для пользовательского трафика.

Отказ в конечной точке

Для всех адресов получателя поддерживается общий счетчик числа повторов или блоков Heartbeat, переданных удаленной точке без получения от нее соответствующего подтверждения (Ack). Когда значение счетчика достигает заданного порога (параметр конфигурации) конечная точка декларируется как недостижимая и ассоциация SCTP закрывается.

Реализации

Протокол SCTP реализован в следующих операционных системах:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *