Протокол инициации сеанса (SIP): элементы, функции и многое другое
Session Initiation Protocol (SIP) — самый популярный протокол передачи голоса по IP (VoIP). Этот протокол используют несколько устройств и приложений VoIP, в том числе Apple FaceTime. Что такое сигнальный протокол и, что более важно, что такое SIP? Если вам интересно узнать больше, продолжайте читать! Я расскажу вам все о том, что такое SIP, о различных элементах, из которых состоит SIP, и о ключевых особенностях протокола.
SIP определен в RFC 3261, поэтому, если у вас есть технические знания и терпение, чтобы прочитать технический документ объемом более 200 страниц, не стесняйтесь щелкнуть эту ссылку. Тем не менее, если вы ищете основательное введение в предмет, которое вы можете легко усвоить всего за 10 минут, эта статья для вас.
Начнем с ответа на вопрос «Что такое SIP?»
Что такое SIP?
Как указывалось ранее, SIP — это сигнальный протокол. Протокол сигнализации представляет собой набор правил для установления, поддержания, изменения и разрыва IP-вызовов или мультимедийных сеансов. Вы можете думать о вызове на основе IP как о сеансе, состоящем из двух фаз:
- Этап установления звонка.
- Фаза для передачи голосовых или других мультимедийных пакетов.
SIP в основном работает на первой фазе, но он остается на случай, если сеанс потребует каких-либо изменений или если пришло время завершить сеанс.
Разработчики и сетевые администраторы предпочитают SIP другим протоколам сигнализации, таким как H.323, MGCP и Q.931, поскольку он основан на тексте. Это означает, что его легче просматривать и отлаживать. SIP также является более масштабируемым и гибким и имеет более низкую стоимость входа.
В зависимости от характера сеанса SIP, который вы хотите выполнить, вам потребуются пользовательские агенты SIP, регистраторы, прокси-серверы и другие элементы SIP (например, пограничный контроллер сеанса, шлюз, сервер перенаправления). Однако давайте сосредоточим наше обсуждение на ключевых элементах SIP. Это все, что нам нужно, чтобы понять базовый вызов SIP.
3 ключевых SIP-элемента
SIP состоит из 3 основных элементов: пользовательские агенты, регистраторы и обратные прокси. Да, полноценная SIP-сеть, безусловно, будет иметь несколько других SIP-элементов, но эти три являются наиболее широко используемыми. Давайте обсудим каждый.
1. Агент пользователя
Когда пользователь хочет позвонить или отправить сообщение другому пользователю с использованием протокола SIP, он сделает это через пользовательский агент SIP. Пользовательский агент SIP — это физическое устройство или программное приложение, которое отправляет или принимает вызовы/сообщения. Может работать и как клиент и как сервер в SIP-сети. В качестве клиента пользовательский агент отправляет запросы на сервер, который может быть другим пользовательским агентом или другим элементом SIP, например обратным прокси-сервером. Как сервер, он отвечает на запросы, отправленные клиентом, который также может быть другим агентом пользователя или элементом SIP.

Теоретически пользовательский агент может использоваться для прямой связи с другим пользовательским агентом. Это только в том случае, если первый пользовательский агент знает местоположение второго пользовательского агента (например, IP-адрес). Хотя в реальном мире это не так. Пользователь или пользовательский агент обычно не знает местонахождение другой стороны. Вот где другие элементы SIP вступают в игру.
2. Регистратор
Одной из ключевых функций протокола SIP является точное определение местоположения пользователя, с которым хочет связаться другой пользователь. Для этого местоположение каждого пользователя должно быть записано где-то в SIP-сети. Это работа регистратора SIP. Регистратор SIP — это сервер, который принимает регистрации от пользователей через пользовательский агент, в который они в данный момент вошли.
После успешной регистрации регистратор связывает рассматриваемого пользователя с пользовательским агентом, с помощью которого он вошел в систему. Затем регистратор записывает эту ассоциацию в службу определения местоположения. Эта служба представляет собой просто базу данных, содержащую местоположение пользователей и пользовательских агентов. Таким образом, когда другой элемент SIP (обычно прокси-сервер) хочет найти местоположение пользователя, он просто ищет эту базу данных.
Хотя регистратор может размещаться на отдельном компьютере, он обычно размещается на том же физическом сервере, что и служба определения местоположения, на так называемом прокси-сервере.

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

Как только два пользовательских агента узнают местоположение другой стороны, они могут начать общение. Эта часть больше не является обязанностью SIP. Тем не менее, как упоминалось ранее, SIP иногда может вмешаться, чтобы внести изменения или завершить сеанс.
Хотя это, безусловно, одна из основных функций протокола SIP, определение местоположения каждого пользователя — не единственная его функция.
5 SIP-функций
Как упоминалось ранее, SIP в основном отвечает за настройку IP-вызова и других мультимедийных сеансов. Это должно повлечь за собой нечто большее, чем просто определение местоположения пользователя в сети. Вот 5 ключевых функций SIP, связанных с настройкой и завершением мультимедийных коммуникаций.
1. Местоположение пользователя
Вы уже знаете это из наших обсуждений ранее. SIP определяет местоположение пользователя SIP и пользовательского агента, в который он в данный момент вошел. Без этой функции ваши абоненты не смогут найти того, с кем они хотят общаться в сети или Интернете.
2. Доступность для пользователя
В SIP пользователь может зарегистрироваться более чем в одном месте. Тем не менее, этот пользователь не может находиться в нескольких местах одновременно. SIP может определить, доступен ли пользователь и готов ли он принять вызов. Если вызов не проходит, это означает, что пользователь недоступен в этом пользовательском агенте. Затем SIP может передать вызов другому пользовательскому агенту, зарегистрированному с этим пользователем. Если функция включена, она также может передавать ее на голосовую почту.
3. Возможности пользователя
SIP имеет встроенную функцию, которая позволяет пользовательским агентам знать возможности стороны, с которой они хотят общаться. Это необходимо, потому что пользовательские агенты могут иметь разные формы и возможности. В результате могут возникнуть проблемы несовместимости. Например, предположим, что пользовательский агент на базе ПК хочет связаться с другим пользовательским агентом , встроенным в устройство с ограниченными функциями. Он явно не сможет использовать все свои функции. Кроме того, некоторые пользовательские агенты могут совершать видеозвонки, а другие — только голосовые. Зная возможности другой стороны, обе стороны могут общаться, используя общие знаменатели.
4. Настройка сеанса
Эта функция вступает в игру , когда пользовательский агент предупреждает своего пользователя о том, что другая сторона приглашает его (вызываемого пользователя) к вызову. Он также работает для установления параметров сеанса между вызывающей стороной и принимающей стороной. Пошаговый пример, показанный ниже, иллюстрирует, как выполняется настройка сеанса SIP.
5. Управление сессиями
Это включает в себя несколько функций, включая передачу сеансов, изменение параметров сеанса, вызов служб и завершение сеансов. Используя эту функцию, ваши пользователи могут, например, легко переключаться с SIP-приложения на ПК на IP-телефон. Они даже могут переключаться с голосового вызова на конференц-связь.
Хорошо, давайте перейдем к сути этого обсуждения. Давайте поговорим о том, как работает SIP.
Как работает SIP?
Я объясню, как работает SIP, используя схему. Я нарисовал простой пример, показывающий , как выглядит типичный вызов SIP. В этом примере Боб звонит Алисе. У каждого из них есть IP-телефоны или пользовательские агенты, которые они используют для связи.
Синие стрелки указывают на пакеты, идущие к Алисе, а оранжевые стрелки указывают на пакеты, идущие к Бобу. Некоторым стрелкам нужно прыгнуть на пару прокси-серверов, прежде чем они достигнут цели. Некоторые стрелки идут прямо от Боба к Алисе и наоборот.
Цифры указывают на различные этапы. Обратите внимание, что некоторые числа (например, № 3) не находятся на той же стрелке или даже на следующей соседней стрелке, что и число перед ним (например, № 2). Я хочу указать на это, чтобы вы поняли нумерацию. Шаги ведут себя так, потому что SIP следует модели транзакций запроса и ответа. То есть одна сторона или элемент выдает запрос, а другая сторона отвечает на этот запрос.
Теперь давайте пробежимся по шагам.

Пошаговое объяснение примера блок-схемы сеанса SIP
ПРИГЛАШАЕМ Этап
- Боб отправляет Алисе запрос INVITE. Это INVITE включает в себя личность Алисы, известную как универсальный идентификатор ресурса (URI) SIP. Боб указывает, что он хочет использовать этот URI в своем пользовательском агенте, введя его, щелкнув ссылку или выбрав запись в списке контактов пользовательского агента. Чтобы Алиса узнала вызывающего абонента, запрос INVITE также включает URI Боба. Пользовательский агент Боба затем отправляет всю эту информацию вместе с несколькими другими фрагментами информации на прокси-сервер Боба, прокси-сервер A.
- Получив запрос INVITE от Боба, прокси-сервер A ищет местонахождение Алисы. Затем он пересылает запрос INVITE от Боба на ближайший прокси-сервер, которым в данном случае является прокси-сервер B.
ПРОБНАЯ стадия
- Прокси-сервер А отвечает на запрос Боба INVITE ответом TRYING. Этот ответ TRYING подтверждает, что запрос INVITE был получен и что прокси-сервер A уже направляет запрос в нужное место назначения.
- Получив от прокси-сервера A запрос INVITE от Боба, прокси-сервер B ищет местонахождение Алисы. Затем он также пересылает запрос INVITE в это место.
- Прокси-сервер B также отвечает прокси-серверу A своим ответом TRYING. Этот ответ TRYING подтверждает, что он получил перенаправленный запрос INVITE от прокси-сервера А и что он уже перенаправил запрос в нужное место назначения.
Стадия ответа
- Получив запрос INVITE, пользовательский агент Алисы уведомляет Алису, а затем отправляет обратно свой ответ «Звонок». Этот ответ «Звонок» указывает на то, что Алиса уже была уведомлена. Затем он отправляется на прокси-сервер B.
- Прокси-сервер B распознает, кому предназначен этот ответ «Звонок». Затем он перенаправляет его на прокси-сервер, который перенаправил запрос. (Прокси А, в данном случае).
- Прокси-сервер A распознает, для кого предназначен этот ответ «Звонок», и затем перенаправляет его пользовательскому агенту, отправившему запрос. (в данном случае пользовательский агент Боба).
Стадия ответа на вызов
- Если Алиса отвечает на вызов, на прокси-сервер B отправляется ответ OK, указывающий, что Алиса готова к разговору.
- Прокси-сервер B распознает, для кого предназначен этот ответ OK, и, таким образом, перенаправляет его на прокси-сервер A.
- Прокси-сервер A также распознает, для кого предназначен этот ответ OK, и, в свою очередь, перенаправляет его пользовательскому агенту Боба.
- Пользовательский агент Боба подтверждает, и начинается вызов или мультимедийный сеанс. Обратите внимание, что подтверждение теперь не проходит через прокси-серверы. Скорее, он идет непосредственно к пользовательскому агенту Алисы. Это потому, что к этому моменту Боб уже знает, как найти Алису.
- Как только Алиса решит завершить вызов и повесит трубку, пользовательскому агенту Боба будет отправлено сообщение BYE.
- Затем пользовательский агент Боба отправляет ответ OK, и вызов завершается.
Ну вот и все. Так работает SIP-вызов. Конечно, весь процесс более подробно описан, но это подводит итог тому, что происходит.
Прежде чем мы закончим эту статью, я хотел бы затронуть один вопрос, который довольно часто задают, когда люди начинают внедрять решение VoIP.
SIP против VoIP
Я не уверен, почему, вероятно, из-за неправильного представления о том, что делает SIP, но один из вопросов, который я часто задаю о SIP, заключается в том, как он сравнивается с VoIP. Что ж, SIP и VoIP не являются конкурирующими протоколами или технологиями. Скорее, один (в данном случае SIP) способствует существованию другого (в данном случае VoIP).
Как вы, возможно, уже поняли, SIP берет на себя настройку вызовов VoIP. Помните те две фазы, о которых мы говорили, когда отвечали на вопрос «Что такое SIP»? Что ж, SIP — это первая фаза вызова VoIP. Да, у него есть альтернативы. Некоторые решения VoIP используют H.323 и/или MGCP в качестве протокола сигнализации VoIP. Тем не менее, они не так широко используются, как SIP. Я надеюсь, что это проясняет путаницу!
Заключительные слова
Большинство реализаций, устройств или программных приложений VoIP полагаются на SIP для установления вызовов. ИТ-администратору важно иметь четкое представление о протоколе SIP, поскольку оно может понадобиться вам при устранении неполадок, связанных с VoIP. Эта статья призвана предоставить обзор различных аспектов SIP и их понимание.
В этой статье вы узнали, что такое SIP, три ключевых элемента SIP, 5 функций SIP и основной поток вызова SIP. Я надеюсь, что вы получили достаточно знаний, чтобы продолжить более глубокое исследование по этому вопросу.
Есть еще вопросы о SIP? Ознакомьтесь с разделами часто задаваемых вопросов и ресурсов ниже.
Часто задаваемые вопросы
Безопасен ли SIP?
Нет. По умолчанию все SIP-сообщения отправляются в виде открытого текста. Таким образом, подслушиватель может легко получить информацию из перехваченных SIP-пакетов. Для защиты ваших SIP-соединений вы можете использовать Transport Layer Security (TLS). SIP легко поддерживает TLS, который шифрует все SIP-сообщения от вызывающего абонента до домена получателя. Вы также можете использовать VPN.
Можно ли защитить SIP с помощью VPN?
Да, поскольку решения для виртуальной частной сети (VPN), такие как IPsec, шифруют интернет-трафик. VPN, особенно развернутая с использованием архитектуры site-to-site, обеспечивает всеобъемлющую защиту любого трафика, проходящего через два VPN-шлюза. Тем не менее, неправильная настройка VPN может привести к проблемам с производительностью ваших вызовов. Чтобы решить эту проблему, вы можете стандартизировать маршрутизаторы, используемые вашими удаленными работниками, и проконсультироваться со своим поставщиком о том, как настроить их для вашего VPN-решения.
Какие порты мне следует настроить в брандмауэре для использования SIP?
SIP использует только порты TCP или UDP 5060 и 5061. Тем не менее, вы обычно используете SIP как часть решения VoIP, а не отдельно. К сожалению, все решение VoIP может использовать множество портов. Это может быть проблемой, если вы используете только брандмауэр с фильтром пакетов. Лучше всего использовать тип брандмауэра, который выполняет проверку пакетов с отслеживанием состояния, поскольку он может определить, какие пакеты являются частью одного и того же диалога.
Могли бы вы порекомендовать управляемые VoIP-решения?
Да. Если вы не знакомы с ними, управляемые решения VoIP — это решения VoIP, управляемые сторонним поставщиком услуг. Если вы предпочитаете передать свою инфраструктуру VoIP на аутсорсинг, чтобы освободить большую часть своих административных издержек, хорошим вариантом будет управляемое решение VoIP. Вы также можете ознакомиться с лучшими в своем классе VoIP-решениями для бизнеса. Все они являются управляемыми службами, поэтому вы можете проверить это.
Какие инструменты для голосовых и видеоконференций вы бы порекомендовали?
Вы можете выбрать из нескольких хороших вариантов там. Например, выберите Zoom, GoToMeeting, Cisco Webex и некоторые другие. Проверьте эти семь голосовых и видеоконференций для бизнеса. У них в основном все еще есть функции, которые вам нужны!