Принимать сообщения только от sip сервера. SIP-телефония. Простое взаимодействие клиентов.

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

Он определяет сообщения, которые посылаются между конечными точками и регулируют создание, прекращение и другие существенные элементы вызова. Протокол SIP, описание которого представлено выше, может быть использован для создания, модификации и завершения сеансов, состоящих из одного или нескольких потоков мультимедийных данных. Он представляет собой протокол прикладного уровня. Разработанный для того, чтобы быть независимым от основного транспортного слоя. Другими словами, на основе текста, включающий в себя множество элементов HTTP (Hypertext Transfer) и (SMTP).

Сценарий установления соединения

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

Текущее обнаружение локальным циклом, чтобы узнать, когда пользователь снял вызов, и когда он повесился в конце вызова. Рингтоны от обмена к пользователю: тональный сигнал вызова, тональный сигнал вызова, Перегрузка сети, занятый пользователь и т.д. сигнал звонка от центрального к вызываемому телефону. Набор вызывающим пользователем желаемого номера, либо с помощью импульсной системы, теперь практически не используется, либо тонально. Полярность изменяется с панели управления на петлю пользователя, чтобы указать статус вызова. Обычно это синусоидальный сигнал в 75 вольт и 25 Гц. . На следующем рисунке показан процесс сигнализации для вызова с использованием аналоговой телефонии.


SIP-протокол - что это такое?

SIP работает совместно с несколькими другими протоколами прикладного уровня, которые идентифицируют и передают мультимедийные сессии. Выявление и согласование медийных данных достигается совместно с Session Description Protocol (SDP). Для передачи мультимедийных потоков - голоса, видео - он обычно использует транспортный протокол реального времени (RTP) или режим Secure (SRTP). Для безопасной передачи сообщений SIP может быть зашифрован с помощью Transport Layer Security (TLS).

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

Цифровая вывеска имеет большие преимущества перед аналоговой сигнализацией. В аналоговой телефонии любое изменение сигнализации требует замены всех телефонных терминалов и обновления всех телефонных станций оператора. В обоих случаях поля «От» и «Кому» используются для указания источника и адресата.

История разработки

SIP-протокол был первоначально разработан группой специалистов в 1996 году. Он был стандартизован в RFC 2543 в 1999 году (SIP 1.0). В ноябре 2000 года он был принят в качестве сигнального протокола 3 GPP и постоянного элемента IP-архитектуры Multimedia Subsystem (IMS) для потоковых мультимедийных услуг на базе IP в системах сотовой связи. Последняя версия (SIP 2.0) в спецификации RFC 3261 была выпущена в июне 2002 года. С определёнными расширениями и уточнениями она используется и в наше время.

В предыдущем сообщении первый блок соответствует заголовку или сообщению. Отдельная пустая строка является телом сообщения.

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

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


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

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

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

Протокол SIP - описание и операции

Session Initiation Protocol не зависит от основного транспортного протокола. Он работает на основе пользовательского Datagram Protocol (UDP) или протокола управления передачей потока (SCTP). Он может быть использован как для передачи данных между двумя сторонами (одноадресной рассылки), так и для многоадресной сессии.

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

  • Определите местоположение пользователей, обеспечивающих мобильность.
  • Установите, измените и прекратите многопартийные сеансы между пользователями.
Клиент делает запросы, которые сервер посещает, и генерирует один или несколько ответов. Сервер отвечает либо отказом, либо принятием этого запроса в серии ответов.


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

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

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

Каждый ресурс сети Session Initiation Protocol - агент пользователя или ящик голосовой почты - распознаётся с помощью идентификатора распределения ресурса (URI), функционирующего на основе общего стандартного синтаксиса, который также используется в веб-сервисах и электронной почте. Схема URI, которая используется для SIP, имеет вид логической цепочки: имя пользователя: пароль @ хост: порт.

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

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


Политика безопасности

Если требуется безопасная схема предписывает, что каждый из элементов сети, по которому перенаправляется запрос до целевого домена, должен быть обеспечен Transport Layer Security (TLS). Последний шаг от прокси-сервера к целевому домену при этом обязан функционировать в соответствии с местными настройками по безопасности. TLS защищает от злоумышленников, которые пытаются перехватить данные в момент их отправки. Но она не обеспечивает реальную безопасность до конца и не может предотвратить слежение и кражу информации. Как же SIP-протокол, порты которого должны быть надёжно соединены, работает с другими службами сети?

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

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

Он работает совместно с несколькими другими протоколами и участвует только в части сигнализации сеанса связи. SIP-клиенты, как правило, используют TCP или UDP с номерами портов 5060 или 5061 для подключения к SIP-серверам и другим конечным точкам SIP. Порт 5060 обычно используется для незашифрованного сигнального трафика, тогда как порт 5061 тесно «дружит» с Transport Layer Security (TLS).

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


Вы также найдете другие более продвинутые учебники, не опубликованные на сайте. Если вы не можете или не хотите, нет проблем, у вас будет доступ ко всей информации, опубликованной на этом сайте.

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

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

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

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

SIP-протокол - что это такое?

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

Набор из SIP-правил, связанных с Internet Engineering Task Force (IETF), определяет инструкцию для таких применений. Голосовые и видеопотоковые сообщения в приложениях переносятся на другой протокол прикладной программы в режиме реального времени Transport Protocol (RTP). Параметры - номера портов, протоколы, кодеки - для этих медиа потоков определены и согласованы с использованием протокола описания сеанса (SDP), которое перемещается в теле пакета Session Initiation Protocol (например, протокол SIP T).

В дополнение к другим компонентам, участвующим в коммуникации, например:  Адресный агент: запросы вызовов адресов и обратный адрес или адреса вызываемой стороны. Например, чтобы начать сеанс, клиент делает запрос с помощью метода, который указывает, что пользователю необходимо установить соединение. Сервер отвечает, либо отклонил, либо принял этот запрос в серии ответов.

Протокол SIP - описание и операции

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

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

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

Он не гарантирует отправку или порядок пакетов или качество обслуживания. При указании в красном поле у ​​нас есть строка запроса или тип сообщения. Порт назначения -. Теперь у нас есть заголовок или заголовок сообщения, который содержит.

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

Значение в телефонной связи

Телефонные сети с поддержкой SIP могут также осуществлять многие из более продвинутых функций обработки вызовов, присутствующих в Signaling System 7 (SS7). Хотя оба этих протокола весьма различны. SS7 представляет собой централизованный протокол. Он характеризуется сложной центральной и «тупыми» конечными точками (традиционные телефонные аппараты). SIP является протоколом типа «клиент-сервер». Однако большинство устройств с поддержкой Session Initiation Protocol могут выполнять как роль клиента, так и сервера. В общем, инициатором сеанса выступает клиент, а получатель вызова выполняет функцию сервера. Таким образом, функции SIP реализованы в сообщающихся конечных точках, вопреки традиционным возможностям SS7, которые реализуются в сети.


SIP принципиально отличается тем, что эта технология развивается в сфере IT, а не в телекоммуникационной отрасли. SIP-протокол стандартизирован и определяется главным образом IETF, в то время как другие (например, H.323) традиционно ассоциируются с Международным союзом электросвязи (МСЭ).

Сетевые элементы

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

Агент пользователя

Агент пользователя SIP (UA) представляет собой логическую сеть конечных точек. Они используются для создания или получения сообщений и тем самым управляют SIP-сеансом. SIP-UA может выполнять роль клиента агента пользователя (UAC), который посылает запросы SIP, а также его сервера (UAS), что принимает запросы и возвращает ответ SIP. Такой контроль учётных записей и UAS осуществляется только в течение транзакции SIP.

Телефония

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

SIP-телефоны могут быть реализованы в виде аппаратного устройства либо в качестве софтфона. Поскольку производители всё чаще используют этот протокол в качестве стандартной платформы телефонии (в последние годы - посредством 4G), различие между аппаратной и программной основах SIP-телефонов остаются размытыми. Кроме того, элементы Session Initiation Protocol сегодня реализованы в основных функциях встроенного программного обеспечения многих IP-совместимых устройств. Примерами могут служить многие устройства от Nokia и BlackBerry, а SIP-протокол на Android в настоящее время является незаменимым сервисом.


В SIP, как в HTTP, агент пользователя может идентифицировать себя с помощью сообщения поля заголовка User-Agent, содержащего текстовое описание программного обеспечения/аппаратных средств/наименований продукции. Поле агента пользователя передаётся в сообщениях запроса. Это означает, что принимающий сервер SIP может видеть эту информацию. Сетевые элементы Session Initiation Protocol иногда могут хранить эту информацию. И это может быть полезным при диагностике проблем совместимости.

Месяц назад я начал свое знакомство с 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.

Наконец, в поле 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-сервере.



В продолжение темы:
Android

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