Протокол связи | |
Аббревиатура | ГЛОТОК |
---|---|
Цель | Интернет-телефония |
Введение | Март 1999 ( 1999-03 ) |
уровень OSI | Уровень приложений (Уровень 7) |
Порт(ы) | 5060, 5061 |
Запрос(ы) предложений (RFC) | 2543, 3261 |
набор интернет-протоколов |
---|
Уровень приложений |
Транспортный уровень |
Интернет-слой |
Связующий слой |
Протокол инициирования сеанса ( SIP ) — это протокол сигнализации, используемый для инициирования, поддержания и завершения сеансов связи , включающих голосовую связь, видеосвязь и обмен сообщениями. [1] SIP используется в интернет-телефонии , в частных телефонных системах IP, а также для звонков по мобильному телефону через LTE ( VoLTE ). [2]
Протокол определяет конкретный формат сообщений, которыми обмениваются, и последовательность коммуникаций для взаимодействия участников. SIP — это текстовый протокол , включающий в себя множество элементов протокола передачи гипертекста (HTTP) и простого протокола передачи почты (SMTP). [3] Вызов, установленный с помощью SIP, может состоять из нескольких потоков мультимедиа , но для приложений, таких как текстовые сообщения , которые обмениваются данными в качестве полезной нагрузки в сообщении SIP, отдельные потоки не требуются .
SIP работает совместно с несколькими другими протоколами, которые определяют и передают медиа-данные сеанса. Чаще всего согласование типа и параметров медиа-данных, а также настройка медиа-данных выполняются с помощью протокола описания сеанса (SDP), который передается в качестве полезной нагрузки в сообщениях SIP. SIP разработан так, чтобы быть независимым от базового протокола транспортного уровня , и может использоваться с протоколом пользовательских датаграмм (UDP), протоколом управления передачей (TCP) и протоколом передачи управления потоком (SCTP). Для безопасной передачи сообщений SIP по незащищенным сетевым каналам протокол может быть зашифрован с помощью протокола безопасности транспортного уровня (TLS). Для передачи потоков медиа-данных (голос, видео) полезная нагрузка SDP, передаваемая в сообщениях SIP, обычно использует протокол передачи в реальном времени (RTP) или защищенный протокол передачи в реальном времени (SRTP).
SIP был первоначально разработан Марком Хэндли , Хеннингом Шульцринном , Ив Скулер и Джонатаном Розенбергом в 1996 году для облегчения установления сеансов мультимедиа многоадресной передачи на Mbone . Протокол был стандартизирован как RFC 2543 в 1999 году. В ноябре 2000 года SIP был принят в качестве протокола сигнализации 3GPP и постоянного элемента архитектуры IP Multimedia Subsystem (IMS) для потоковых мультимедийных услуг на основе IP в сотовых сетях . В июне 2002 года спецификация была пересмотрена в RFC 3261 [4] , и с тех пор были опубликованы различные расширения и разъяснения. [5]
SIP был разработан для предоставления протокола сигнализации и установления вызова для IP-коммуникаций, поддерживающих функции обработки вызовов и возможности, присутствующие в телефонной сети общего пользования (PSTN) с целью поддержки новых мультимедийных приложений. Он был расширен для видеоконференций , потоковой передачи мультимедиа, обмена мгновенными сообщениями , информации о присутствии , передачи файлов , интернет-факса и онлайн-игр . [1] [6] [7]
Сторонники SIP выделяются тем, что уходят корнями в интернет-сообщество, а не в телекоммуникационную отрасль . SIP был стандартизирован в первую очередь Инженерной группой Интернета (IETF), в то время как другие протоколы, такие как H.323 , традиционно ассоциировались с Международным союзом электросвязи (МСЭ).
SIP участвует только в операциях сигнализации сеанса медиасвязи и в основном используется для установки и завершения голосовых или видеовызовов. SIP может использоваться для установки двухсторонних ( одноадресных ) или многосторонних ( многоадресных ) сеансов. Он также позволяет изменять существующие вызовы. Изменение может включать изменение адресов или портов , приглашение большего количества участников и добавление или удаление медиапотоков. SIP также нашел применение в приложениях обмена сообщениями, таких как мгновенный обмен сообщениями, а также подписка на события и уведомления.
SIP работает в сочетании с несколькими другими протоколами, которые определяют формат и кодирование медиа и которые переносят медиа после настройки вызова. Для настройки вызова тело сообщения SIP содержит блок данных Session Description Protocol (SDP), который определяет формат медиа, кодек и протокол связи с медиа. Голосовые и видеопотоки медиа обычно передаются между терминалами с использованием Real-time Transport Protocol (RTP) или Secure Real-time Transport Protocol (SRTP). [3] [8]
Каждый ресурс сети SIP, такой как пользовательские агенты, маршрутизаторы вызовов и ящики голосовой почты, идентифицируется с помощью унифицированного идентификатора ресурса (URI). Синтаксис URI соответствует общему стандартному синтаксису, также используемому в веб-сервисах и электронной почте. [9] Схема URI, используемая для SIP, — sip , и типичный SIP URI имеет форму sip:username@domainname или sip:username@hostport , где domainname требует записи DNS SRV для определения местоположения серверов для домена SIP, в то время как hostport может быть IP-адресом или полностью определенным доменным именем хоста и порта. Если требуется безопасная передача , используется схема sips . [10] [11]
SIP использует элементы дизайна, похожие на модель транзакций HTTP-запросов и ответов. [12] Каждая транзакция состоит из клиентского запроса, который вызывает определенный метод или функцию на сервере, и по крайней мере одного ответа. SIP повторно использует большинство полей заголовков, правил кодирования и кодов статуса HTTP, предоставляя читаемый текстовый формат.
SIP может передаваться несколькими протоколами транспортного уровня , включая Transmission Control Protocol (TCP), User Datagram Protocol (UDP) и Stream Control Transmission Protocol (SCTP). [13] [14] Клиенты SIP обычно используют TCP или UDP на портах 5060 или 5061 для трафика SIP к серверам и другим конечным точкам. Порт 5060 обычно используется для незашифрованного сигнального трафика, тогда как порт 5061 обычно используется для трафика, зашифрованного с помощью Transport Layer Security (TLS).
Телефонные сети на основе SIP часто реализуют функции обработки вызовов Системы сигнализации 7 (SS7), для которой существуют специальные расширения протокола SIP, хотя сами эти два протокола сильно отличаются. SS7 — это централизованный протокол, характеризующийся сложной архитектурой центральной сети и немыми конечными точками (традиционными телефонными трубками). SIP — это клиент-серверный протокол равноправных одноранговых узлов. Функции SIP реализованы в конечных точках связи, в то время как традиционная архитектура SS7 используется только между коммутационными центрами.
Сетевые элементы, использующие протокол инициирования сеанса для связи, называются пользовательскими агентами SIP . Каждый пользовательский агент (UA) выполняет функцию клиента пользовательского агента (UAC), когда он запрашивает функцию обслуживания, и функцию сервера пользовательского агента (UAS), когда отвечает на запрос. Таким образом, любые две конечные точки SIP в принципе могут работать без какой-либо промежуточной инфраструктуры SIP. Однако по эксплуатационным причинам сети, для предоставления пользователям общедоступных услуг и для служб каталогов SIP определяет несколько конкретных типов элементов сетевого сервера. Каждый из этих элементов обслуживания также взаимодействует в рамках модели клиент-сервер, реализованной в клиентах и серверах пользовательских агентов. [15]
Пользовательский агент — это логическая конечная точка сети, которая отправляет или получает сообщения SIP и управляет сеансами SIP. Пользовательские агенты имеют клиентские и серверные компоненты. Клиент пользовательского агента (UAC) отправляет запросы SIP. Сервер пользовательского агента (UAS) получает запросы и возвращает ответ SIP. В отличие от других сетевых протоколов, которые фиксируют роли клиента и сервера, например, в HTTP, в котором веб-браузер действует только как клиент, и никогда как сервер, SIP требует, чтобы оба одноранговых узла реализовывали обе роли. Роли UAC и UAS сохраняются только на время транзакции SIP. [6]
SIP-телефон — это IP-телефон , который реализует клиентские и серверные функции пользовательского агента SIP и обеспечивает традиционные функции вызова телефона, такие как набор, ответ, отклонение, удержание вызова и перевод вызова. [16] [17] SIP-телефоны могут быть реализованы как аппаратное устройство или как программный телефон . Поскольку поставщики все чаще внедряют SIP в качестве стандартной платформы телефонии, различие между аппаратными и программными SIP-телефонами размывается, и элементы SIP внедряются в базовые функции прошивки многих устройств связи с поддержкой IP, таких как смартфоны .
В SIP, как и в HTTP, пользовательский агент может идентифицировать себя с помощью поля заголовка сообщения ( User-Agent ), содержащего текстовое описание программного обеспечения, оборудования или названия продукта. Поле пользовательского агента отправляется в сообщениях-запросах, что означает, что принимающий сервер SIP может оценить эту информацию для выполнения специфической для устройства конфигурации или активации функции. Операторы сетевых элементов SIP иногда хранят эту информацию в порталах учетных записей клиентов, [18] где она может быть полезна для диагностики проблем совместимости SIP или для отображения статуса обслуживания.
Прокси-сервер — это сетевой сервер с компонентами UAC и UAS, который функционирует как промежуточный объект для выполнения запросов от имени других сетевых элементов. Прокси-сервер в первую очередь играет роль маршрутизации вызовов; он отправляет запросы SIP другому объекту, расположенному ближе к месту назначения. Прокси-серверы также полезны для обеспечения соблюдения политики, например, для определения того, разрешено ли пользователю совершать вызов. Прокси-сервер интерпретирует и, при необходимости, перезаписывает определенные части сообщения-запроса перед его пересылкой.
Прокси-серверы SIP, которые направляют сообщения более чем в одно место назначения, называются разветвляющимися прокси. Разветвление запроса SIP устанавливает несколько диалогов из одного запроса. Таким образом, на вызов можно ответить с одной из нескольких конечных точек SIP. Для идентификации нескольких диалогов каждый диалог имеет идентификатор с вкладами от обеих конечных точек.
Сервер перенаправления — это сервер пользовательского агента, который генерирует ответы 3xx (перенаправление) на получаемые запросы, направляя клиента на обращение к альтернативному набору URI. Сервер перенаправления позволяет прокси-серверам направлять приглашения на сеанс SIP на внешние домены.
Регистратор — это конечная точка SIP, которая предоставляет услугу определения местоположения. Он принимает запросы REGISTER, записывая адрес и другие параметры от пользовательского агента. Для последующих запросов он предоставляет необходимые средства для определения возможных одноранговых узлов связи в сети. Служба определения местоположения связывает один или несколько IP-адресов с SIP URI регистрирующего агента. Несколько пользовательских агентов могут регистрироваться для одного и того же URI, в результате чего все зарегистрированные пользовательские агенты получают вызовы на URI.
Регистраторы SIP являются логическими элементами и часто располагаются вместе с прокси-серверами SIP. Для улучшения масштабируемости сети службы определения местоположения могут располагаться вместе с сервером перенаправления.
Контроллеры границ сеансов (SBC) служат промежуточными устройствами между пользовательскими агентами и серверами SIP для различных типов функций, включая скрытие топологии сети и помощь в обходе NAT . SBC являются независимо разработанным решением и не упоминаются в SIP RFC.
Шлюзы можно использовать для соединения сети SIP с другими сетями, такими как PSTN, которые используют другие протоколы или технологии.
SIP — это текстовый протокол с синтаксисом, похожим на HTTP. Существует два различных типа сообщений SIP: запросы и ответы. Первая строка запроса содержит метод , определяющий природу запроса, и Request-URI, указывающий, куда следует отправить запрос. [19] Первая строка ответа содержит код ответа .
Запросы инициируют функциональность протокола. Они отправляются клиентом пользовательского агента на сервер и получают ответ в виде одного или нескольких ответов SIP , которые возвращают код результата транзакции и обычно указывают на успешность, неудачу или другое состояние транзакции.
Имя запроса | Описание | Примечания | Ссылки RFC |
---|---|---|---|
РЕГИСТРАЦИЯ | Регистрирует URI, указанный в поле заголовка «Кому», на сервере местоположения и связывает его с сетевым адресом, указанным в поле заголовка «Контакт» . | Команда реализует службу определения местоположения. | RFC3261 |
ПРИГЛАШАТЬ | Инициировать диалог для установления вызова. Запрос отправляется клиентом пользовательского агента на сервер пользовательского агента. | При отправке во время установленного диалога ( приглашение повторно ) он изменяет сеансы, например, переводит вызов в режим удержания. | RFC3261 |
АСК | Подтвердите, что субъект получил окончательный ответ на запрос INVITE. | RFC3261 | |
ПОКА | Сигнализировать о завершении диалога и завершить вызов. | Это сообщение может быть отправлено любой конечной точкой диалога. | RFC3261 |
ОТМЕНА | Отмените все ожидающие запросы. | Обычно это означает завершение вызова во время звонка, до ответа. | RFC3261 |
ОБНОВЛЯТЬ | Изменить состояние сеанса, не меняя состояние диалога. | RFC3311 | |
ССЫЛАТЬСЯ | Попросите получателя оформить запрос на перевод вызова. | RFC3515 | |
ПРАК | Предварительное подтверждение. | PRACK отправляется в ответ на предварительный ответ (1xx). | RFC3262 |
ПОДПИСАТЬСЯ | Инициирует подписку на уведомления о событиях от уведомителя. | RFC6665 | |
УВЕДОМИТЬ | Информировать подписчика об уведомлениях о новом событии. | RFC6665 | |
ПУБЛИКОВАТЬ | Опубликовать событие на сервере уведомлений. | RFC3903 | |
СООБЩЕНИЕ | Отправьте текстовое сообщение. | Используется в приложениях для обмена мгновенными сообщениями. | RFC3428 |
ИНФОРМАЦИЯ | Отправлять информацию в середине сеанса, которая не изменяет состояние сеанса. | Этот метод часто используется для DTMF-ретрансляции. | RFC6086 |
ПАРАМЕТРЫ | Запрос возможностей конечной точки. | Часто используется для поддержания активности NAT. | RFC3261 |
Ответы отправляются сервером агента пользователя, указывающим результат полученного запроса. Распознаются несколько классов ответов, определяемых числовым диапазоном кодов результатов: [20]
SIP определяет механизм транзакций для управления обменами между участниками и надежной доставки сообщений. Транзакция — это состояние сеанса, которое контролируется различными таймерами. Клиентские транзакции отправляют запросы, а серверные транзакции отвечают на эти запросы одним или несколькими ответами. Ответы могут включать предварительные ответы с кодом ответа в форме 1xx и один или несколько окончательных ответов (2xx – 6xx).
Транзакции далее классифицируются как приглашение или не приглашение . Транзакции приглашения отличаются тем, что они могут устанавливать длительный разговор, называемый диалогом в SIP, и поэтому включают подтверждение (ACK) любого неотказного окончательного ответа, например, 200 OK .
Протокол инициации сеанса для мгновенного обмена сообщениями и использования расширений присутствия (SIMPLE) — это набор стандартов на основе SIP для мгновенного обмена сообщениями и информации о присутствии . Протокол ретрансляции сеансов сообщений (MSRP) позволяет осуществлять сеансы мгновенного обмена сообщениями и передачу файлов.
Сообщество разработчиков SIP регулярно встречается на конференциях, организованных SIP Forum, для проверки совместимости реализаций SIP. [22] Язык спецификации тестов TTCN-3 , разработанный целевой группой ETSI (STF 196), используется для указания тестов соответствия для реализаций SIP. [23]
При разработке программного обеспечения SIP или развертывании новой инфраструктуры SIP важно проверить способность серверов и сетей IP обрабатывать определенную нагрузку вызовов: количество одновременных вызовов и количество вызовов в секунду. Программное обеспечение для тестирования производительности SIP используется для моделирования трафика SIP и RTP, чтобы увидеть, стабильны ли сервер и сеть IP при нагрузке вызовов. [24] Программное обеспечение измеряет показатели производительности, такие как задержка ответа, соотношение ответ/захват , джиттер RTP и потеря пакетов , время задержки приема-передачи .
SIP-соединение — маркетинговый термин для услуг передачи голоса по интернет-протоколу (VoIP), предлагаемых многими поставщиками услуг интернет-телефонии (ITSP). Услуга обеспечивает маршрутизацию телефонных звонков с телефонной системы частного отделения (PBX) клиента на PSTN. Такие услуги могут упростить корпоративную информационную инфраструктуру системы за счет совместного доступа в Интернет для голоса и данных и устранения стоимости телефонных цепей Basic Rate Interface (BRI) или Primary Rate Interface (PRI).
SIP-транкинг — похожий маркетинговый термин, используемый в тех случаях, когда услуга используется для упрощения телекоммуникационной инфраструктуры путем совместного использования канала доступа оператора для голосового трафика, трафика данных и Интернета, при этом устраняя необходимость в каналах PRI. [25] [26]
Камеры видеонаблюдения с поддержкой SIP могут инициировать звонки, чтобы оповестить оператора о событиях, например, о движении объектов на охраняемой территории.
SIP используется в аудио через IP для вещательных приложений, где он обеспечивает возможность взаимодействия аудиоинтерфейсов разных производителей для установления соединений друг с другом. [27]
Национальный институт стандартов и технологий США (NIST), Отдел передовых сетевых технологий предоставляет общедоступную реализацию Java [28] , которая служит эталонной реализацией для стандарта. Реализация может работать в сценариях прокси-сервера или пользовательского агента и использовалась в многочисленных коммерческих и исследовательских проектах. Она полностью поддерживает RFC 3261 и ряд дополнительных RFC, включая RFC 6665 (уведомление о событиях) и RFC 3262 (надежные предварительные ответы).
Существует множество других коммерческих и открытых реализаций SIP. См. Список программного обеспечения SIP .
SIP-I, Session Initiation Protocol с инкапсулированным ISUP , — это протокол, используемый для создания, изменения и завершения сеансов связи на основе ISUP с использованием сетей SIP и IP. Услуги, использующие SIP-I, включают голосовую связь, видеотелефонию, факс и данные. SIP-I и SIP-T [29] — это два протокола со схожими функциями, в частности, позволяющие передавать сообщения ISUP по сетям SIP. Это сохраняет все детали, доступные в заголовке ISUP. [a] SIP-I был определен ITU-T , тогда как SIP-T был определен IETF . [ 30]
Проблемы безопасности звонков через общедоступный Интернет были решены путем шифрования протокола SIP для безопасной передачи . Схема URI SIPS используется для того, чтобы обязать SIP-коммуникацию защищать с помощью Transport Layer Security (TLS). URI SIPS имеют вид sips:user@example.com.
Сквозное шифрование SIP возможно только при наличии прямого соединения между конечными точками связи. Хотя прямое соединение может быть установлено через Peer-to-peer SIP или через VPN между конечными точками, большинство коммуникаций SIP включают несколько переходов, причем первый переход идет от пользовательского агента к ITSP пользовательского агента . В случае с несколькими переходами SIPS защитит только первый переход; остальные переходы обычно не будут защищены с помощью TLS, и общение SIP будет небезопасным. Напротив, протокол HTTPS обеспечивает сквозную безопасность, поскольку это делается с прямым соединением и не подразумевает понятие переходов.
Медиапотоки (аудио и видео), которые являются отдельными соединениями от сигнального потока SIPS, могут быть зашифрованы с помощью SRTP. Обмен ключами для SRTP выполняется с помощью SDES ( RFC 4568) или с помощью ZRTP ( RFC 6189). При использовании SDES ключи будут передаваться через незащищенный SIP, если не используется SIPS. Можно также добавить обмен MIKEY ( RFC 3830) к SIP, чтобы определить ключи сеанса для использования с SRTP.
{{citation}}
: CS1 maint: ref duplicates default (link){{citation}}
: CS1 maint: ref duplicates default (link)