Protocol sip: SIP-телефония

Содержание

SIP-телефония

Вместо вступления…

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

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

Протокол SIP (Session Initiat Protocol, протокол установки соединения) не является первопроходцем в области IP-телефонии. Протокол H.323 уже давно используется для целей IP-телефонии, однако изначально он не разрабатывался для IP-сетей, что снижает «оптимальность» их совместной работы. За годы работы с протоколом H.323 накоплен большой опыт использования, который позволил выявить как его положительные черты, так и недостатки, которые были учтены при разработке протокола SIP.

Протокол H.323 использует двоичный формат. Одним из следствий этого является необходимость стандартизации всех возможностей данного протокола, так как в случае если определенная возможность не поддерживается устройством, то такие устройства из-за двоичного формата не смогут работать друг с другом. SIP-протокол использует текстовый формат сообщений, если одному из устройств не знаком определенный тип сообщения или заголовка, то оно просто игнорируется (как и в HTTP, который по своему формату очень похож формат протокола SIP). К тому же сам протокол SIP значительно проще H.323.

Возможности протокола SIP

Основные преимущества протокола SIP:

1. Масштабируемость — возможность увеличения количества клиентов при расширении сети.

2. Мобильность — возможность получения сервиса вне зависимости от местоположения (как например электронная почта), а каждому пользователю выдается персональный идентификатор, по которому он может быть найден.

3. Расширяемость — возможность дополнения протокола новыми функциями (за счет введения новых заголовков и сообщений). Как уже говорилось выше, если устройству встречается неизвестное ему расширение протокола, оно попросту игнорируется. Так как протокол H.323 использует сообщения двоичного формата, то неизвестные функции могут привести к невозможности предоставления сервиса.

Протокол SIP разрабатывался с расчетом на возможность использования любых транспортов, но, тем не менее, наиболее предпочтительным является использование UDP-пакетов (это позволяет повысить производительность по сравнению с использованием протокола TCP, но требует использования дополнительных механизмов проверки доставки сигнальных сообщений).

Так как телефония с использованием протокола SIP позволяет использовать большое количество разнообразных сервисов (помимо передачи голоса, возможна передача видео, текстовых сообщений, факсов и др.), необходим механизм обмена информацией о том, какие сервисы может использовать вызываемаявызывающая стороны. Для этой цели используется протокол SDP (Session Description Protocol) — протокол описания сессии. Данный протокол позволяет определить какие звуковые (видео и другие) кодеки и иные возможности может использовать удаленная сторона.

Собственно сама передача голоса осуществляется благодаря использованию протокола RTP (Real-time Transport Protocol, протокол транспортировки в реальном времени). Сам протокол SIP непосредственного участия в передаче голосовых, видео и других данных не принимает, он отвечает только за установление связи (по протоколам SDP, RTP и др.), поэтому под SIP-телефонией понимается не передача голоса по протоколу SIP, а передача голоса с использованием протокола SIP. Использование протокола SIP предоставляет новые возможности установления соединений (а также возможность беспроблемного расширения данных возможностей), а не непосредственной передачи голосового и других видов трафика.

Формат адресов используемых протоколом SIP напоминает формат E-Mail-адреса: имя@идентификатор_хоста. В начале адреса ствится приставка «sip:» (пример: sip:[email protected]). В качестве идентификатора хоста может служить его IP-адрес, домен или имя хоста (IP-адрес определяется с использованием DNS, так что в итоге все равно получается обращение по адресу sip: имя@IP-адрес).

Архитектура SIP-сети

Стандартными элементами в SIP-сети являются:

1. User Agent: по протоколу SIP устанавливаются соединения «клиент-сервер». Клиент устанавливает соединения, а сервер принимает вызовы, но так обычно телефонный аппарат (или программный телефон) может как устанавливать так и принимать звонки, то получается что он одновременно играет роль и клиента и сервера (хотя в реализации протокола это не является обязательным критерием) — в этом случае его называют User Agent (UA) или терминал.

2. Прокси-сервер: прокси сервер принимает запросы и производит с ним некоторые действия (например определяет местоположение клиента, производит переадресацию или перенаправление вызова и др.). Он также может устанавливать собственные соединения. Зачастую прокси-сервер совмещают с сервером определения местоположения (Register-сервер), в таком случае его называют Registrar-сервером.

3. Сервер опредления местоположения или сервер регистрации (Register): данный вид сервера служит для регистрации пользователей. Регистрация пользователя производится для определения его текущего IP-адреса, для того чтобы можно было произвести вызов user@IP-адрес. В случае если пользователь переместится в другое место и/или не имеет определенного IP-адреса, его текущий адрес можно будет определить после того, как он зарегистрируется на сервере регистрации. Таким образом клиент останется доступен по одному и тому же SIP-адресу вне зависимости от того, где на самом деле находится.

4. Сервер переадресации: обращается к серверу регистрации для определения текущего IP-адреса пользователя, но в отличие от прокси сервера только «переадресует» клиента, а не устанавливает собственные соединения.

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

Сообщения SIP

Сообщения SIP-протокола имеют следующую структуру:

  • Стартовая строка (start-line)
  • Заголовки сообщения (*message-header)
  • Пустая строка (CRLF)
  • Тело сообщения

Стартовая строка различается в зависимости от того является ли сообщение запросом или ответом (в случае запроса — в ней сообщается тип запроса, адресат и номер версии протокола, а в случае ответа — номер версии протокола, статус и текстовую расшифровку статуса).

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

В протоколе SIP версии 2.0 существует 6 типов запросов (тип запроса задается в стартовой строке):

  • INVITE — вызывает адресата для установления связи. С помощью этого сообщения адресату передаются виды поддерживаемых сервисов (которые могут быть использованы инициатором сеанса), а также виды сервисов, которые желает передавать инициатор связи
  • ACK — сообщение подтверждающее согласие адресата установить соединения. В этом сообщении могут быть переданы окончательные параметры сеанса связи (окончательно выбираются виды сервисов и их параметры которые будут использованы)
  • Cancel — отмена ранее переданных запросов (используется в случае если необходимости в них больше нет)
  • BYE — запрос завершения соединения
  • Register — данным запросом пользователь идентифицирует свое текущее местоположение
  • OPTIONS — запрос информации о функциональных возможностях терминала (применяется в случае, если эти данные нужно получить до установления соединения, то есть до фактического обмена данной информацией с помощью запросов INVITE и ACK)

На каждый запрос, отправителю направляется ответ, содержащий код результата выполнения запроса. Формат этих ответов унаследован от протокола HTTP. Ответы кодируются 3-хзначным числом, первая цифра которого указывает на класс ответов, а остальные две — идентифицируют конкретный ответ в каждом классе. Устройство может не знать, что означает код ответа, но должно обязательно знать класс ответа. Всего существует 6 классов ответов:

  • 1?? — информационные ответы
  • 2?? — успешное окончание запроса
  • 3?? — информация об изменения местоположения вызываемого абонента
  • 4?? — информация об ошибке
  • 5?? — информация об ошибке сервера
  • 6?? — информация о невозможности вызова абонента (пользователя с таким адресом не существует, или пользователь отказывается принять вызов)

Информационные ответы сообщают о стадии выполнения запроса, они не являются завершением запроса. Остальные же классы ответов завершают выполнение запроса.

Пример

Рассмотрим пример процесса установления соединения с использованием SIP-протокола (пример взят из RFC 3261). Данный пример отражает работу базовых функций телефонии и соответственно не затрагивает такие возможности как видеосвязь передача текстовых сообщений и др. — общий принцип работы протокола остается неизменным.


рис. 1 (RFC 3261)

Пользователь Alice (sip:[email protected]) вызывает пользователя Bob (sip:[email protected]).

1. Пользователь Alice посылает сообщение INVITE прокси-серверу по умолчанию (atlanta.com) Если бы пользователю Alice был известен IP-адрес пользователя Bob и он мог к нему обратиться напрямую, то запрос INVITE в этом случае мог быть послан непосредственно вызываемому пользователю.

2. Прокси-сервер посылает запрос INVITE серверу вызываемого абонента (biloxi.com).

3. Далее прокси-сервер пользователя Bob при необходимости определяет его текущий IP-адрес и посылает ему сообщение INVITE — у пользователя начинает звонить телефон, о чем сообщается в ответе 180 (Ringing).

4. Если вызываемый пользователь ответил на звонок, то на запрос INVITE высылается ответ 200 (OK).

5. Вызывающий пользователь отправляет сообщение ACK, сообщающее вызываемому о том, что он получил ответ на свой запрос INVITE, им задаются окончательные параметры соединения. На этом этапе все готово к установлению соединения по протоколу RTP (Real-time Transport Protocol).

6. Устанавливается RTP-соединение с заранее согласованными параметрами.

7. Для завершения соединения, завершающим пользователем (кладет трубку) высылается запрос BYE, на которое высылается ответ 200 (OK)

Пока сообщения установления соединения (INVITE) ходят между прокси-серверами и неизвестно доступен ли вызываемый пользователь, в ответ на INVITE посылается ответ 100 (Trying), сообщающий о попытке установления соединения.

Так как прокси-сервер может устанавливать собственные соединения, его использование позволяет вызовам без проблем преодолевать NAT. Также возможно построение нескольких прокси-серверов в одну цепочку, что позволяет преодолевать сразу несколько NAT.

Кодеки

Для передачи звука и видео используются различные алгоритмы сжатия и кодирования данных. Эти алгоритмы называются кодеками. Различные кодеки используют различную ширину полосы пропускания, а также вносят различные задержки и обеспечивают различное качество сервиса. Для звуковых кодеков обычно ширина полосы пропускания составляет от 4-х до 64 кбит/с.

Методика тестирования

Основное направления тестирования SIP-телефонии заключается в рассмотрении качества передачи голоса при ограничении ширины полосы пропускания. Также будет рассматриваться качество передачи голоса при динамическом изменении числа сеансов IP-телефонии и изменении загруженности канала связи. При тестировании IP-маршрутизаторов будет также рассматриваться поведение потоков трафика при установлении сеансов IP-телефонии.

Более четкая методика будет разрабатываться по мере нарастания основательной базы результатов тестирования SIP-оборудования различных производителей.

Заключение

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

 

Взаимодействие клиентов SIP. Часть 1 / Хабр

Месяц назад я начал свое знакомство с IP-телефонией, а именно с Lync и Asterisk. И заметил следующую картину: в сети очень много интересных статей по практической стороне вопроса (как и что делать) и очень мало внимания уделено теории (в конце статьи приведены ссылки). Если Вы хотите разобраться с SIP, то извольте либо читать RFC 3261, либо одну из «этих толстых книг». Это, естественно, полезно, но многим хочется в начале изучить некую выжимку, а уж потом бросаться в омут с головой. Эта статья как раз для таких людей.

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

Простое взаимодействие клиентов

Взаимодействие клиентов в рамках SIP чаще всего осуществляется в виде диалога.

Диалог – это равноправное взаимодействие двух User Agent (UA) в виде последовательности SIP-сообщений между ними. При этом, существуют запросы, не образующие диалогов. Однако обо всем по-порядку.

Ниже приведен пример простого взаимодействия между двумя устройствами с поддержкой SIP:

Петр хочет начать обмен сообщениями с Иваном, для этого он посылает INVITE-сообщение с данными о типе сессии (простая, мультимедиа и т.д.). Сообщения имеют следующий формат: стартовая строка, одно или несколько полей заголовка, пустая строка, обозначающая конец полей заголовка и необязательное тело сообщения.

Стартовая строка содержит метод, Request-URI и версию SIP (актуальная – 2.0). Request-URI – это SIP-адрес ресурса, которому посылается запрос.

Поля заголовков имеют следующий формат: <Заголовок>: <Значение> <Перевод строки>

Первая строка начинается с заголовка Via. Каждое SIP-устройство, создающее или пересылающее сообщение, добавляет свой адрес в поле Via (как это происходит, я планирую показать в следующей части статьи). Обычно адрес представляет собой имя хоста, которое может быть разрешено с помощью DNS-запроса. Поле Via содержит версию SIP, знак “/”, пробел, транспортный протокол (UDP, TCP, TLS, SCTP), двоеточие, номер порта и branch – идентификатор транзакции. Ответы на этот запрос будут содержать такой же номер транзакции.

Чаще всего, значение branch начинается с “z9hG4bK”. Это значит, что запрос был сгенерирован клиентом, поддерживающим RFC 3261 и параметр уникален для каждой транзакции этого клиента.

Следующее поле, Max-Forwards, содержит относительно большое целое число. Каждый сервер SIP, который пересылает сообщение, уменьшает это число на единицу. Данное поле обеспечивает простой механизм обнаружение петель (loop).

Следом идут поля From и To, которые описывают отправителя и получателя запроса. Важно, что SIP-запросы маршрутизируются исходя из Request-URI, указанного в стартовой строке (см. выше). Это объясняется тем, что поля From и To могут быть изменены при пересылке. Если используется отображаемое имя (например, Ivan Ivanov), то SIP URI помещается внутрь пары угловых скобок. Параметр tag в поле From генерирует отправляющая сторона. В свою очередь принимающая сторона поместит свой tag в поле To.

Поле Call-ID – идентификатор вызова. Совокупность tag’ов из полей From и To и Call-ID однозначно идентифицируют данный диалог. Это необходимо, так как между клиентами может идти сразу несколько диалогов.

Следующее поле, Cseq, содержит порядковый номер запроса и название метода. В данном случае – INVTITE. Номер увеличивается с каждым новым запросом.

Поля Via, Max-Forwards, To, From, Call-ID и CSeq составляют минимальный необходимый набор полей заголовков SIP-сообщения.

Для сообщения INVITE также необходимо поле заголовка Contact, в котором содержится SIP URI, относящийся к коммуникационному устройству отправляющей стороны. Это поле используется, чтобы из всех устройств, которыми одновременно может пользоваться Петр, ответ был отправлен именно на данное устройство. Обратите внимание на значения полей From и Contact.

Первый раз я не заметил разницу:

В сообщении присутствует опциональное поле Subject, то есть тема сообщения. Некоторые SIP-клиенты могут выводить значение этого поля на экран. Для маршрутизации и идентификации диалога поле не используется и может быть произвольным.

Поля Content-Type и Content-Length отвечают за описание тела сообщения. В данном случае будет использоваться Session Description Protocol (SDP). Размер сообщения вычисляется с учетом символов перевода строки:

Детальное описание работы протокола SDP заслуживает отдельной статьи, поэтому ниже приведена только краткая расшифровка:

В ответ на INVITE SIP-клиент Ивана отправляет два сообщения: 180 Ringing и 200 OK. Первое сообщает, что на стороне Ивана SIP-клиент подает звуковой сигнал звонка, второе – подтверждает установку диалога. Разберемся с каждым из них.

Так будет выглядеть сообщение 180 Ringing:

Бледным выделен текст, который не изменился по сравнению с сообщением INVITE.

Обратите внимание на поля заголовков To и From. Несмотря на то, что данное сообщение идет со стороны Ивана, значения полей остаются такими же, как были в первоначальном запросе (от Петра к Ивану). Это объясняется тем, что данные поля определяют направление запроса, а не сообщения.

Строка Via также перекочевала из исходного запроса, в конце строки добавлен параметр received этот параметр содержит IP-адрес, с которого пришел запрос. Обычно это адрес, который может быть получен путем разрешения URI, содержащегося в Via.

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

Наконец, в поле Contact содержится актуальный адрес Ивана.

Так выглядит сообщение 200 ОК, которое отправил SIP-клиент Ивана:

Думаю, смысл всех полей, относящихся к протоколу SIP теперь ясен.

В ответ на 200 ОК клиент Петра отправляет подтверждение:

Данное сообщение подтверждает, что клиента Петра успешно получил ответ от клиента Ивана. Оба клиента договорились о параметрах меди-сессии, которая будет осуществляться по протоколу RTP.

Обратите внимание, что номер последовательности CSeq все еще равен единице, но в качестве метода уже стоит ACK. Параметр Branch в поле Via содержит новый идентификатор транзакции, так как ACK, отправляемый в ответ на 200 OK считает новой транзакцией.

Теперь давайте рассмотрим, как происходит завершение медиа-сессии. Клиент Петра посылает BYE-запрос для завершение сессии:

Получив запрос на завершение сессии, клиент Ивана посылает подтверждение:

Сессия завершена.

Мы рассмотрели простой вариант работы протокола SIP. Обратите внимание, что в разные моменты времени клиенты Ивана и Петра выступали то в роли сервера, то в роли клиента, поэтому во всех SIP-клиентах должна функционировать как серверная (User Agent Server или UAS), так и клиентская часть (User Agent Client или UAC).

В следующей статье я планирую рассмотреть взаимодействие клиентов SIP с использованием Proxy-сервера и регистрацию клиентов на Proxy-сервере.

Что почитать по теме

1. RFC 3261. tools.ietf.org/html/rfc3261
2. Всё, что вы хотели знать о протоколе SIP (три части). Андрей Погребенник. samag.ru/archive/article/1831
3. SIP: Understanding the Session Initiation Protocol. Alan B. Johnston. www.amazon.com/SIP-Understanding-Initiation-Protocol-Telecommunications/dp/1607839954/ref=sr_1_1?ie=UTF8&qid=1375104428&sr=8-1&keywords=sip#
4. Протокол SIP. Гольдштейн Б.С., Зарубин А.А., Саморезов В.В. www.vef-kvant.ru/sip.htm

в чем преимущества использования SIP-телефонии

Перспективное направление в IP-телефонии — SIP-телефония — звонки через интернет на основе протокола SIP. Этот протокол позволяет абонентам быть мобильными и принимать звонки независимо от местонахождения. Его возможности делают соединение стабильным, безопасным, с высоким качеством связи. Протокол в последнее время часто используют вместо популярного H.323. SIP-протокол рассматривается специалистами как более подходящий для интернет-соединений.

Разделение понятий IP, SIP, VoIP

Иногда эти понятия путают. Однако они совершенно четко разделяются между собой.

IP (Internet Protocol) — базовое понятие. Это технология, которая позволяет обмениваться информацией между всеми компьютерами в мире. IP был изобретен в 1981 году, и именно на основе протокола TCP/IP родился интернет.

Вопрос:

Какие еще протоколы используются для передачи данных?

Ответ:

IP — не единственный способ передачи данных в интернете. HTTP — протокол передачи гипертекста — web-страниц. HTTPS — тот же протокол HTTP, но с дополнительным шифрованием. SMTP — протокол обмена электронными письмами. FTP — протокол передачи файлов.

SIP (Session Initiation Protocol) — это один из видов интернет-протокола (IP) для передачи мультимедийной информации. Он описывает, как будет установлено соединение и какие каналы для передачи данных будут использоваться. SIP-телефония — технология на базе этого протокола для совершения телефонных звонков. Это вид телефонной связи через интернет.

VoIP — «Voice over IP», иначе «голос через интернет-соединение». Это технология передачи голоса через интернет. Изначально слышать друг друга могли только пользователи интернета. Сейчас с помощью специальных шлюзов VoIP позволяет звонить на городские и мобильные телефоны через интернет. VoIP используют и без телефонии, когда проходит интернет-трансляция: вебинары, видеоконференции, подкасты.

Подытожим, IP — глобальный протокол, по которому работает интернет. На его основе создано множество других протоколов, в том числе SIP. VoIP — общая технология передачи голоса через интернет, которая используется для разных задач. SIP-телефония — одна из ее разновидностей, в которой для связи используется модификация SIP-протокола.

Возможности SIP-телефонии

  1. Используется при скорости интернет-соединения от 256 Кбит/с, а это значит, что вы сможете общаться даже при плохом интернете.
  2. Поддерживает передачу мультимедийных данных: голоса, видео, изображений, мгновенных сообщений.
  3. Использование единого номера, который не зависит от географии и количества абонентов. К нему можно подключить всех сотрудников, а при переезде номер забрать с собой.
  4. Номер привязывается к уникальному домену, поэтому абонент постоянно будет на связи. Это похоже на электронную почту, которую можно проверить в любом месте, где есть интернет.
  5. Интегрируется в бизнес-систему путем объединения SIP-телефонии, 1С, CRM, систем аналитики, сайта. Руководитель может вести учет звонков, анализировать данные по продажам, получать отчетность по клиентам и сотрудникам.
  6. При SIP-телефонии в компании принимают множество звонков одновременно. При необходимости она позволяет организовать call-центр в офисе или удаленно.

Алгоритм работы SIP-телефонии

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

В телефонии это работает так. При звонке голос через микрофон и звуковую карту кодируется и сжимается с помощью кодека. Затем полученные данные разбиваются в IP-пакеты и передаются через шлюзы по сети. На принимающем устройстве данные раскодируются обратно в голосовое сообщение. Это типовой алгоритм работы для разных протоколов.

Для телефонии требуется специальное оборудование:

  1. Устройство, подключенное к сети. Это может быть SIP-телефон, обычный телефон с подключенным SIP-шлюзом, смартфон, компьютер, ноутбук, планшет с установленным на них SIP-клиентом (софтфоном).
  2. Кодек — механизм для кодирования голоса в IP-пакеты. Кодеки сжимают голос по-разному. Чем больше сжатие, тем меньше используется трафика при передаче, но хуже качество при обратной расшифровке голоса.
  3. SIP-сервер: прокси-сервер, Redirect-сервер, сервер регистрации.
  4. Специальные программы для разговора — софтфоны. Программа поддерживает связь с сервером, на котором у пользователя аккаунт, и позволяет звонить на другие аккаунты (обычно доступны аккаунты, которым услуга предоставлена тем же оператором).

Протокол помогает разным устройствам понимать друг друга. Абонент регистрируется на сервере и получает SIP-адрес. При звонке абонента два SIP-сервера взаимодействуют друг с другом: узнают IP-адреса компьютеров и ищут доступные кодеки для кодирования голоса.

Виды SIP-соединений:

  1. С участием прокси-сервера, который управляет маршрутизацией вызовов.
  2. С участием Redirect-сервера — сервера переадресации, который перенаправляет звонки.
  3. Прямое соединение между SIP-устройствами.

SIP-протокол — открытый стандарт, который поддерживается десятками софтфонов, IP-телефонов. Услуги SIP-телефонии оказывает множество телекоммуникационных компаний. Эта технология дает возможность звонить через интернет даже по городскому аналоговому телефону стандарта DECT, который подключен через SIP-шлюз.

Как устроен SIP-протокол?

SIP-протокол — один из способов передачи данных по сети. Он был разработан на основе протоколов HTTP (передача гипертекста, используется для веб-приложений) и SMTP (на его базе работает обмен электронной почтой). Также как и в HTTP, SIP-протокол использует текстовый формат сообщений. До него был широко распространен протокол передачи данных Н.323, который преобразовывал информацию в двоичный код. Из-за этого нормально взаимодействовать могли только устройства, которые поддерживают подобное кодирование. В SIP-протоколе такая проблема устранена: если нет возможности преобразовать данные, они игнорируются.

От SMTP пришел формат адресов пользователей. Он напоминает e-mail адреса, потому что состоит из имени и идентификатора хоста. SIP-адреса бывают четырех типов: имя@домен, имя@хост, имя@IР-адрес, номер_телефона@шлюз. В начале прибавляется приставка sip. Соединение по такому адресу удобнее, чем по IP-адресу, поэтому пользователи смогут найти друг друга, даже если IP-адрес поменялся.

SIP — «протокол инициирования сеансов», поэтому он отвечает за установление соединения. Он находит абонента и обеспечивает стабильность связи, но не передает непосредственно текст, голос или видео. В обмене мультимедийными данными его обычно используют для соединения с абонентом. За передачу звука отвечают другие протоколы, например RTP (Real-time Transport Protocol).

Технология была разработана в 1996 году и учитывает недоработки других сетевых протоколов. Ее создателями были специалисты из группы MMUSIC Инженерного совета интернета (Internet Engineering Task Force). Это международная организация, которая развивает протоколы и архитектуры.

Принципы протокола SIP

  1. Открытость и расширяемость — возможность разработки дополнительной функциональности.
  2. Масштабируемость. Количество пользователей сети может свободно увеличиваться без дополнительных доработок.
  3. Интеграция в стек уже разработанных технологий. Это позволяет устанавливать соединение между любыми участниками сети.
  4. Адаптивность — взаимодействие с другими протоколами и возможность их одновременного использования.
  5. Персональная мобильность — каждый человек получает уникальный идентификатор, который позволяет свободно перемещаться по миру и быть на связи.

Безопасность использования протокола SIP

Угрозы

При использовании IP-телефонии всегда существует риск атак. Злоумышленники могут:

  1. Украсть данные. Пароль к учетной записи пользователя может быть подобран с помощью специальных программ. Тогда мошенники могут использовать адрес для звонков по дорогим направлениям или получить доступ к другим паролям пользователя. Установка сложного пароля не всегда помогает пользователям, потому что злоумышленники могут использовать уязвимости в устройстве. Поэтому своевременно обновляйте прошивки телефонных аппаратов, заменяйте устаревшее SIP-оборудование и грамотно подходите к защите IP-шлюза и телефона на выходе в интернет. Как минимум SIP-устройство должно быть подключено к интернету через маршрутизатор с активным «сетевым экраном», брандмауэром.
  2. Прослушать разговор. Передача голоса передается без шифрования через RTP, и если в транзитном узле есть возможность перехвата, то разговор может быть перехвачен и прослушан с помощью инструмента Cain или подобных. Затем абонентов шантажируют или используют информацию для других неблаговидных целей.
  3. Узнать абонентов-адресатов. При прослушивании также можно определить, кому звонит абонент. Дальше использовать данные для манипуляции или других схем.
  4. Звонить за счет абонента. В крупных бизнес-центрах часто доступ к интернету предоставляется с использованием NAT (технологии преобразования IP-адресов), то есть у абонента есть IP-адреса в локальной сети, а общий публичный адрес могут использовать и другие пользователи. Так злоумышленники, имеющие доступ к публичному адресу, могут звонить через аккаунт жертвы.
  5. Манипулировать звонками. Реализуется с помощью атаки MITM (Man In The Middle), когда перехватывает трафик, вклинивается в соединение между абонентами и удаляет или искажает информацию, но при этом абоненты об этом не подозревают.
  6. Парализовать систему телефонии. Организация многочисленных ложных вызовов приводит к отказу в обслуживании АТС. Такая атака называется Denial of Service (DoS).
  7. Разорвать соединение, отправляя IP-пакеты с BYE-запросом, который завершает сеанс связи.

Меры безопасности

  1. Запретите в настройках звонки за границу или любые направления, которые не актуальны для бизнеса.
  2. Создайте список разрешенных IP-адресов, с которых может быть установлено соединение. Правда, тогда абонент не сможет звонить в любом месте.
  3. Оплачивайте звонки авансом. Когда оплаченное количество трафика израсходуется, связь прекратится. Злоумышленники не смогут потратить со счета больше, чем на нем есть.
  4. Зашифровывайте звонки. Так вы защитите себя от прослушивания. Для этого используйте протоколы SIP/TLS, SRTP или ZRTP. Настраивайте их через сервисы облачной телефонии или операторов связи.
  5. Защищайте сервер. Для этого генерируйте сложные пароли и отключите ответ о неверном пароле. Отключите гостевые звонки, тогда никто не сможет позвонить без авторизации. Включите режим блокировки при обнаружении нескольких попыток регистрации.
  6. Применяйте межсетевые экраны для закрытия внутренних и внешних сетевых портов, кроме служебных.
  7. Работайте через виртуальные частные сети (VPN). Однако этот способ имеет недостатки: качество связи ухудшается, усложняется сетевая структура, повышается нагрузка из-за дополнительного шифрования.

Заключение

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

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

 

Подробнее об услуге Виртуальной АТС: https://www.zebratelecom.ru/services/cloud-pbx/

Что такое SIP-телефония, как работает и для чего применяется

Большинство пользователей глобальной сети знают и даже активно используют способ передачи мультимедийных данных через Интернет – межсетевой протокол IP (Internet Protocol). Если говорить просто, то для обмена информацией, включая аудиосообщения, требуется установить IP-соединение между устройствами.


Но что такое SIP-телефония? Это один из протоколов передачи голосовой информации, который базируется на принципах IP-телефонии. Расшифровывается SIP как Session Initiation Protocol – «Протокол Установления Сеанса». Используется для множества целей – аудио и видеоконференции, телефония, онлайн-игры и другое. Протокол SIP работает по схеме «клиент-сервер-клиент», чередуя запросы и ответы.

Далее подробно остановимся на алгоритме работы, отличиях от IP и VoIP и преимуществах SIP-телефонии.

Как работает

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


  1. Первый абонент передает голосовое сообщение, которое записывается и сжимается с помощью специальных кодеков, встроенных в программные модули. Пользователь не замечает работу этих скриптов, однако, благодаря сжатию аудиоданных снижается нагрузка на Интернет-соединение. Качество при этом остается высоким за счет преобразования аналогового сигнала в цифровой.
  2. Цифровой сигнал поступает на принимающего устройство второго абонента – СИП-телефон, компьютер, смартфон.
  3. Между устройствами устанавливается связь, то есть сначала они находят друг друга по IP-адресу, а затем подключаются по SIP-протоколу и начинают сеанс.
  4. После соединения со вторым устройством цифровой сигнал преобразуется в аналоговый, и абонент слышит в трубке или гарнитуре голос собеседника.

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

Что нужно для отправки и приема звонка через Интернет?


Пользователям предлагается несколько вариантов применения SIP-протокола:

  1. С помощью ноутбука или стационарного ПК. На устройство следует установить программный клиент и оснастить его гарнитурой – обычно это наушники и микрофон.
  2. Используя смартфон, планшет или другой гаджет с наличием операционной системы и возможностью подключения к сети Интернет. На гаджет устанавливается специальный модуль, выполняется подключение и регистрация по инструкции к программному обеспечению. Звонок по SIP-каналу можно выполнить через мобильные сети 3G и 4G, а также через Wi-Fi.
  3. Посредством стационарного SIP-телефона, который подключается к роутеру.
  4. Применяя VoIP-шлюз с подключенным проводным телефоном. Шлюз подключается к роутеру.

Разберем на примере, что такое SIP.

Владислав планирует перелет самолетом из Пхукета в Москву на определенное время. На смартфоне у него SIP-клиент. Российская авиакомпания также имеет виртуальную АТС с поддержкой этого протокола. Владислав набирает номер компании, через сервер смартфона выполняется поиск IP-адреса авиаперевозчика. При отклике абоненты соединяются для обмена информацией.

Голосовые сообщения Владислава сжимаются и оцифровываются, после чего передаются на сервер собеседника. СИП-модуль виртуальной АТС дешифрует сигнал и передает его на устройство уже в аналоговом качестве – абонент слышит голос.

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

Из примера видим, что для работы SIP-телефонии необходимо интернет-соединение, а также наличие виртуального или физического телефона. Возникают вопросы, что такое SIP-номер и как его получить.

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

Также клиентам выдаются стандартные телефонные номера:

  • Виртуальные. Обычно – это комбинации с какой-то добавочной информацией, которая позволяет идентифицировать номер. Пользователи соединяются сначала с сервером поставщика услуги, а после по «цифровому хвосту» номера связываются непосредственно с абонентом.
  • Прямые. Это привычные комбинации цифр, которые используются для городских и междугородних номеров. Звонки на такие линии выполняются без отличия от вызовов через обычные АТС. Главное преимущество – качество сигнала выше, за счет цифровой обработки на стороне SIP-оператора.
  • Бесплатные. Номера вида 8-800 используются сервисами, службами поддержки и работы с клиентами по России. На них также можно звонить, используя SIP-протокол.

Ввод комбинаций номера в SIP-телефонии аналогичен с сотовой связью, то есть используется код страны. Например, для России – (+7).

Чем отличается SIP-телефония от VoIP и IP


Если СИП-протокол – это стандарт для звонков через Интернет, тогда возникает вопрос: для каких целей применяют IP-телефонию и VoIP? Например, подключаясь к виртуальной АТС, эти технологии используются совместно, что несколько запутывает неопытных пользователей. Давайте разберемся в понятиях.

Начнем с фундамента – это Internet Protocol или IP, что означает межсетевой протокол. По нему все сетевые устройства в мире связываются в глобальную сеть. Соответственно у каждого компьютера, гаджета, сервера или прибора подключенного к интернету есть уникальный IP-адрес. С его помощью пользователи обмениваются любыми данными и информацией.

Чтобы передавать аудиоданные по сети была придумана собственная технология, ответвление Internet Protocol – VoIP, то есть Voice over IP. Переводится как «голос по IP» или проще «голос по Интернету». С помощью этой технологии пользователи могут обмениваться данными, где в каком-либо виде присутствует голос. Например, вебинары и трансляции через Интернет, звонки в сети, онлайн-игры, видеонаблюдение с оповещением и другое.

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

Преимущества технологии

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

  1. Экономия бюджета. Подключить этот протокол гораздо дешевле, чем обеспечить офис аналоговой АТС. К тому же в вашем распоряжении многоканальный номер, отличная скорость и качество соединения. Вы можете легко увеличить число операторов в вашей сети при минимальных затратах времени и средств. Попробуйте сделать такое в аналоговой АТС.
  2. Телефонизация компании на «раз-два». SIP-телефонию можно описать одной фразой: «подключись и работай». Например, вы только въехали в новый офис, ещё не успели обустроиться, но связь с клиентами хотите поддерживать. Как это сделать быстро и без забот, если у вас есть ноутбук с гарнитурой, компьютер или гаджет? Только с помощью технологии SIP. Для стабильного соединения подойдет даже мобильный интернет 3G или 4G.


  1. Оплата осуществляется только по базовым тарифам за услуги телефонной связи, независимо от местонахождения абонента. Это очень удобно для крупных компаний с разветвленной сетью представительств, филиалов, отделов в разных городах.
  2. Интеграция телефонии с системами аналитики, 1С, CRM. Например, используя этот протокол в сервисе коллтрекинга можно проверять различные метрики: эффективность работы операторов, отдела продаж, отслеживать рекламные каналы, по которым приходят клиенты и многое другое. Все это повышает эффективность рекламных кампаний и уровень обслуживания.
  3. SIP-соединение хорошо защищено от внешнего прослушивания, чего не скажешь о аналоговых линиях связи.


  1. Технология позволяет создать удаленный колл-центр, не тратя деньги на закупку стационарного оборудования и аренду офиса.
  2. Множество опций – голосовая почта, переадресация между сотрудниками и отделами, автоответчик, голосовое меню. Также СИП-технология позволяет проставлять очередность звонков, ориентируясь на загрузку менеджеров, записывать разговоры.
  3. Протокол отлично работает с модулями обратного звонка, пропущенных вызовов на сайте. В связке они увеличивают показатели конверсии звонков в заявку в среднем на 60%.
  4. Наличие программного обеспечения для любых операционных систем, мобильных устройств, смартфонов.

Мы ответили на вопрос, SIP-телефония: что это и как работает. Рассмотрим, где эта технология активнее всего применяется.  

СИП-телефония применяется коммерческими и государственными корпорациями, малым и средним бизнесом для создания скоростной сети внутрикорпоративного общения, а также для связи с партнерами и клиентами. Например, крупные колл-центры, торговые павильоны и мега-маркеты используют этот IP-протокол.

Обычные пользователи также применяют программы и оборудование для интернет-звонков. Технология СИП существенно сокращает расходы на телефонию.

Резюме

Мы изучили, что такое SIP. Узнали отличия этого вида интернет-телефонии от IP-связи и VoIP. Рассмотрели принцип работы, преимущества, программное обеспечение и сферу применения технологии.

СИП-телефония – эффективное и экономичное решение для стартапа, а также практичный вариант организации бизнес-процессов в корпорации, на крупных предприятиях и госорганизациях. Технология помогает вести аналитику звонков, повышать качество обслуживания клиентов и доходы компании.

Протокол SIP: инфраструктура, механизм обмена сообщениями, дополнительные возможности

Протокол SIP — (Session Initiation Protocol) — протокол установления сеанса связи. Данный протокол является одним из основных, используемых в IP-телефонии. Он был разработан в 1996 году Марком Хэндли, Джонатаном Розенбергом и Хеннигом Шульцринном, в 1999 году была выпущена версия 1.0 (RFC 2543), затем протокол был доработан, и в 2002 году и принят в качестве протокола сигнализации в мобильной телефонии (RFC 3261). SIP был изначально разработан только для работы с сеансами связи (установка/завершение/изменение), но не для передачи данных.Отметим некоторые особенности работы протокола SIP:

  • SIP является протоколом прикладного уровня  и может  использовать в качестве транспорта  протоколы UDP, TCP, SCTP;
  • SIP позволяет устанавливать как одноадресные, так и многоадресные сеансы связи;
  • SIP использует регистрацию абонентов для установления сеанса;
  • SIP расширяем, за счет передачи параметров не в бинарном виде, а в виде текста;
  • SIP масштабируем и не имеет ограничений номерной базы, т.к. использует адресацию в стиле URI;
  • SIP модифицируем и позволяет изменять параметры созданных сессий, такие как адрес, номер порта, количество абонентов и количество медиапотоков.
Расположение протокола SIP в модели OSI Расположение протокола SIP в модели OSI

Инфраструктура сетевых агентов протокола SIP

Пример sip-сети Пример sip-сети

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

  • Терминал — является конечным узлом в SIP-сессии, который либо участвует в передаче сообщений, либо управляет сессией. Терминал в модели взаимодействия SIP выполняет одновременно роль и клиента и сервера.
  • Регистратор — узел в сети SIP, который производит регистрацию терминалов и хранит информацию о них, а также позволяет производить поиск терминалов по необходимым параметрам.
  • Прокси-сервер — промежуточный объект SIP-сети, обеспечивающий маршрутизацию сессий и отвечающий за доставку сообщений терминалам. Позволяет выполнять запросы от имени других узлов сети, тем самым ускоряя доставку сообщений через наиболее короткие маршруты.
  • Шлюз — пограничный узел, используемый для передачи сообщений между сетями.
  • Контроллер границы сеанса — специализированный элемент сети, служащий для выполнения сервисных функций между терминалами, такими, например, как обход NAT.
  • Сервер перенаправления — вспомогательный элемент сети, используемый для перенаправления запросов от прокси-серверов к внешним доменам.

Обмен сообщениями в протоколе SIP

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

Регистрация sip-клиента Регистрация sip-клиента

Запросы генерируются терминалами-клиентами к серверам и инициализируют функциональность протокола. Отправка запроса подразумевает получение ответа о результате транзакции. Рассмотрим подробно возможные варианты запросов SIP клиентов:

  • REGISTER — регистрация URI клиента на сервере регистрации;
  • INVITE — инициализация протокола для установления сеанса;
  • ACK — подтверждение инициализации сеанса со стороны клиента;
  • BYE — завершение сеанса;
  • CANCEL — отмена любого ожидающего запроса;
  • UPDATE — изменение состояния сеанса без изменения диалога;
  • REFER —  запрос на оформление переадресации;
  • PRACK — предварительное (временное) подтверждение;
  • SUBSCRIBE — подписка на уведомления о событии;
  • NOTIFY — сообщение подписчику о произошедшем событии;
  • PUBLISH — публикация сообщения на сервере;
  • MESSAGE — отправка текстового сообщения;
  • INFO — информация о сеансе, без его модификации;
  • OPTIONS — запрос информации о функциональности сервера.
Звонок в системе SIP Звонок в системе SIP

Ответы разделяются на классы, определяемые их цифровым кодом. Рассмотрим подробно классы возможных ответов:

  • 1XX — коды предварительного состояния сеанса. Указывают на то, что запрос был получен сервером и поступил в обработку;
  • 2XX — успешное завершение запроса;
  • 3XX — перенаправление запроса с указанием необходимости заполнения его новым адресом назначения;
  • 4XX — отклонение запроса, либо указание на ошибку в запросе;
  • 5XX — отказ в выполнении запроса;
  • 6XX — отклонение запроса по причине невозможности установить соединение.
Звонок в системе SIP с использованием B2BUA Звонок в системе SIP с использованием B2BUA

Дополнительные возможности SIP

SIP-сжатие

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

Сигнализация SIP DTMF

Протокол SIP использует четыре метода для передачи цифровых сигналов между терминальными агентами:

  1. Использование аудио тональных сигналов в RTP-потоке с lossles-кодированием ( u-law, a-law).
  2. Использование именованных телефонных событий (NTE) в потоке RTP (наиболее распространенный метод).
  3. Метод SIP INFO — отправка DTMF-кодов в заголовке пакета, определенных контекстом /dtmf-relay.
  4. Метод SIP NOTIFY — передача кодов DTMF в запросе NOTIFY (уведомление о произошедшем событии).

SIP Perfomance Tester

SIP Perfomance Tester является инструментом для тестирования ПО, либо инфраструктуры сети под нагрузкой. Он позволяет определить максимальное количество вызовов, количество вызовов в секунду, так же количество одновременных вызовов. Данный продукт имитирует SIP- и RTP- трафик для того, чтобы определить будет ли стабильно работать ваша конфигурация сервера или  сети под нагрузкой. SIP Perfomance Tester измеряет такие показатели, как задержка ответа, соотношение запросов и ответов, потеря пакетов, время задержки приема или передачи.

SSIP

Security SIP разработан для обеспечения безопасной передачи информации путем шифрования данных, передаваемых по протоколу SIP. SIPS использует TLS для обеспечения защищенного канала связи между клиентом и сервером с использованием механизма рукопожатия. Данные же упаковываются по протоколу SRTP в шифрованные IP-пакеты и их передача начинается только после того, как устанавливается SSL-туннель между клиентом и сервером. Важной особенностью использования SSIP является необходимость его поддержки всеми используемыми устройствами в сети, если хотя бы один узел не поддерживает SRTP/TLS, то установить защищенное соединение будет невозможно.

SIP ALG

SIP ALG это механизм маршрутизации SIP-трафика, несколько похожий на SIP Proxy. ALG является программным шлюзом и используется в прослойке между устройствами SIP и сетью. SIP ALG анализирует поступающий трафик и может управлять им разрешая, запрещая, либо перенаправляя его другим узлам сети. Данный программный шлюз позволяет синхронизировать входящие потоки либо сессии между клиентами и серверами. Также в число его возможностей входит использование динамических портов транспортных протоколов для взаимодействия с устройствами NAT. Этот механизм позволяет SIP-трафику беспрепятственно транслировать адреса назначения и отправителя через таблицы NAT.  При использовании данной технологии маскарадинг адресов происходит на уровне самого шлюза ALG.

НОУ ИНТУИТ | Лекция | Протокол инициирования сеансов связи (SIP)

Аннотация: Лекция посвящена протоколу SIP Приведены архитектура, принцип работы и рекомендации стандарта SIP. Описаны компоненты архитектуры основанной на SIP и их роль. Описана интеграция протокола с IP-сетями

5.1. Принципы построения протокола SIP

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

Протокол SIP разработан группой MMUSIC комитета IETF, а спецификации протокола представлены в документе RFC 2543. В основу протокола заложены следующие принципы:

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

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

    Для расширения возможностей протокола SIP могут быть также добавлены и новые типы сообщений.

  4. Интеграция в стек существующих протоколов Интернета, разработанных IETF. Протокол SIP является частью глобальной архитектуры мультимедиа, разработанной IETF. Эта архитектура включает в себя также и другие протоколы: резервирования ресурсов (Resource Reservation Protocol — RSVP, RFC 2205), транспортный протокол реального времени (Real-Time Transport Protocol — RTP, RFC 1889), протокол передачи потоковой информации в реальном времени (Real-Time Streaming Protocol — RTSP, RFC 2326), протокол описания параметров связи (SDP, RFC 2327). Однако функции самого протокола SIP не зависят ни от одного из этих протоколов.
  5. Взаимодействие с другими протоколами сигнализации. Протокол SIP может быть использован совместно с протоколом Н.323.

5.2. Интеграция протокола SIP с IP-сетями

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

Сигнальные сообщения могут переноситься как протоколом транспортного уровня UDP, так и протоколом TCP. Протокол UDP позволяет быстрее, чем TCP, доставлять сигнальную информацию (даже с учетом повторной передачи неподтвержденных сообщений), а также вести параллельный поиск местоположения пользователей и передавать приглашения к участию в сеансе связи в режиме многоадресной рассылки. В свою очередь, протокол TCP упрощает работу с межсетевыми экранами (firewall), а также гарантирует надежную доставку данных. При использовании протокола TCP разные сообщения, относящиеся к одному вызову, могут либо передаваться по одному TCP-соединению, либо для каждого запроса и ответа на него может открываться отдельное TCP-соединение. На рисунке 5.1 показано место, занимаемое протоколом SIP в стеке протоколов TCP/IP.

Место протокола SIP в стеке протоколов TCP/IP
Рис. 5.1. Место протокола SIP в стеке протоколов TCP/IP

По сети с маршрутизацией пакетов IP может передаваться пользовательская информация практически любого вида: речь, видео и данные, а также любая их комбинация. При организации связи между терминалами пользователей необходимо сообщить встречной стороне, какого рода информация может приниматься (передаваться), алгоритм ее кодирования и адрес, на который следует передавать информацию. Таким образом, одним из обязательных условий организации связи при помощи протокола SIP является обмен между сторонами данными об их функциональных возможностях. Для этой цели чаще всего используется протокол описания сеансов связи — SDP (Session Description Protocol). Поскольку в течение сеанса связи может производиться его модификация, предусмотрена передача сообщений SIP с новыми описаниями сеанса средствами SDP.

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

Протокол SIP предусматривает организацию конференций трех видов:

  • в режиме многоадресной рассылки ( multicasting ), когда информация передается на один multicast -адрес, откуда затем доставляется сетью конечным адресатам;
  • при помощи контроллера управления конференции (MCU), к которому участники конференции передают информацию в режиме «точка-точка», а контроллер обрабатывает информацию (т. е. смешивает или коммутирует) и рассылает ее участникам конференции;
  • путем соединения каждого пользователя с каждым в режиме «точка-точка».

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

5.3. Адресация

Для организации взаимодействия с существующими приложениями IP-сетей и для обеспечения мобильности пользователей протокол SIP использует адрес, подобный адресу электронной почты. В качестве адресов рабочих станций используются специальные универсальные указатели ресурсов — так называемые SIP URL (Universal Resource Locators).

SIP-адреса бывают четырех типов:

  • имя@домен;
  • имя@хост;
  • имя@IР-адрес;
  • №телефона@шлюз.

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

Во второй части адреса указывается имя домена, рабочей станции или шлюза. Для определения IP-адреса устройства необходимо обратиться к службе доменных имен — Domain Name Service (DNS). Если же во второй части SIP-адреса размещается IP-адрес, то с рабочей станцией можно связаться напрямую.

В начале SIP-адреса ставится слово «sip:», указывающее, что это именно SIP-адрес.

Примеры SIP-адресов:

sip: [email protected]
sip: [email protected]
sip: [email protected]

5.4. Архитектура сети SIP

На рисунке 5.2 представлена упрощенная схема действия протокола.

Архитектура "клиент-сервер"
Рис. 5.2. Архитектура «клиент-сервер»

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

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

В протоколе SIP устанавливаются следующие основные компоненты:

  • Терминал.

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

  • Прокси-сервер.

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

    Предусмотрено два типа прокси-серверов — с сохранением состояний (stateful) и без сохранения состояний (stateless).

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

    • использует протокол TCP для передачи сигнальной информации;
    • работает в режиме многоадресной рассылки сигнальной информации;
    • размножает запросы.

    Последний случай имеет место, когда прокси-сервер ведет поиск вызываемого пользователя сразу в нескольких направлениях, т. е. один запрос, который пришел к прокси-серверу, размножается и передается одновременно по всем этим направлениям.

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

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

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

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

  • Сервер определения местоположения пользователей.

    Пользователь может перемещаться в пределах сети, поэтому необходим механизм определения его местоположения в текущий момент времени.

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

    Этот сервер может быть совмещен с прокси-сервером или быть реализован отдельно от прокси-сервера, но иметь возможность связываться с ним.

Взаимодействие клиентов SIP. Часть 2 / Хабр

В предыдущей статье мы рассмотрели простое взаимодействие клиентов SIP без использования Proxy-сервера. Такое взаимодействие на практике встречается чрезвычайно редко, но отлично подходит для того, чтобы понять основы SIP.

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

В этой статье я планирую рассмотреть три вопроса:

  1. Выбор транспортного протокола и поиск Proxy;
  2. Работа через Proxy;
  3. Регистрация на Proxy-сервере.

Выбор транспортного протокола и поиск Proxy

Поскольку протокол SIP поддерживает несколько транспортных протоколов (UDP, TCP, SCTP, TLS), необходимо каким-то образом определять, какой протокол использовать. Для этого существет несколько способов.

Первый способ предполагает явное указание транспорта в SIP URI (кроме TLS). Выглядит это вот так:

Если транспорт явно не указан, то действует следующий алгоритм:

  1. Если SIP URI содержит IP-адрес, то для SIP URI используется UDP, для SIPS (Secure SIP) – TCP.
  2. Если IP-адрес не укзаан, но укзаан порт, то для SIP URI используется UDP, для SIPS – TCP.
  3. Если отсутсвует IP-адрес и порт, но в DNS присутствует соответсвующая NAPTR-запись, тогда “SIP+D2U” соответствует UDP, “SIP-D2T” указывает на TCP и “SIP-D2S” — на SCTP. NAPTR содержит ссылку на SRV-запись, которая будет использоваться для поиска Proxy-сервера. Если NAPTR остуствует, то должен быть выполнен запрос на поиск SRV-записи.
  4. Результатом SRV запроса будет имя и порт Proxy-сервера.
  5. Если SRV-запись отсутствует, то выполняется A или AAAA-запрос. При это для SIP URI используется UDP, для SIPS – TCP.

Для того, чтобы лучше разобраться, рассмотрим пример, когда мы хотим связаться с клиентом sip:[email protected]:

Итак, мы выяснили, параметры Proxy-сервера Ивана. Теперь предлагаю рассмотреть использование Proxy в рамках SIP-диалога.

Ремарка для тех, кто не знает, что такое NAPTR. Я узнал, что есть такой тип DNS-записи только, когда писал эту статью, так что не отчаивайтесь. Чуть подробнее про NAPTR здесь.

Взаимодействие с использованием Proxy

Для чего же нам необходим SIP Proxy? Как я уже сказал, в примере из 1-ой части статьи клиенты знали IP-адреса друг друга и могли общаться напрямую. В реальной жизни клиенты чаще всего получают адреса динамически, поэтому нет смысла «запоминать» тот или иной IP. Первое, что приходит на ум в данной ситуации – использовать A-записи DNS и определить реальный действующий адрес. Однако тут кроется следующая проблема: IP-адрес идентифицирует конкретное устройство, а не пользователя на нем. Особенностью взаимодействия SIP является то, что обмен сообщения происходит не на уровне устройство-устройство, а на пользователь-пользователь. При этом один пользователь может одновременно использовать несколько SIP-клиентов: на мобильном телефоне, на рабочем компьютере, на домашнем компьютере и на SIP-телефоне. Как же быть?

Протокол SIP предлагает следующее решение: создается SIP Proxy и каждый пользователь регистрирует свои устройства на этом Proxy (точнее пользователи регистрируются на сервере регистрации, а Proxy имеет доступ к базе регистрации, но для простоты будем считать, что это один и тот же сервер). Как это делается, я покажу ниже. Пока просто запомните, что Proxy знает, как именно найти тот или иной клиент пользователя.

Когда Петр звонит Ивану, выполняется следующая последовательность действий:

  1. SIP-клиента Петра определяет адрес и протокол SIP Proxy Ивана (как это делается — см. выше)
  2. Клиент отправляет на Proxy запрос INVITE
  3. Proxy-сервер смотрит, на каких устройствах зарегистрировался Иван и отправляет запрос на все эти устройства
  4. Иван отвечает на звонок на одном из устройств и шлет 200 OK на Proxy
  5. Proxy перенаправляет 200 OK Петру
  6. Петр получает SIP-адрес Ивана на конкретном устройстве из поля Contact вответе 200 ОК и шлет ответ напрямую, минуя Prxoy
  7. Все последующее общение идет также напрямую

На схеме это выглядит следующим образом:

Для тех, кто изучил первую часть статьи, все выглядит довольно знакомо; добавился только промежуточный Proxy-сервер. Соответственно и обмен сообщениями изменился незначительно.

Прежде, чем преступим к детальному рассмотрению, маленькая ремарка. В рамках SIP разделяют два типа URI. Первый из них – ползовательский URI, также известный как address of recorf (AOR). Запрос, отправленный на этот адрес предполагает поиск в базе данных Proxy и отправку запроса одному или несольким устройствам. Второй – URI устройства (а точнее – пользователя на устроястве). URI устройства обычно называется контакт и содержится, соответственно, в поле Contact SIP-сообщения. AOR содердится в полях From и To.

Начало разговора

Итак, Петр посылает INVITE для Ивана на Proxy-сервер:


Proxy-сервер перенаправляет запрос всем SIP-клиентам Ивана. Для простоты предположим, что Иван использует только одно устройство. Чтобы SIP-клиент понимал, что запрос был перенаправлен через Proxy, сервер добавляет свое заголовочное поле via:

SIP-клиент Ивана шлет ответ 180 Ringing (Иван слышит звонок). При этом он добавляет tag в поле To и указывает свой контакт в поле Contact. Кроме того, в первом поле via добавился параметр received этот параметр показывает, с какого адреса клиент Ивана получил запрос (т.е. адрес Proxy-сервера, как его видит Иван). Это бывает полезно знать для решения возникающих проблем:

Proxy, соответственно, перенаправляет запрос клиенту Петра. При этом он убирает свой via:

После отправки 180 Ringing, как только Иван снимет трубку, клиент Ивана отправляет на Prxoy ответ 200 OK:

Proxy передает этот ответ Петру, убирая при этом via:

Теперь самое интересное. Клиент Петра отправляет сообщение АСК непосредственно клиенту Ивана в обход Proxy. Причем, если бы Иван одновременно использовал несколько клиентов SIP, ответ пришел именно на тот, который нужно. Благодаря чему это возможно?

200 ОК отправляется с клиента на котором Иван снял трубку. Более того, в поле Contact ответа 200 ОК содержится URI, соответствующий пользователю Иван на конкретном устройстве. Таким образом клиент Петра отправляет АСК именно на это устройство, после чего участие Proxy больше не требуется:

Все остальные сообщения, включая медиа-траффик идут в обход Proxy.

Конец разговора

В конце разговора клиент Ивана отправляет BYE напрямую клиенту Петра:

Петр в ответ шлет подтверждение:


Здесь все, как в первой части статьи.

Итак, мы рассмотрели взаимодействие SIP-клиентов с участием Proxу-сервера. Остался один единственный вопрос: откуда Proxy узнал адреса клиентов Ивана? С помощью процедуры регистрации. Как это происходит, я расскажу ниже.

SIP-регистрация

Регистрация выглядит следующим образом:

Давайте подробнее рассмотрим каждое из сообщений. Иван отправляет на сервер запрос Register (для простоты считаем, что роль сервера регистрации установлена на proxy.domain.ru). Самое важное в этом запросе – поле Contact. Это адрес Ивана на конкретном устройстве:

В ответ сервер присылает 401 Unauthorized, то есть требование авторизации. Самое важное поле в ответе — WWW-Authenticate. Не сложно догадаться, что realm — это домен, а algorithm указывает, какой хеш-алгоритм мы будем использовать. Интерес вызывает поле nonce:

Nonce — это сокращение от «number used once». Nonce — это одноразовая случайная последовательность, которую клиент Ивана cкомбинирует со строкой пароля, после чего сгенерирует MD5-хеш от полученной строки и поместит результат в новый запрос в поле WWW-Authenticate (на самом деле все несколько сложнее, но для простоты будем считать, что все именно так). Для этого служит параметр response.

Зачем нужен nonce? Если бы клиент генерировал MD5 от пароля и не использовал nonce, то хеш каждый раз получался бы один и тот же. Злоумешленник мог бы перехватить такой хеш и использовать для авторизации. Это было бы столь же небезопасно, как передавать пароль в открытом виде.

Если использовать nonce, MD5 каждый раз берется от новой строки и получается разным. Поэтому даже перехватив хеш, злоумышленник скорее всего не сможет его использовать для авторизации.

Кстати, обратите внимание, что новый запрос на регистрацию имеет CSeq на единицу больше:

Сервер также комбинирует nonce с паролем Ивана и получает MD5-хеш. После этого он сравнивает свой хеш с хешем, полученным от Ивана. Если они совпадают, то сервер присылает 200 ОК. Обратите внимание на то, что в поле Contact добавился параметр expires. В данном случае регистрация будет храниться в базе сервера в течение 3600 секунд или одного часа:

Если Иван хочет продлить регистрацию, то он должен отправить еще один REGISTER в течение этого часа.

Что делать, если Иван использует сразу несколько устройств с поддержкой SIP? Все очень просто – необходимо отправить запрос на регистрацию с каждого из них.

После того, как в базе данного сервера регистрации появится соответствующая запись, Proxy-сервер сможет перенаправлять запросы на SIP-клиенты Ивана.

Bonus для тех, кому интересно

Вы могли заметить, что, в ответ на запрос регистрации, сервер присылает ответ, содержащий To-tag:

Понятно, что при установке диалога данный tag помогает избежать повторного получения одного и того же сообщения. Для этого существует правило: если сообщение не содержит To-tag и UAS уже получал сообщение с таким же CSeq, From-tag и Call-ID, то сообщение отбрасывается. Для чего же нужен To-tag, если мы не устанавливаем диалог с сервером регистрации. Лучший ответ, который я смог найти — в RFC 3261 написано, что ответ 200 ОК, приходящий на запрос без To-tag должен содержать To-tag. То есть, это ни для чего не нужно, но так принято.

Надеюсь, что работа протокола SIP, после прочтения статьи, стала для вас более понятной. Буду рад вашим комментариям.

Что такое протокол SIP?

Протокол инициации сеанса (SIP), популярный протокол интернет-телефонии, составляет основу всех типов сеансов связи через Интернет. Он устанавливает сеансы, управляет сигнализацией и завершает соединение по окончании сеанса.

Если вы хотите знать, что такое SIP, вы также можете узнать:

  • Как голосовые и видеозвонки проходят через Интернет?
  • Как сообщения передаются по сетям интернет-протокола (IP)?
  • Как мобильные вызовы совершаются через сети Long Term Evolution (LTE) или Voice over Long Term Evolution (VoLTE)?

Чтобы полностью понять, как работают интернет-телефонные системы и сетевые сервисы, такие как SIP-транкинг, вам нужно знать SIP.Мы создали руководство из двух частей, чтобы ответить на все ваши вопросы, связанные с SIP. В этой части мы сосредоточимся на самом протоколе. Во второй части мы поговорим о транкинге SIP — основном использовании SIP, о котором должно знать большинство ИТ-менеджеров.

Буква «P» в SIP обозначает «протокол». Давайте сначала разберемся, что такое протокол.

Что такое интернет-протокол?

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

Для простоты мы сосредоточимся на протоколах, которые используются для совершения и приема голосовых и видеозвонков через Интернет. Это известно как технология передачи голоса по Интернет-протоколу (VoIP). Системы, позволяющие передавать голосовые и видеозвонки через Интернет-сети, известны как системы VoIP или служебной телефонной связи.

Важно помнить, что VoIP не является протоколом сам по себе . Вместо этого это общий термин для всех технологий, участвующих в передаче голосовой и видеоинформации с использованием IP-адресов.

Связь между сетевыми устройствами в Интернете — это не просто один протокол. Несколько протоколов работают одновременно, создавая их друг над другом в несколько слоев, вместе известных как «стек протоколов». Различные модели объясняют, как протоколы накладываются друг на друга, но чаще всего используется модель взаимодействия открытых систем (OSI), разработанная Международной организацией по стандартизации (ISO).

Different layers of the OSI model

Модель OSI с расположением протоколов, задействованных в технологии VoIP ( Источник )

Что такое SIP?

SIP — это протокол прикладного уровня и основа современных интерактивных коммуникаций через Интернет (голосовые вызовы, видеозвонки и т. Д.).

Для чего используется SIP?