![](/user_photo/_userpic.png)
- •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
- •На этом изучение теоретического материала заканчивается.
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM485x1.jpg)
Proxy2 добавляет в сообщение свой заголовок Via:
Via: SIP/2.0/TCP ss2.protei.ru:5060; branch=z9hG4bK721e4.1
Значение поля заголовка Max-Forwards уменьшилось на 1, так как сообщение прошло еще через один прокси-сервер.
Max-Forwards: 68
Proxy2 добавил свой адрес sip:ss2.protei.ru в поле заголовка Record-Route перед существующим значением:
Record-Route: <sip:ss2.protei.ru;lr>, <sip:ss1.niits.ru;lr>
Назад
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM486x1.jpg)
8 100 (Trying) Proxy 2 -> Proxy 1
SIP/2.0 100 Trying 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
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
Proxy2 принимает запрос INVITE, начинает его обрабатывать и об этом сообщает Proxy1.
Proxy2 добавляет в заголовок ответа свое поле Via.
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM487x1.jpg)
9 180 (Ringing) Vladimir -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss2.protei.ru:5060; branch=z9hG4bK721e4.1;received=192.0.2.222 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
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>;tag=314159 Call-ID: 3848276298220188511@niits.ru
Contact: <sip:vladimir@serv3.protei.ru;transport=tcp> CSeq: 2 INVITE
Content-Length: 0
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM488x1.jpg)
Местоположение вызываемого пользователя определено. Вызываемый пользователь получает
сигнал о входящем вызове от своего UA.
UA Vladimira добавляет в ответ на запрос INVITE поле Via и Record-Route, для маршрутизации ответа тем же путем, по которому пришел запрос.
Рисунок |
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM489x1.jpg)
10 180 (Ringing) Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
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 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>;tag=314159 Call-ID: 3848276298220188511@niits.ru
Contact: <sip:vladimir@serv3.protei.ru;transport=tcp> CSeq: 2 INVITE
Content-Length: 0
Proxy 2 убирает из ответа первое значение поля Via и запрос направляется по следующему значению (ss1.niits.ru:5060).
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM490x1.jpg)
11 180 (Ringing) |
Proxy 1 -> Anton |
|
|
SIP/2.0 180 Ringing |
|
|
|
Via: SIP/2.0/TCP serv1.niits.ru:5060; |
|
|
|
|
|||
branch=z9hG4bK74bf9;received=192.0.2.101 |
|||
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>;tag=314159 Call-ID: 3848276298220188511@niits.ru
Contact: <sip:vladimir@serv3.protei.ru;transport=tcp> CSeq: 2 INVITE
Content-Length: 0
Proxy1 убирает из ответа первое значение поля Via и запрос направляется по следующему значению (serv1.niits.ru:5060).
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM491x1.jpg)
12 200 (OK) Vladimir -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss2.protei.ru:5060;branch=z9hG4bK721e4.1; received=192.0.2.222
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
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>;tag=314159 Call-ID: 3848276298220188511@niits.ru
CSeq: 2 INVITE
Contact: <sip:vladimir@serv3.protei.ru;transport=tcp> Content-Type: application/sdp
Content-Length: 147
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM492x1.jpg)
v=0 o=vladimir 2890844527 2890844527 IN IP4 serv2.protei.ru
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000
Ответ 200 на запрос INVITE означает, что вызываемый пользователь согласен принять участие в сеансе связи, в теле ответа указываются возможности оборудования вызываемого пользователя. Клиент пользователя Vladimir готовится принимать пользовательскую информацию на порт 3456 из сети.
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM493x1.jpg)
13 200 (OK) Proxy 2 -> Proxy 1
SIP/2.0 200 OK Via: SIP/2.0/TCP s1.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 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>;tag=314159 Call-ID: 3848276298220188511@niits.ru
CSeq: 2 INVITE
Contact: <sip:vladimir@serv2.protei.ru;transport=tcp> Content-Type: application/sdp
Content-Length: 147
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM494x1.jpg)
v=0 o=vladimir 2890844527 2890844527 IN IP4 serv3.protei.ru
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000
Proxy2 передает ответ 200 Proxy1, в котором сообщается о том, что Vladimir примет участие в сеансе связи. В теле ответа передаются возможности оборудования вызываемого пользователя, которые Proxy2 не меняет. Proxy2 убирает из заголовка первое значение заголовка Via тем самым отмечая, что ответ через него пройден.
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM495x1.jpg)
14 200 (OK) Proxy 1 -> Anton
SIP/2.0 200 OK Via: SIP/2.0/TCP serv1.niits.ru:5060; branch=z9hG4bK74bf9;received=192.0.2.101
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>;tag=314159 Call-ID: 3848276298220188511@niits.ru
CSeq: 2 INVITE
Contact: <sip:vladimir@serv2.protei.ru;transport=tcp> Content-Type: application/sdp
Content-Length: 147
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM496x1.jpg)
v=0 o=vladimir 2890844527 2890844527 IN IP4 serv3.protei.ru
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000
Proxy1 убирает первое значение заголовка Via.
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM497x1.jpg)
15 ACK Anton -> Proxy 1
ACK sip:vladimir@serv2.protei.ru SIP/2.0 Via: SIP/2.0/TCP serv1.niits.ru:5060; branch=z9hG4bK74b76
Max-Forwards: 70
Route: <sip:ss1.niits.ru;lr>,<sip:ss2.protei.ru;lr> From: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl To: “Vladimir” <sip:vladimir@protei.ru>;tag=314159 Call-ID: 3848276298220188511@niits.ru
CSeq: 2 ACK Content-Length: 0
Anton принимает ответ 200 и подтверждает правильность приема. Тело сообщения отсутствует.
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM498x1.jpg)
16 ACK Proxy 1 -> Proxy 2
ACK sip:vladimir@serv2.protei.ru SIP/2.0 Via: SIP/2.0/TCP ss1.niits.ru:5060; branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCPserv1.niits.ru:5060; branch=z9hG4bK74b76;received=192.0.2.101 Max-Forwards: 69
Route: <sip:ss2.protei.ru;lr>
From: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl To: “Vladimir” <sip:vladimir@protei.ru>;tag=314159 Call-ID: 3848276298220188511@niits.ru
CSeq: 2 ACK Content-Length: 0
Proxy1 передает подтверждение приема и добавляет свое значение заголовка Via.
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM499x1.jpg)
17 ACK Proxy 2 -> Vladimir
ACK 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=z9hG4bK74b76;received=192.0.2.101
Max-Forwards: 68
From: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl To: “Vladimir” <sip:vladimir@protei.ru>;tag=314159 Call-ID: 3848276298220188511@niits.ru
CSeq: 2 ACK Content-Length: 0
Proxy2 передает подтверждение приема и добавляет свое значение заголовка Via.
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM4100x1.jpg)
18 BYE Vladimir -> Proxy 2
BYE sip:anton@serv1.niits.ru SIP/2.0 Via: SIP/2.0/TCP serv2.protei.ru:5060; branch=z9hG4bKnashds7
Max-Forwards: 70
Route: <sip:ss2.protei.ru;lr>,<sip:ss1.niits.ru;lr>
From: “Vladimir” <sip:vladimir@protei.ru>;tag=314159 To: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl Call-ID: 3848276298220188511@niits.ru
CSeq: 1 BYE Content-Length: 0
Спустя определенное время Vladimir вешает трубку. Заметим, что значение CSeq не равно 3. Терминалы пользователей Anton и Vladimir поддерживают свой собственный раздельный порядок счёта CSeq.
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM4101x1.jpg)
19 BYE Proxy 2 -> Proxy 1
BYE sip:anton@serv1.niits.ru SIP/2.0 Via: SIP/2.0/TCP ss2.protei.ru:5060;
branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP serv2.protei.ru:5060; branch=z9hG4bKnashds7 ;received=192.0.2.201
Max-Forwards: 69 Route: <sip:ss1.niits.ru;lr>
From: “Vladimir” <sip:vladimir@protei.ru>;tag=314159 To: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl Call-ID: 3848276298220188511@niits.ru
CSeq: 1 BYE Content-Length: 0
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM4102x1.jpg)
20 BYE Proxy 1 -> Anton
BYE sip:anton@serv1.niits.ru SIP/2.0
Via: SIP/2.0/TCP ss1.niits.ru:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP ss2.protei.ru:5060; branch=z9hG4bK721e4.1;received=192.0.2.222 Via: SIP/2.0/TCP serv2.protei.ru:5060; branch=z9hG4bKnashds7;received=192.0.2.201 Max-Forwards: 68
From: “Vladimir” <sip:vladimir@protei.ru>;tag=314159 To: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl Call-ID: 3848276298220188511@niits.ru
CSeq: 1 BYE Content-Length: 0
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM4103x1.jpg)
21 200 (OK) Anton -> Proxy 1
SIP/2.0 200 OK Via: SIP/2.0/TCP ss1.niits.ru:5060;
branch=z9hG4bK2d4790.1;received=192.0.2.111 Via: SIP/2.0/TCP ss2.protei.ru:5060;
branch=z9hG4bK721e4.1;received=192.0.2.222 Via: SIP/2.0/TCP serv2.protei.ru:5060;
branch=z9hG4bKnashds7;received=192.0.2.201
From: “Vladimir” <sip:vladimir@protei.ru>;tag=314159 To: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl Call-ID: 3848276298220188511@niits.ru
CSeq: 1 BYE Content-Length: 0
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM4104x1.jpg)
22 200 (OK) Proxy 1 -> Proxy 2
SIP/2.0 200 OK Via: SIP/2.0/TCP ss2.protei.ru:5060; branch=z9hG4bK721e4.1;received=192.0.2.222
Via: SIP/2.0/TCP serv2.protei.ru:5060; branch=z9hG4bKnashds7;received=192.0.2.101
From: “Vladimir” <sip:vladimir@protei.ru>;tag=314159 To: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl Call-ID: 3848276298220188511@niits.ru
CSeq: 1 BYE Content-Length: 0
Рисунок
![](/html/72200/635/html_gKWPGiLZCS.bMRl/htmlconvd-6C8LM4105x1.jpg)
23 200 (OK) Proxy 2 -> Vladimir
SIP/2.0 200 OK Via: SIP/2.0/TCP serv2.protei.ru:5060; branch=z9hG4bKnashds7;received=192.0.2.201 From: “Vladimir”<sip:vladimir@protei.ru>; tag=314159
To: “Anton” <sip:anton@niits.ru>;tag=9fxced76sl Call-ID: 3848276298220188511@niits.ru
CSeq: 1 BYE Content-Length: 0
Содержание Рисунок |