- •1 Назначение и принципы протокола SIP
- •Назначение и принципы протокола SIP
- •Согласно принципам семиуровневой модели Взаимодействия открытых систем OSI (Open Systems Interconnection) особенностью протокола
- •В основу протокола положены следующие принципы:
- •Масштабируемость сети
- •Персональная мобильность пользователей.
- •Расширяемость протокола
- •Интеграция в стек существующих протоколов Интернет
- •Взаимодействие с другими протоколами сигнализации
- •Протокол SDP
- •Знаком «*» обозначены необязательные поля. Поля, используемые в протоколе:
- •Описание параметров времени
- •ЗАПРОС
- •Терминал
- •Сервер
- •Прокси-сервер
- •Предусмотрено два типа прокси-серверов - с
- •Сервер переадресации
- •Сервер определения местоположения пользователей
- •ЗАПРОС
- •Request-URI
- •Существует 6 основных видов запросов:
- •3 Запрос CANCEL отменяет обработку ранее переданных запросов с теми же, что и
- •После испытаний протокола SIP в реальных сетях
- •ОТВЕТ
- •Reason-Phrase даёт краткое описание кода ответа и предназначена для визуального восприятия пользователем.
- •Определено шесть классов ответов. Все ответы делятся на два типа: информационные и окончательные.
- •Информационные или предварительные ответы (1xx)
- •Ответы успешной обработки запроса (2xx)
- •SIP-Ответы успешной обработки запроса.
- •Ответы перенаправления вызова (3xx)
- •SIP-ответы перенаправления вызова.
- •302 Moved Temporarily. Вызываемый пользователь временно изменил свое
- •Ответы ошибки в запросе (4xx)
- •Ответы отказа сервера (5xx)
- •SIP-ответы отказа сервера.
- •Ответы полной невозможности установления соединения (6xx)
- •Адресация в сетях SIP
- •Заголовки сообщений
- •Заголовок Call-ID - уникальный идентификатор сеанса связи
- •Реализация услуг телефонии на базе протокола SIP
- •Процедура управления соединением
- •Эти заголовки обязательны для всех SIP-запросов. Они являются основными частями SIP-сообщения, поскольку обеспечивают
- •Если запрос принимается , должны быть произведены любые связанные с ним изменения состояния
- •5 Обработка заголовка Require.Поле этого заголовка используется UAC, чтобы сообщить UAS о расширениях,
- •Установление соединения с участием прокси-сервера
- •1 INVITE Anton Прокси-сервер1
- •INVITE sip:vladimir@protei.ru SIP/2.0
- •Max-Forwards: 70
- •Call-ID: 3848276298220188511@niits.ru
- •Порядковый
- •Content-Type: application/sdp
- •Content-Length: 151
- •SIP/2.0 407 Proxy Authorization Required
- •Call-ID: 3848276298220188511@niits.ru
- •Запрос ACK должен содержать значения заголовков Call-ID, From, и поля Request-URI, идентичные тем,
- •Proxy1 выполняя следующие шаги: 1Создаёт копию полученного запроса.
- •Proxy2 добавляет в сообщение свой заголовок Via:
- •Местоположение вызываемого пользователя определено. Вызываемый пользователь получает сигнал о входящем вызове от своего
- •11 180 (Ringing)
- •Демонстрационная часть
- •К IP-сети подключены два абонента с sip- адресами:
- •Вызываемый пользователь временно изменил свое местоположение и может быть найден по адресу, указанному
- •INVITE
- •На этом изучение теоретического материала заканчивается.
Call-ID: 3848276298220188511@niits.ru
Поля Call-ID имеет такое же значение как и в сообщении1. Следовательно, ответ 407 принадлежит той же транзакции, что и сообщение1.
Content-Length: 0
Тело сообщения отсутствует.
Назад
|
Proxy-Authenticate: |
|
Digest |
Схема |
|
|
|
аутентификации. |
|||
|
|
||||
|
|
Содержит ряд параметров необходимых
для процедуры аутентификации.
realm="niits.ru", qop="auth",
Указывает область |
Указывает, какой уровень |
|
аутентификации. |
защиты клиент |
применил |
|
для своего |
сообщения. |
Строка данных, которая уникально |
|
«auth» |
генерируется сервером. После полученияпредусматривает
запроса сервер пересчитывает значение nonceприменение только сравнивает его с полученным в запросе. Припроцедуры
несоответствии запрос отклоняется. аутентификации.
nonce="f84f1cec41e6cbe5aea9c8e88d359", opaque="", stale=FALSE, algorithm=MD5
Поле, указывающее доступный алгоритм хэширования (Хэширующий |
|
запрос |
||||
алгоритм MD5 |
|
используется для создания цифровых подписей, позволяющих |
|
флага |
||
|
|
|||||
однозначно |
|
Строка, которую UA должен будет |
при |
|
||
проверке паролей. |
|
вернуть на сервер в неизменённом виде. |
пользователя |
|||
значение «MD5». |
|
Рекомендуется закодировать base64. |
|
введены |
|
|
|
|
|||||
должен быть |
|
|
|
|
Назад |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 ACK Anton -> Proxy 1
Request-Line
ACK sip:vladimir@protei.ru SIP/2.0 Via: SIP/2.0/TCP serv1.niits.ru:5060; branch=z9hG4bK74b43 Max-Forwards: 70
From: “Anton” <sip:anton@niits.ru>; tag=9fxced76sl
To: “Vladimir “<sip:vladimir@protei.ru>; tag=3flal12sf
Call-ID: 3848276298220188511@niits.ru CSeq: 1 ACK
Content-Length: 0
гаЗ ло во ко
Рисунок |
Запрос ACK должен содержать значения заголовков Call-ID, From, и поля Request-URI, идентичные тем, что были отосланы в составе оригинального запроса - запроса, для которого создавалась данная транзакция.
Значение заголовка To копируется из аналогичного заголовка подтверждаемого ответа и, следовательно, всегда будет отличаться от оригинального запроса дополнительным параметром «tag».
В ACK должен присутствовать единственный заголовок Via, равный верхнему заголовку Via в оригинальном запросе.
Поле заголовка CSeq содержит тот же порядковый номер, что и в оригинальном запросе, но в поле типа запроса выставляется ACK.
4 INVITE Anton -> Proxy 1
INVITE sip:vladimir@protei.ru SIP/2.0 Via: SIP/2.0/TCP serv1.niits.ru:5060; branch=z9hG4bK74bf9 Max-Forwards: 70
Route: <sip:ss1.niits.ru;lr>
From: ”Anton” <sip:anton@niits.ru>;tag=9fxced76sl To: “Vladimir” <sip:vladimir@protei.ru>
Call-ID: 3848276298220188511@niits.ru CSeq: 2 INVITE
Contact: <sip:anton@serv1.niits.ru;transport=tcp>
Proxy-Authorization: Digest username="anton", realm="niits.r u”,
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri ="sip:vladimir@protei.ru", response="42ce3cef44b22f50c6a6071 bc8"
Content-Type: application/sdp
Content-Length: 151
v=0 o=anton 2890844526 2890844526 IN IP4 serv1.niits.ru s=- c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000
Данный запрос INVITE содержит необходимые параметры аутентификации.
В поле CSeq заголовка увеличился порядковый номер запроса(2 INVITE).
Все остальные поля заголовка и тело остались без изменения.
Proxy-Authorization: Digest username="anton",
|
|
Имя пользователя в |
realm="niits.ru”, |
|
указанной области |
|
аутентификации. |
nonce="f84f1ceczx41ae6cbe5aea9c8e88d359",
Содержит URI из поля Request-URI, входящего в opaque="", состав Request-Line. URI дублировано здесь, поскольку при транспортировки запроса значение
Request-URI может быть изменено прокси-сервером.
uri="sip:vladimir@protei.ru",
response="42ce3cef44b22f50c6a6071bc8"
Строка, состоящая из 32 шестнадцатеричных разрядов, |
||
удостоверяющая, что пользователю известен пароль. |
||
Формируется с помощью применения функции хэширования |
||
к следующим значениям: nonce, nc, cnonce, |
Рисунок |
|
username, realm, типу запроса и паролю. |
||
|
5 INVITE Proxy 1 -> Proxy 2
INVITE sip:vladimir@protei.ru SIP/2.0 Via: SIP/2.0/TCP ss1.niits.ru:5060; branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP serv1.niits.ru:5060; branch=z9hG4bK74bf9; received=192.0.2.101 Max-Forwards: 69
Record-Route: <sip:ss1.niits.ru;lr>
From: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl To: “Vladimir” <sip:vladimir@protei.ru>
Call-ID: 3848276298220188511@niits.ru CSeq: 2 INVITE
Contact: <sip:anton@serv1.niits.ru;transport=tcp> Content-Type: application/sdp
Content-Length: 151
v=0 o=anton 2890844526 2890844526 IN IP4 serv1.niits.ru s=- c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000
Proxy 1 принимает отклик аутентификации и пересылает INVITE прокси-серверу Proxy 2. Клиент пользователя Anton готовится принимать пользовательскую информацию на порт 49172 из сети.
Proxy1 выполняя следующие шаги: 1Создаёт копию полученного запроса.
2Обновляет содержимое заголовка Max-Forwards (уменьшает на 1).
3Опционально добавляет значение заголовка Record-route, чтобы следующие запросы в процессе диалога маршрутизировались через него.
4Добавляет значение в заголовок Via.
Рисунок |
6 100 (Trying) Proxy 1 -> Anton
SIP/2.0 100 Trying Via: SIP/2.0/TCP serv1.niits.ru:5060; branch=z9hG4bK74bf9;received=192.0.2.101
From: “Anton”<sip:anton@niits.ru>;tag=9fxced76sl To: “Vladimir” <sip:vladimir@protei.ru>
Call-ID: 3848276298220188511@niits.ru CSeq: 2 INVITE
Content-Length: 0
Proxy1 принимает запрос INVITE и начинает его обработку, о чем передает сообщение для Anton.
Рисунок
7 INVITE Proxy 2 -> Vladimir
INVITE sip:vladimir@serv2.protei.ru SIP/2.0 Via: SIP/2.0/TCP ss2.protei.ru:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/TCP ss1.niits.ru:5060; branch=z9hG4bK2d4790.1;received=192.0.2.111
Via: SIP/2.0/TCP serv1.niits.ru:5060; branch=z9hG4bK74bf9;received=192.0.2.101 Max-Forwards: 68
Record-Route: <sip:ss2.protei.ru;lr>, <sip:ss1.niits.ru;lr> From: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl To: “Vladimir” <sip:vladimir@protei.ru>
Call-ID: 3848276298220188511@niits.ru CSeq: 2 INVITE
Contact: <sip:anton@serv1.niits.ru;transport=tcp> Content-Type: application/sdp
Content-Length: 151
Рисунок |
v=0
o=anton 2890844526 2890844526 IN IP4 serv1.niits.ru s=-
c=IN IP4 192.0.2.101 t=0 0
m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000
Рисунок |