Sip tag что такое

RFC SIP

Тем, кто соберётся делать собственную реализацию протокола SIP, пригодится список RFC, описывающих протокол и его дополнения:

SIP- запросы

Но в процессе развития, в протокол было добавлено еще несколько типов запросов, которые дополнили его функциональность:

Адресация SIP

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

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

В SIP поддерживает функции messaging и presence. Первая обеспечивает обмен в реальном времени короткими сообщениями (как ICQ на ПК или SMS в сетях GSM), вторая позволяет определять состояние абонента, т. е. на месте ли он, не занят ли и т. д. (в ICQ тоже есть такая возможность). Благодаря этим двум функциям SIP позволяет реагировать на события, а также рассылать сообщения «по событию».

IP-интеграция

Подобные сервисы могут создавать три группы людей: производители SIP- оборудования, сервис-провайдеры и сами конечные пользователи. Язык CPL несложен, так что, видимо, многие будут способны реализовать вполне изощренную схему работы автоответчика: скажем, если позвонивший набирает цифру 1, он переключается на домашний телефон абонента, если 2 – на сотовый, если 3 – на телефон его родителей и т. д. А почему бы не написать скрипт, который, когда раздастся звонок, показывал бы вам лицо (фотографию) звонящего? Телефон ресторана мог бы, скажем, сразу выдавать на дисплей сегодняшнее меню, – короче говоря, возможности здесь ограничены только фантазией пользователя.

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

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

между пользователями

Первый пользователь снимает трубку и набирает номер, SIP-клиент генерирует сигнал INVITE (приглашение), у второго пользователя звонит телефон, его SIP-клиент выдает сообщение 180 (Ringing, звонок), затем пользователь берет трубку, SIP-клиент выдает сообщение 200 (OK), первый SIP-клиент посылает второму сигнал ACK (подтверждение) – и далее начинается передача голосового потока по протоколу RTP (Real-time Transport Protocol). Когда разговор окончен и один из пользователей вешает трубку, SIP-клиент посылает сигнал BYE. Вот и все.

Sip tag что такое. siptrace. Sip tag что такое фото. Sip tag что такое-siptrace. картинка Sip tag что такое. картинка siptrace

в сети предприятия

Но такая схема абсолютно неэффективна, когда клиентов в сети не два, а два миллиарда. SIP-сетям с большим числом пользователей необходима инфраструктура, и ее создают различные серверы SIP. Сервер регистрации (registrar) занимается учетом и авторизацией пользователей, сервер локализации (allocation) ищет их и определяет их местонахождение, сервер переадресации (redirect) переводит звонки абонентам туда, где они фактически находятся в данный момент, – если меня, например, нет в Москве, потому что я уехал в Америку, сервер переведет звонок на мой американский номер. Наиболее сложные функции ложатся на прокси-сервер (SIP Proxy), обеспечивающий взаимодействие внутренней (например, учрежденческой) IP-телефонной сети с внешним миром, – именно он определяет все политики, правила общения и т. д. Существуют и другие серверы SIP (например, сервер конференций), но они менее важны. На рисунке показано, как может работать SIP в сети предприятия.

Sip tag что такое. siptrace2. Sip tag что такое фото. Sip tag что такое-siptrace2. картинка Sip tag что такое. картинка siptrace2

Пользователь Алиса приходит на свое рабочее место в компании Example, включает в корпоративную сеть ноутбук и активизирует имеющийся на нем программный телефон, который автоматически регистрируется на сервере регистрации. Тот, в свою очередь, запрашивает информацию о пользователе в корпоративной базе данных и сообщает о том, как с ним контактировать, серверу локализации. (Оба сервера могут интегрироваться с различными базами данных, службами каталогов типа LDAP или MS Active Directory и т. д.) Теперь, когда кто-нибудь позвонит Алисе, прокси-сервер, запросив сервер локализации, установит связь с ее рабочим местом.

Аутентификация и авторизация SIP 2.0

Прохождение авторизации в SIP протоколе зависит от «Что такое realm sip?», различного для каждого защищаемого домена.

md5 алгоритм на входе принимает любую длину символов и на выходе выдать 128-битный отпечаток (finger-print) или профиль сообщения (message digest), которое было подано на вход алгоритма. Гипотетически считается, что два сообщения, которые имеют один и тот же профиль сообщения или выработаны любым сообщением, имеют определенный профиль сообщения.

Message digest — коротка цифровая строка фиксированной длины, формируется из более длинного сообщения с использованием специального алгоритма. Алгоритм md5 назначен для цифровой подписи (digital signature) приложений, где большие файлы должны быть «сжаты» в безопасный способ, до того как они будут закриптованы с помощью публичного или скрытого ключа с помощью криптосистемы с открытым ключом, например RSA. Digital signature — цифровая подпись, которая является уникальным электронным идентификатором, обеспечивающим проверку сообщения с установлением подлинности отправителя и гарантии то, что документ не был изменен с момента подписания.

Последовательность действий для авторизации клиентского оборудования на сервере.

Sip tag что такое. sip authentication. Sip tag что такое фото. Sip tag что такое-sip authentication. картинка Sip tag что такое. картинка sip authentication На третьем этапе абонент высылает серверу строку в сообщении REGISTER

Источник

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

Sip tag что такое. 4a6a99850f7877ceb7c488c4471cdb29. Sip tag что такое фото. Sip tag что такое-4a6a99850f7877ceb7c488c4471cdb29. картинка Sip tag что такое. картинка 4a6a99850f7877ceb7c488c4471cdb29

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

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

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

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

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

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

Sip tag что такое. acee7c4b66bb08c0af46a8afebafab7c. Sip tag что такое фото. Sip tag что такое-acee7c4b66bb08c0af46a8afebafab7c. картинка Sip tag что такое. картинка acee7c4b66bb08c0af46a8afebafab7c

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

Sip tag что такое. 25126f6693f0a3272b505179216ddfbe. Sip tag что такое фото. Sip tag что такое-25126f6693f0a3272b505179216ddfbe. картинка Sip tag что такое. картинка 25126f6693f0a3272b505179216ddfbe

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

Sip tag что такое. 45263a165fd7a944cf0be22935ccffef. Sip tag что такое фото. Sip tag что такое-45263a165fd7a944cf0be22935ccffef. картинка Sip tag что такое. картинка 45263a165fd7a944cf0be22935ccffef

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

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

Sip tag что такое. 34bd1f9ef55d5d9f68023e8b398b60cc. Sip tag что такое фото. Sip tag что такое-34bd1f9ef55d5d9f68023e8b398b60cc. картинка Sip tag что такое. картинка 34bd1f9ef55d5d9f68023e8b398b60cc

Чаще всего, значение 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-сообщения.

Sip tag что такое. 9c4d8f5e3558cb2d9881f6b92b6a9fa1. Sip tag что такое фото. Sip tag что такое-9c4d8f5e3558cb2d9881f6b92b6a9fa1. картинка Sip tag что такое. картинка 9c4d8f5e3558cb2d9881f6b92b6a9fa1

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

Sip tag что такое. 1813260454d761fca49798c30c9ee566. Sip tag что такое фото. Sip tag что такое-1813260454d761fca49798c30c9ee566. картинка Sip tag что такое. картинка 1813260454d761fca49798c30c9ee566

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

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

Sip tag что такое. 967bcd48423cfad1b34b5fe705bbee16. Sip tag что такое фото. Sip tag что такое-967bcd48423cfad1b34b5fe705bbee16. картинка Sip tag что такое. картинка 967bcd48423cfad1b34b5fe705bbee16

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

Sip tag что такое. ca1b02acc4f59920cf7c6d73eb25b1d0. Sip tag что такое фото. Sip tag что такое-ca1b02acc4f59920cf7c6d73eb25b1d0. картинка Sip tag что такое. картинка ca1b02acc4f59920cf7c6d73eb25b1d0

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

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

Sip tag что такое. f919f23e85109d2861eb96043e7748bc. Sip tag что такое фото. Sip tag что такое-f919f23e85109d2861eb96043e7748bc. картинка Sip tag что такое. картинка f919f23e85109d2861eb96043e7748bc

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

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

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

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

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

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

Sip tag что такое. e749c215ed11b963da35d9761b38557a. Sip tag что такое фото. Sip tag что такое-e749c215ed11b963da35d9761b38557a. картинка Sip tag что такое. картинка e749c215ed11b963da35d9761b38557a

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

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

Sip tag что такое. 3d61478f4c7c6f5aa0fe97c98b9901c6. Sip tag что такое фото. Sip tag что такое-3d61478f4c7c6f5aa0fe97c98b9901c6. картинка Sip tag что такое. картинка 3d61478f4c7c6f5aa0fe97c98b9901c6

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

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

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

Sip tag что такое. 189769cbd40c2bb60e8900e6063cb35e. Sip tag что такое фото. Sip tag что такое-189769cbd40c2bb60e8900e6063cb35e. картинка Sip tag что такое. картинка 189769cbd40c2bb60e8900e6063cb35e

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

Sip tag что такое. b1c39b60cc54c43e25ea1607355c6735. Sip tag что такое фото. Sip tag что такое-b1c39b60cc54c43e25ea1607355c6735. картинка Sip tag что такое. картинка b1c39b60cc54c43e25ea1607355c6735

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

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

Источник

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

Sip tag что такое. 64358395829d404a792872b83a17b4f9. Sip tag что такое фото. Sip tag что такое-64358395829d404a792872b83a17b4f9. картинка Sip tag что такое. картинка 64358395829d404a792872b83a17b4f9

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

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

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

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

Sip tag что такое. 696d462fb1c9f937ed13af710cb6381e. Sip tag что такое фото. Sip tag что такое-696d462fb1c9f937ed13af710cb6381e. картинка Sip tag что такое. картинка 696d462fb1c9f937ed13af710cb6381e

Sip tag что такое. c6b7e00f475bd937911ecadae8fa2e49. Sip tag что такое фото. Sip tag что такое-c6b7e00f475bd937911ecadae8fa2e49. картинка Sip tag что такое. картинка c6b7e00f475bd937911ecadae8fa2e49

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

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

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

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

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

Sip tag что такое. b3d982d22084ec734ba37ff5cf036c6c. Sip tag что такое фото. Sip tag что такое-b3d982d22084ec734ba37ff5cf036c6c. картинка Sip tag что такое. картинка b3d982d22084ec734ba37ff5cf036c6c

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

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

Sip tag что такое. a91f8a9ad871492433e7aac8e4532cb8. Sip tag что такое фото. Sip tag что такое-a91f8a9ad871492433e7aac8e4532cb8. картинка Sip tag что такое. картинка a91f8a9ad871492433e7aac8e4532cb8

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

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

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

Sip tag что такое. a09c75f73cd16e0168df9d8c1bf350a0. Sip tag что такое фото. Sip tag что такое-a09c75f73cd16e0168df9d8c1bf350a0. картинка Sip tag что такое. картинка a09c75f73cd16e0168df9d8c1bf350a0

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

Sip tag что такое. 6a2b03aabeb625b8c710330257990dd1. Sip tag что такое фото. Sip tag что такое-6a2b03aabeb625b8c710330257990dd1. картинка Sip tag что такое. картинка 6a2b03aabeb625b8c710330257990dd1

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

Sip tag что такое. 19edfc554403531095f433038b4cff62. Sip tag что такое фото. Sip tag что такое-19edfc554403531095f433038b4cff62. картинка Sip tag что такое. картинка 19edfc554403531095f433038b4cff62

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

Sip tag что такое. 4db388584929bcc800071c454b5b5d60. Sip tag что такое фото. Sip tag что такое-4db388584929bcc800071c454b5b5d60. картинка Sip tag что такое. картинка 4db388584929bcc800071c454b5b5d60

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

Sip tag что такое. 1c15bfaacd1b229031f6fe9d36c1558d. Sip tag что такое фото. Sip tag что такое-1c15bfaacd1b229031f6fe9d36c1558d. картинка Sip tag что такое. картинка 1c15bfaacd1b229031f6fe9d36c1558d

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

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

Sip tag что такое. 40e3cbdcb8cc6746bdcdb4e53efff740. Sip tag что такое фото. Sip tag что такое-40e3cbdcb8cc6746bdcdb4e53efff740. картинка Sip tag что такое. картинка 40e3cbdcb8cc6746bdcdb4e53efff740

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

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

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

Sip tag что такое. 53326a9380ed428928096a156ca6ffb2. Sip tag что такое фото. Sip tag что такое-53326a9380ed428928096a156ca6ffb2. картинка Sip tag что такое. картинка 53326a9380ed428928096a156ca6ffb2

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

Sip tag что такое. 422350f8219fa154a0396b2f04a85e62. Sip tag что такое фото. Sip tag что такое-422350f8219fa154a0396b2f04a85e62. картинка Sip tag что такое. картинка 422350f8219fa154a0396b2f04a85e62
Здесь все, как в первой части статьи.

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

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

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

Sip tag что такое. 705d5470d2720a1367a71ed88fde74d3. Sip tag что такое фото. Sip tag что такое-705d5470d2720a1367a71ed88fde74d3. картинка Sip tag что такое. картинка 705d5470d2720a1367a71ed88fde74d3

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

Sip tag что такое. 5ea520572c11ec9490d0983c33296101. Sip tag что такое фото. Sip tag что такое-5ea520572c11ec9490d0983c33296101. картинка Sip tag что такое. картинка 5ea520572c11ec9490d0983c33296101

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

Sip tag что такое. 8269f144ea6231245a506bc6eba83126. Sip tag что такое фото. Sip tag что такое-8269f144ea6231245a506bc6eba83126. картинка Sip tag что такое. картинка 8269f144ea6231245a506bc6eba83126

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

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

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

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

Sip tag что такое. b7bfa44742010c8aa689ed53043118cb. Sip tag что такое фото. Sip tag что такое-b7bfa44742010c8aa689ed53043118cb. картинка Sip tag что такое. картинка b7bfa44742010c8aa689ed53043118cb

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

Sip tag что такое. 02d816298a31ba2a89b4da3f08905663. Sip tag что такое фото. Sip tag что такое-02d816298a31ba2a89b4da3f08905663. картинка Sip tag что такое. картинка 02d816298a31ba2a89b4da3f08905663

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

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

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

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

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

Sip tag что такое. 02d816298a31ba2a89b4da3f08905663. Sip tag что такое фото. Sip tag что такое-02d816298a31ba2a89b4da3f08905663. картинка Sip tag что такое. картинка 02d816298a31ba2a89b4da3f08905663

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *