SIP (), Протокол установления сеанса — протокол передачи данных, описывающий способ установления и завершения пользовательского сеанса связи, включающего обмен мультимедийным содержимым (IP-телефония, видео- и аудиоконференции, мгновенные сообщения, онлайн-игры). Протокол описывает, каким образом клиентское приложение (например, софтфон) может запросить начало соединения у другого, возможно, физически удалённого клиента, находящегося в той же сети, используя его уникальное имя. Протокол определяет способ создания канала связи и согласования протоколов обмена информации между клиентами (например, протокол RTP используется для обмена голосовыми данными). Допускается добавление или удаление таких каналов в течение установленного сеанса, а также подключение и отключение дополнительных клиентов (то есть предусмотрена конференц-связь, когда допускается участие в обмене более двух сторон). SIP также определяет порядок завершения сеанса.

Протокол SIP не осуществляет передачу целевых медиа-данных непосредственно. Он подразумевает только инициализацию, изменение статуса и завершение сеанса связи. Согласование медиа-параметров между участниками и передача целевых данных осуществляется посредством других самостоятельных протоколов, логических взаимоувязанных с протоколом SIP.

Разработчики протокола SIP Разработкой SIP занималась организация IETF MMUSIC Working GroupMultiparty Multimedia Session Control (mmusic) — Charter . Протокол начал разрабатываться в 1996 году Хенингом Шулзри (Henning Schulzrinne, Колумбийский университет) и Марком Хэндли (Университетский колледж Лондона). В ноябре 2000 года SIP был утверждён как протокол сигнализации проекта 3GPP и основной протокол архитектуры IMS (модификация 3GPP TS.24.229). SIP — один из протоколов, активно использующихся для передачи речи через интернет (Voice over IP), наряду с H.323.

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

Простота: включает в себя только шесть методов (функций) Независимость от транспортного уровня, может использовать UDP, TCP, ATM и т. д. Персональная мобильность пользователей. Пользователи могут перемещаться в пределах сети без ограничений. Это достигается путём присвоения пользователю уникального идентификатора. При этом набор предоставляемых услуг остается неизменным. О своих перемещениях пользователь сообщает с помощью сообщения REGISTER своему серверу. Масштабируемость сети. Структура сети на базе протокола SIP позволяет легко её расширять и увеличивать число элементов. Расширяемость протокола. Протокол характеризуется возможностью дополнять его новыми функциями при появлении новых услуг. Интеграция в стек существующих протоколов Интернет. Протокол SIP является частью глобальной архитектуры мультимедиа, разработанной комитетом IETF. Кроме SIP, эта архитектура включает в себя протоколы RSVP, RTP, RTSP, SDP. Взаимодействие с другими протоколами сигнализации. Протокол SIP может быть использован совместно с другими протоколами IP-телефонии, протоколами ТфОП, и для связи с интеллектуальными сетями.

Дизайн протокола Клиенты SIP традиционно используют порт 5060 TCP или UDP для соединения элементов SIP-сети. В основном, SIP используется для установления и разъединения голосовых и видеозвонков. При этом он может использоваться и в любых других приложениях, где требуется установка соединения, таких, как системы оповещения, мобильные терминалы и так далее. Существует большое количество рекомендаций RFC, относящихся к SIP и определяющих поведение таких приложений. Для передачи самих голосовых и видеоданных используют другие транспортные протоколы, чаще всего RTP.

Главной задачей разработки SIP было создание сигнального протокола на базе IP, который мог бы поддерживать расширенный набор функций обработки вызова и услуг, представленных в существующей ТфОП. Сам протокол SIP не определяет этих функций, а сосредоточен только на процедурах регистрации пользователя, установления и завершения вызова и соответствующей сигнализации. При этом он был спроектирован с поддержкой таких функциональных элементов сети, как прокси-серверы (Proxy Servers) и Пользовательские Агенты (User Agents). Эти элементы обеспечивают базовый набор услуг: набор номера, вызов телефонного аппарата, звуковое информирование абонента о статусе вызова.

Телефонные сети на основе SIP могут поддерживать и более современные услуги, обычно предоставляемые ОКС-7, несмотря на значительное различие этих двух протоколов. ОКС-7 характеризуется сложной, централизованной интеллектуальной сетью и простыми, неинтеллектуальными, терминалами (традиционные телефонные аппараты). SIP — наоборот, требует очень простую (и, соответственно, хорошо масштабируемую) сеть с интеллектом, встроенным в оконечные элементы на периферии (терминалы, построенные как физические устройства или программы).

SIP используется вместе с несколькими другими протоколами и участвует только в сигнальной части сессии связи. SIP выполняет роль носителя для SDP, который описывает параметры передачи медиаданных в рамках сессии, например используемые порты IP и кодеки. В типичном применении сессии SIP — это просто потоки пакетов RTP. RTP является непосредственным носителем голосовых и видео данных.

Первая предложенная версия стандарта (SIP 2.0) была определена в RFC 2543. Протокол был дополнительно уточнён в RFC 3261, хотя многие реализации по-прежнему основаны на промежуточных версиях стандарта. Обратите внимание, что номер версии остался 2.0.

Адресация

Для организации взаимодействия с существующими приложениями сетей IP и для обеспечения мобильности пользователей, SIP использует адрес, подобный адресу электронной почты. В качестве вызываемых и вызывающих адресов используются универсальные указатели ресурсов URI, так называемые SIP URI, обычно имеющие формат sip:идентификатор@домен, где «идентификатор» представляет собой имя или номер телефона абонента, а «домен» определяет сервер или IP-АТС, которые могут быть заданы доменным именем или адресом IP.

Примеры: логин_абонента@Доменное.имя доменное.имя.устройства@IP-адрес № телефона@адрес. VoIP.шлюза. Стандарт URI задан в RFC 3986.

Адрес состоит из двух частей. Первая часть — имя пользователя, зарегистрированного в домене или на рабочей станции. Во второй части адреса указывается имя домена сети, хоста или IP-адрес. Если вторая часть идентифицирует телефонный шлюз, то в первой указывается номер телефона абонента.

Имена пользователей представляют собой обычные алфавитно-цифровые идентификаторы. В IP-телефонии, как правило, используют чисто цифровые идентификаторы («номера») для удобства расширения/замены классических телефонных сетей. Номера местной связи, как правило, 2-3-4-значные.

Номер телефона, передаваемый шлюзу — любой доступный через него, он может быть как номером местной связи, так и номером мобильного или городского телефона. Адрес шлюза (адрес IP или доменное имя) задаётся в настройках телефона или программы-клиента, а пользователю для совершения звонка достаточно только набора номера.

Архитектура сети Протокол SIP имеет клиент-серверную архитектуру.

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

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

Терминал Когда клиент и сервер реализованы в конечном оборудовании и взаимодействуют непосредственно с пользователем, они называются User Agent Client (, клиент агента пользователя) — и User Agent Server (, сервер агента пользователя). Если в устройстве присутствуют и UAC, и UAS, то оно называется User Agent (UA, пользовательский агент) и по своей сути представляет собой оконечное оборудование SIP.

Сервер (UAS) и клиент (UAC) имеют возможность непосредственно взаимодействовать с пользователем. Другие клиенты и серверы SIP этого делать не могут.

Прокси-сервер Прокси-сервер (от  — «представитель») представляет интересы пользователя в сети. Он принимает запросы, обрабатывает их и выполняет соответствующие действия. Прокси-сервер состоит из клиентской и серверной частей, поэтому может принимать вызовы, инициировать запросы и возвращать ответы.

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

Предусмотрено два типа прокси-серверов с сохранением состояний (stateful). Такой сервер хранит в своей памяти все полученные запросы и связанные с ним новые сформированные запросы до окончания транзакции. без сохранения состояний (stateless). Такой сервер просто обрабатывает получаемые запросы. Но на его базе нельзя реализовать сложные, интеллектуальные услуги.

Прокси может указать пользователю в ответ на первый запрос, на необходимость дополнительных для аутентификации — как минимум логина (ответ 407 Proxy authentification required), а также параметров цифровой аутентификации для обеспечения безопасности.

Сервер B2BUA B2BUA — (, буквально: «пользовательский агент спина-к-спине») — вариант серверного логического элемента в приложениях, работающих с протоколом SIP. По идеологии работы B2BUA похож на прокси-сервер SIP, однако есть принципиальные различия. Сервер B2BUA работает одновременно с несколькими (как правило, двумя) конечными устройствами — терминалами, разделяя вызов или сеанс на разные плечи-участки. С каждым участком B2BUA работает индивидуально, как UAS — по отношению к инициатору и как UAC — по отношению к терминалу, принимающему вызов. При этом сигнальные сообщения передаются в рамках сеанса в обе стороны синхронно, хотя решение о необходимости передачи сообщения и его формате принимается B2BUA для каждого участка в индивидуальном порядке. Каждый из участников соединения (сеанса связи) на уровне сигнализации взаимодействует с B2BUA как с оконечным устройством, хотя в действительности сервер является посредником. Это отражается в адресных полях (таких как From, To и Contact) сообщений, отправляемых сервером B2BUA. Таким образом, ключевое отличие B2BUA — полностью независимая сигнализация всех участков вызова. Это означает, в частности, что для взаимодействия с каждым отдельным пользователем в рамках сеанса связи используются уникальные идентификаторы, а содержимое одних и тех же сообщений для разных участков будет различным. Пользовательские агенты оконечных терминалов могут взаимодействовать с B2BUA и при участии прокси-серверов.

Сервер B2BUA может предоставлять следующие функции:

Управление звонками (биллинг, перевод звонка, автоматическое разъединение и т. д.) Сопряжение разных сетей (в частности, для адаптации разных диалектов протокола, зависимых от производителей) Сокрытие структуры сети (частные адреса, сетевая топология и т. п.)

Довольно часто B2BUA является частью медиашлюза для того, чтобы полностью управлять медиапотоками в рамках сессии. Сигнальный шлюз, являющийся частью пограничного контроллера соединений/сеансов — наглядный пример применения B2BUA.

Сервер переадресации