
- •Sctp Материал из Википедии — свободной энциклопедии
- •Многопоточность
- •Достоинства
- •Причины появления
- •Сравнение возможностей протоколов транспортного уровня
- •Архитектура sctp
- •Функционирование sctp
- •Sctp Материал из Wiki.Inattack.Ru.
- •Проблемы tcp
- •Свойства sctp
- •Многодомность
- •Инициация
- •Передача данных
- •Отключение
- •[Править] Безопасное установление подключения
- •[Править] Поэтапное завершение передачи данных
- •[Править] Многопоточность
- •[Править] Достоинства
- •[Править] Причины появления
- •[Править] Безопасность
- •[Править] Сравнение возможностей протоколов транспортного уровня
- •[Править] Формирование кадров сообщения
- •[Править] Структура пакета
- •[Править] Обработка ошибок
- •[Править] Реализации
- •[Править] Примечания
- •[Править] Ссылки
Архитектура sctp
SCTP пока еще имеет статус draft-стандарта. Хотя в Sigtran поступило для рассмотрения несколько вариантов его реализации, уже сейчас понятно, что будет собой представлять этот протокол и как он будет функционировать.
Изначально SCTP разрабатывался для передачи сигнальной информации традиционных телефонных станций через сеть IP. Он обеспечивает следующий сервис:
безошибочную передачу с подтверждением приема;
фрагментацию данных с учетом максимальной длины передаваемого блока в IP-пакете (параметр MTU);
соблюдение верной последовательности сообщений для каждого приложения внутри потока, объединяющего информацию от многих источников;
оптимальную упаковку информации для нескольких приложений в одном IP-пакете;
устойчивость передаваемых данных к сетевым ошибкам.
Кроме того, протокол имеет механизмы защиты от перегрузок, которые могут возникать в ходе хакерских атак или некорректной работы сети.
SCTP допускается рассматривать как функциональный уровень между приложениями, пользующимися его услугами, и пакетной сетью типа IP, которая не обеспечивает поддержку соединений. Нарис. 1показана организация связи между двумя приложениями с использованием этого протокола. Легко заметить, что он не задействует сервис, предлагаемый TCP или UDP. Разработчики настроены весьма оптимистично: они заявляют, что SCTP можно рассматривать как вариант замены широко применяемых протоколов транспортного уровня.
Как известно, UDP позволяет осуществлять быструю передачу информации без установления соединений. Данный протокол поддерживает так называемую передачу, ориентированную на сообщения, и очень хорошо подходит для транспортировки данных, критичных к задержкам и устойчивых к потере и дублированию пакетов.
В свою очередь, TCP ориентирован на соединения или потоки. Он обеспечивает хорошую защиту от искажения информации, но мало подходит для передачи данных, критичных к задержкам. При транспортировке сигнализации телефонных станций характерная для TCP поддержка строгой последовательности принимаемых данных может сослужить плохую службу. Допустим, что с помощью сегментов TCP передается информация о нескольких телефонных вызовах, и один из пакетов IP пришел искаженным. Пока осуществляется его повторная передача, остальные данные блокируются, хотя они приняты верно и уже могут быть задействованы для проключения разговорных каналов связи. Таким образом, увеличивается время установления телефонного соединения.
Разработчики SCTP постарались использовать лучшие черты UDP и TCP при создании протокола, предназначенного для передачи столь специфической информации, как телефонная сигнализация. Протокол позволяет разбивать передаваемое сообщение для размещения в нескольких IP-пакетах или мультиплексировать несколько сообщений в одном IP-пакете. Дополнительно обеспечивается устойчивость к ошибкам за счет поддержки нескольких IP-адресов на одном узле SCTP.
Для описания основного информационного блока разработчики использовали термин «пакет», хотя, согласно семиуровневой модели OSI, PDU (Protocol Data Unit) транспортного уровня следует называть сегментом (кстати, именно «сегмент» фигурирует в описании TCP). Но для исключения возможной путаницы не будем отходить от терминологии, предложенной Sigtran.
Пакет SCTP состоит из заголовка и нескольких субпакетов (chunk), которые представляют собой информационные блоки с собственными заголовками. Каждый субпакет служит для передачи автономной информации. Например, в отдельных субпакетах могут размещаться данные, предназначенные для установления речевых соединений в разных направлениях. На рис. 2 показаны форматы пакета SCTP, его заголовка и субпакета. В каждом пакете допускается размещать несколько субпакетов, что обеспечивает мультиплексирование различных потоков информации. Число субпакетов зависит от длины каждого из них и параметра MTU (Maximum Transfer Unit), определяемого протоколом IP.
|
Форматы SCTP |
|
Заголовок пакета включает в себя четыре поля, назначение которых типично для телекоммуникационных протоколов. Имеется два 16-разрядных поля (номера портов отправителя и получателя), которые фактически являются аналогами «портов», используемых в TCP/UDP. Поле Verification Tag (проверочная метка) имеет длину 32 бита и предназначено для проверки отправителя пакета. Его значение определяется на этапе установления соединения. Благодаря этому механизму улучшается защищенность информации от возможного искажения. Назначение поля контрольной суммы пакета SCTP, думаю, не требует отдельного пояснения.
Более подробно опишем формат субпакета.
В нем также можно выделить поля, выполняющие функции заголовка. Одно из них, восьмиразрядное поле типа субпакета, способно принимать до 255 значений (в настоящее время определены 15, а остальные зарезервированы). Если данное поле имеет нулевое значение, то это говорит о передаче полезной информации (payload data); в других случаях субпакет «несет» служебные сведения. Второе поле, тоже состоящее из восьми бит, содержит флаги; его использование определяется типом субпакета. Третье, поле длины c разрядностью 16 бит, заполняется суммарным значением длины субпакета с учетом полей заголовка.
Информационная часть предназначена для передачи собственно данных, которые определяются типом субпакета. Согласно протоколу SCTP, размерность субпакета должна быть кратна четырем. В противном случае информационная часть дополняется нулевыми значениями, но в поле длины указывается истинная величина. Это позволяет на приемном конце соединения исключить добавленные нули из передаваемых данных.