Network Working Group A. Johnston Request for Comments: 3665 MCI BCP: 75 S. Donovan Category: Best Current Practice R. Sparks C. Cunningham dynamicsoft K. Summers Sonus December 2003
Этот документ определяет лучшие текущие практики интернета для интернет-сообщества и запрашивает обсуждение и предложения по улучшению. Распространение данной памятки не ограничено.
Copyright (C) The Internet Society (2003). Все права защищены.
В этом документе приведены примеры потоков вызовов протокола установления сеанса (SIP). Элементы в этих потоках вызовов включают SIP-агенты пользователей и клиентов, SIP-прокси и серверы перенаправления. Сценарии включают регистрацию SIP и создание сеанса SIP. Показаны схемы потоков вызовов и сведения о сообщениях.
- Основные примеры потока вызовов Session Initiation Protocol (SIP)
- 1. Обзор
- 2. SIP-регистрация
- 3. Установка сеанса SIP
- 3.1. Успешная установка сеанса
- 3.2. Установка сеанса через два прокси
- 3.3. Сеанс с множественной прокси-аутентификацией
- 3.4. Успешный сеанс с отказом прокси-сервера
- 3.5. Сеанс через SIP ALG
- 3.6. Сеанс через редирект и прокси-серверы с SDP в ACK
- 3.7. Сеанс с re-INVITE (Смена IP-адреса)
- 3.8. Неудачно - нет ответа
- 3.9. Неудачно - занято
- 3.10. Неудачно - нет ответа от User Agent
- 3.11. Неудачно - временно недоступно
- 4. Соображения безопасности
- 5. Ссылки
- 6. Заявление об интеллектуальной собственности
- 7. Благодарности
- 8. Адреса авторов
- 9. Полное заявление об авторских правах
Потоки вызовов, показанные в этом документе, были созданы при проектировании сети связи SIP IP. Они представляют собой пример минимального набора функциональных возможностей.
Авторы надеются, что этот документ будет полезен как разработчикам SIP, так и разработчикам протоколов и поможет в дальнейшем достижении цели стандартной реализации RFC 3261[1]. Эти потоки представляют собой тщательно проверенные и рассмотренные рабочей группой сценарии наиболее основных примеров в качестве дополнения к спецификациям.
Эти потоки вызовов основаны на текущей версии 2.0 SIP в RFC 3261[1] с использованием SDP, описанным в RFC 3264[2]. Другие RFC также включают стандарт SIP, но не используются в этом наборе основных потоков вызовов.
Показаны примеры взаимодействия потока SIP с ТфОП через шлюзы, содержащиеся в сопровождающем документе, документе RFC 3666[5].
Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" и "OPTIONAL" в настоящем документе следует толковать так, как описано в BCP 14, RFC 2119[4].
В основе потоков вызовов в этом документе лежит ряд гипотез об архитектуре, сети и протоколе. Обратите внимание, что эти гипотезы не являются требованиями. Они изложены в этом разделе чтобы их можно было принять во внимание и помочь в понимании примеров потока вызовов.
Аутентификация пользовательских SIP-агентов в этих примерах потоков вызовов выполняется с использованием HTTP Digest, как определено в [1] и [3].
Некоторые прокси-серверы в этих потоках вызовов вставляют заголовки маршрута записи в запросы, чтобы гарантировать, что они находятся в сигнальном пути для будущих обменов сообщениями.
Эти потоки показывают TCP, TLS и UDP для транспорта. См. обсуждение в RFC 3261 для получения подробной информации о транспортных проблемах для SIP.
Пунктирные линии (---
) представляют собой сигнальные сообщения, обязательные для сценария вызова. Эти сообщения могут быть сигнализацией SIP или PSTN. Стрелка указывает направление потока сообщений.
Двойные пунктирные линии (===
) представляют собой медиа-пути между элементами сети.
Сообщения с круглыми скобками вокруг их имени представляют собой необязательные сообщения.
Сообщения, обозначенные на рисунках как F1, F2 и т.д. относятся к деталям сообщения в списке, следующем за рисунком.
Комментарии в деталях сообщения отображаются в следующем виде:
/* Комментарии. */
Этот документ не подписывает потоки точно так, как они показаны, а скорее иллюстрирует принципы наилучшей практики. Это лучшие практики использования (упорядочение, синтаксис, выбор функций для этой цели, обработка ошибок) методов SIP, заголовков и параметров. Важно: точные потоки здесь не должны быть скопированы как есть разработчиком из-за конкретных неправильных характеристик, которые были введены в документ для удобства и перечислены ниже. Подводя итог, можно сказать, что основные потоки представляют собой хорошо изученные примеры использования SIP, которые являются наилучшей общепринятой практикой в соответствии с консенсусом IETF.
Для простоты чтения и редактирования документа существует ряд различий между некоторыми примерами и фактическими сообщениями SIP. Например, ответы HTTP Digest не являются фактическими кодировками MD5. Идентификаторы вызовов часто повторяются, и количество CSeq часто начинается с 1
. Поля заголовка обычно отображаются в том же порядке. Обычно отображается только минимально необходимый набор полей заголовка, другие, которые обычно присутствуют, такие как Accept
, Supported
, Allow
и т.д. не отображаются.
Действующие лица:
Element Display Name URI IP Address
------- ------------ --- ----------
User Agent Alice [email protected] 192.0.2.101
User Agent Bob [email protected] 192.0.2.201
User Agent [email protected] 192.0.2.100
Proxy Server ss1.atlanta.example.com 192.0.2.111
Proxy/Registrar ss2.biloxi.example.com 192.0.2.222
Proxy Server ss3.chicago.example.com 192.0.2.233
ALG alg1.atlanta.example.com 192.0.2.128
Регистрация связывает URI контакта конкретного устройства с адресом записи пользователя SIP (Address of Record - AOR).
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 401 Unauthorized F2 |
|<------------------------------|
| REGISTER F3 |
|------------------------------>|
| 200 OK F4 |
|<------------------------------|
| |
Bob отправляет запрос SIP REGISTER
на SIP-сервер. Запрос включает в себя список контактов пользователя. Этот поток показывает использование HTTP дайджест для аутентификации с использованием TLS транспорта. Транспорт TLS используется из-за отсутствия защиты целостности в дайджесте HTTP и опасности захвата регистрации без него, как описано в RFC 3261[1].
Сервер SIP предоставляет Бобу вызов. Боб вводит свой действительный идентификатор пользователя и пароль. SIP-клиент Боба шифрует информацию о пользователе в соответствии с вызовом, выданным SIP-сервером, и отправляет ответ на SIP-сервер. SIP-сервер проверяет учетные данные пользователя. Он регистрирует пользователя в своей базе данных контактов и возвращает ответ (200 OK) SIP-клиенту Боба. Ответ включает текущий список контактов пользователя в заголовках контактов. Показанный формат аутентификации - дайджест HTTP. Предполагается, что Боб ранее не регистрировался на этом сервере.
Детали сообщения:
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 REGISTER
Contact: <sips:[email protected]>
Content-Length: 0
F2 401 Unauthorized SIP Server -> Bob
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>;tag=1410948204
Call-ID: [email protected]
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="ea9c8e88df84f1cec4341ae6cbe5a359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F3 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
Max-Forwards: 70
From: Bob <sips:[email protected]>;tag=ja743ks76zlflH
To: Bob <sips:[email protected]>
Call-ID: [email protected]
CSeq: 2 REGISTER
Contact: <sips:[email protected]>
Authorization: Digest username="bob", realm="atlanta.example.com"
nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="dfe56131d1958046689d83306477ecc"
Content-Length: 0
F4 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
;received=192.0.2.201
From: Bob <sips:[email protected]>;tag=ja743ks76zlflH
To: Bob <sips:[email protected]>;tag=37GkEhwl6
Call-ID: [email protected]
CSeq: 2 REGISTER
Contact: <sips:[email protected]>;expires=3600
Content-Length: 0
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 200 OK F2 |
|<------------------------------|
| |
Боб хочет обновить список адресов, по которым SIP-сервер будет перенаправлять или пересылать запросы INVITE
.
Боб отправляет запрос SIP REGISTER
на SIP-сервер. Запрос Боба включает в себя обновленный список контактов. Поскольку пользователь уже прошел проверку подлинности на сервере - он предоставляет учетные данные проверки подлинности вместе с запросом и не оспаривается сервером. SIP-сервер проверяет учетные данные пользователя. Он регистрирует пользователя в своей базе данных контактов, обновляет список контактов пользователя и возвращает ответ (200 OK
) SIP-клиенту Боба. Ответ включает текущий список контактов пользователя в заголовках контактов.
Детали сообщения:
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 REGISTER
Contact: mailto:[email protected]
Authorization: Digest username="bob", realm="atlanta.example.com",
qop="auth", nonce="1cec4341ae6cbe5a359ea9c8e88df84f", opaque="",
uri="sips:ss2.biloxi.example.com",
response="71ba27c64bd01de719686aa4590d5824"
Content-Length: 0
F2 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>;tag=34095828jh
Call-ID: [email protected]
CSeq: 1 REGISTER
Contact: <sips:[email protected]>;expires=3600
Contact: <mailto:[email protected]>;expires=4294967295
Content-Length: 0
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 200 OK F2 |
|<------------------------------|
| |
Боб отправляет запрос регистрации, не содержащий заголовков контактов, на прокси-сервер, указывая, что пользователь хочет запросить у сервера текущий список контактов пользователя. Поскольку пользователь уже прошел проверку подлинности на сервере - он предоставляет учетные данные аутентификации вместе с запросом и не оспаривается сервером. SIP-сервер проверяет учетные данные пользователя. Сервер возвращает ответ (200 OK
), который включает текущий список регистрации пользователя в заголовках контактов.
Детали сообщения:
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 REGISTER
Authorization: Digest username="bob", realm="atlanta.example.com",
nonce="df84f1cec4341ae6cbe5ap359a9c8e88", opaque="",
uri="sips:ss2.biloxi.example.com",
response="aa7ab4678258377c6f7d4be6087e2f60"
Content-Length: 0
F2 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>;tag=jqoiweu75
Call-ID: [email protected]
CSeq: 1 REGISTER
Contact: <sips:[email protected]>;expires=3600
Contact: <mailto:[email protected]>;expires=4294967295
Content-Length: 0
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 200 OK F2 |
|<------------------------------|
| |
Боб хочет отменить его регистрацию на SIP-сервере. Боб отправляет SIP-запрос REGISTER
на SIP-сервер. Срок действия запроса равен 0
и применяется ко всем существующим контактам. Поскольку пользователь уже прошел аутентификацию на сервере - он предоставляет учетные данные аутентификации вместе с запросом и не оспаривается сервером. SIP-сервер проверяет учетные данные пользователя. Он очищает список контактов пользователя и возвращает ответ (200 OK
) SIP-клиенту Боба.
Детали сообщения:
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 REGISTER
Expires: 0
Contact: *
Authorization: Digest username="bob", realm="atlanta.example.com",
nonce="88df84f1cac4341aea9c8ee6cbe5a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="ff0437c51696f9a76244f0cf1dbabbea"
Content-Length: 0
F2 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>;tag=1418nmdsrf
Call-ID: [email protected]
CSeq: 1 REGISTER
Content-Length: 0
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 401 Unauthorized F2 |
|<------------------------------|
| REGISTER F3 |
|------------------------------>|
| 401 Unauthorized F4 |
|<------------------------------|
| |
Боб отправляет SIP-запрос REGISTER
на SIP-сервер. SIP-сервер предоставляет Бобу вызов. Боб вводит свой идентификатор пользователя и пароль. SIP-клиент Боба шифрует информацию о пользователе в соответствии с вызовом, выданным SIP-сервером, и отправляет ответ на SIP-сервер. SIP-сервер пытается проверить учетные данные пользователя, но они недействительны (пароль пользователя не совпадает с паролем, установленным для учетной записи пользователя). Сервер возвращает ответ (401 Unauthorized
) SIP-клиенту Боба.
Детали сообщения:
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 REGISTER
Contact: <sips:[email protected]>
Content-Length: 0
F2 Unauthorized SIP Server -> Bob
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:[email protected]>;tag=a73kszlfl
To: Bob <sips:[email protected]>;tag=1410948204
Call-ID: [email protected]
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="f1cec4341ae6ca9c8e88df84be55a359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F3 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
Max-Forwards: 70
From: Bob <sips:[email protected]>;tag=JueHGuidj28dfga
To: Bob <sips:[email protected]>
Call-ID: [email protected]
CSeq: 2 REGISTER
Contact: <sips:[email protected]>
Authorization: Digest username="bob", realm="atlanta.example.com",
nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="61f8470ceb87d7ebf508220214ed438b"
Content-Length: 0
/* В приведенном выше ответе кодируется неверный пароль */
F4 401 Unauthorized SIP Server -> Bob
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
;received=192.0.2.201
From: Bob <sips:[email protected]>;tag=JueHGuidj28dfga
To: Bob <sips:[email protected]>;tag=1410948204
Call-ID: [email protected]
CSeq: 2 REGISTER
WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="84f1c1ae6cbe5ua9c8e88dfa3ecm3459",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
В этом разделе подробно описывается установление сеанса между двумя агентами SIP-пользователей (UAs): Alice и Bob. Alice (sip:[email protected]) и Bob (sip:[email protected]) считаются SIP-телефонами или устройствами с поддержкой SIP. Успешные вызовы показывают начальную сигнализацию, обмен медиа-информацией в виде полезных нагрузок SDP, установление медиа - сеанса, а затем, наконец, завершение вызова.
Дайджест-проверки подлинности http используется прокси-сервером для аутентификации абонента Alice. Предполагается, что Боб зарегистрировался на прокси-сервере Proxy 2
в соответствии с разделом 2, чтобы иметь возможность принимать вызовы через прокси-сервер.
Alice Bob
| |
| INVITE F1 |
|----------------------->|
| 180 Ringing F2 |
|<-----------------------|
| |
| 200 OK F3 |
|<-----------------------|
| ACK F4 |
|----------------------->|
| Both Way RTP Media |
|<======================>|
| |
| BYE F5 |
|<-----------------------|
| 200 OK F6 |
|----------------------->|
| |
В этом сценарии Алиса выполняет вызов Боба напрямую.
Детали сообщения:
F1 INVITE Alice -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 180 Ringing Bob -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=8321234356
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Length: 0
F3 200 OK Bob -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=8321234356
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F4 ACK Alice -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bd5
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=8321234356
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
/* Потоки RTP устанавливаются между Alice и Bob. */
/* Bob вешает трубку с Alice. Обратите внимание, что CSeq НЕ равен 2,
поскольку Alice и Bob поддерживают свои собственные независимые
счетчики CSeq. (INVITE - это запрос 1, сгенерированный Алисой,
а BYE - это запрос 1, сгенерированный Бобом) */
F5 BYE Bob -> Alice
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sip:[email protected]>;tag=8321234356
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F6 200 OK Alice -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:[email protected]>;tag=8321234356
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| | |
| 407 F2 | | |
|<---------------| | |
| ACK F3 | | |
|--------------->| | |
| INVITE F4 | | |
|--------------->| INVITE F5 | |
| 100 F6 |--------------->| INVITE F7 |
|<---------------| 100 F8 |--------------->|
| |<---------------| |
| | | 180 F9 |
| | 180 F10 |<---------------|
| 180 F11 |<---------------| |
|<---------------| | 200 F12 |
| | 200 F13 |<---------------|
| 200 F14 |<---------------| |
|<---------------| | |
| ACK F15 | | |
|--------------->| ACK F16 | |
| |--------------->| ACK F17 |
| | |--------------->|
| Both Way RTP Media |
|<================================================>|
| | | BYE F18 |
| | BYE F19 |<---------------|
| BYE F20 |<---------------| |
|<---------------| | |
| 200 F21 | | |
|--------------->| 200 F22 | |
| |--------------->| 200 F23 |
| | |--------------->|
| | | |
В этом сценарии Alice выполняет вызов Bob, используя два прокси-сервера Proxy 1
и Proxy 2
. Первоначальное сообщение INVITE
(F1) содержит предварительно загруженный заголовок Route
с адресом Proxy 1
(Proxy 1 настроен как исходящий прокси по умолчанию для Alice.). Запрос не содержит учетных данных авторизации, которые требуются Proxy 1
, поэтому отправляется ответ 407 Proxy Authorization
, содержащий информацию о запросе. Затем отправляется новое сообщение INVITE
(F4) с правильными учетными данными и вызов продолжается. Вызов завершается, когда Боб отключается, отправляя сообщение BYE
.
Proxy 1 вставляет заголовок Record-Route
в сообщение INVITE
, чтобы гарантировать его присутствие во всех последующих обменах сообщениями. Proxy 2 также вставляется в заголовок Record-Route
. ACK
(F15) и BYE
(F18) имеют заголовок Route
.
Детали сообщения:
F1 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 запрашивает у Alice аутентификацию */
F2 407 Proxy Authorization Required Proxy 1 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=3flal12sf
Call-ID: [email protected]
CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="f84f1cec41e6cbe5aea9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F3 ACK Alice -> Proxy 1
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=3flal12sf
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
/* Alice в ответ повторно отправляет INVITE с учетными
данными для аутентификации. */
F4 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
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.
Клиент для Алисы готовится к приему данных на порт 49172 из сети. */
F5 INVITE Proxy 1 -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F6 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Content-Length: 0
F7 INVITE Proxy 2 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F8 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Content-Length: 0
F9 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
Contact: <sip:[email protected];transport=tcp>
CSeq: 2 INVITE
Content-Length: 0
F10 180 Ringing Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
Contact: <sip:[email protected];transport=tcp>
CSeq: 2 INVITE
Content-Length: 0
F11 180 Ringing Proxy 1 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
Contact: <sip:[email protected];transport=tcp>
CSeq: 2 INVITE
Content-Length: 0
F12 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F13 200 OK Proxy 2 -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F14 200 OK Proxy 1 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F15 ACK Alice -> Proxy 1
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>,
<sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 ACK
Content-Length: 0
F16 ACK Proxy 1 -> Proxy 2
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
;received=192.0.2.101
Max-Forwards: 69
Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 ACK
Content-Length: 0
F17 ACK Proxy 2 -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
;received=192.0.2.101
Max-Forwards: 68
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 ACK
Content-Length: 0
/* RTP-потоки RTP устанавливаются между Алисой и Бобом */
/* Боб вешает трубку вместе с Алисой. */
/* Опять же, обратите внимание, что CSeq не равен 3. Алиса и Боб сохраняют
их собственные отдельные счетчики CSeq */
F18 BYE Bob -> Proxy 2
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F19 BYE Proxy 2 -> Proxy 1
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
Max-Forwards: 69
Route: <sip:ss1.atlanta.example.com;lr>
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F20 BYE Proxy 1 -> Alice
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
Max-Forwards: 68
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F21 200 OK Alice -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F22 200 OK Proxy 1 -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.101
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F23 200 OK Proxy 2 -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|----------->| | |
| 407 Proxy Authorization Required F2 |
|<-----------| | |
| ACK F3 | | |
|----------->| | |
| INVITE F4 | | |
|----------->| | |
| 100 F5 | | |
|<-----------| INVITE F6 | |
| |---------->| |
| | 407 Proxy Authorization Required F7
| |<----------| |
| | ACK F8 | |
| |---------->| |
| 407 Proxy Authorization Required F9 |
|<-----------| | |
| ACK F10 | | |
|----------->| | |
| INVITE F11| | |
|----------->| | |
| 100 F12 | | |
|<-----------| INVITE F13| |
| |---------->| |
| | 100 F14 | |
| |<----------| INVITE F15 |
| | |------------>|
| | | 200 OK F16 |
| | 200 OK F17|<------------|
| 200 OK F18 |<----------| |
|<-----------| | |
| ACK F19 | | |
|----------->| ACK F20 | |
| |---------->| ACK F21 |
| | |------------>|
| RTP Media Path |
|<====================================>|
В этом сценарии Alice выполняет вызов Боба, используя два прокси-сервера Proxy 1
и Proxy 2
. Alice имеет действительные учетные данные в обоих доменах. Поскольку начальный INVITE (F1)
не содержит учетных данных авторизации, необходимых Proxy 1
, поэтому отправляется ответ 407 Proxy Authorization
, содержащий информацию о вызове. Затем отправляется новый запрос INVITE (F4)
, содержащий действительные учетные данные, и вызов продолжается после запроса Proxy 2
и получения действительных учетных данных. Вызов завершается, когда Боб отключается, инициируя сообщение BYE
.
Proxy 1
вставляет заголовок Record-Route в сообщение INVITE
, чтобы убедиться, что он присутствует во всех последующих обменах сообщениями. Proxy 2
также вставляет себя в заголовок Record-Route.
Детали сообщения:
F1 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 запрашивает у Alice аутентификацию */
F2 407 Proxy Authorization Required Proxy 1 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=876321
Call-ID: [email protected]
CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="wf84f1cczx41ae6cbeaea9ce88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F3 ACK Alice -> Proxy 1
ACK sip:[email protected] SIP/2.0
Max-Forwards: 70
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=876321
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
/* Alice отвечает, повторно отправляя INVITE с учетными данными
аутентификации в нем. Используется тот же Call-ID, поэтому
CSeq увеличивается. */
F4 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected]>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
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.
Клиент Alice готовится к приему данных на порт 49172 из сети. */
F5 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Content-Length: 0
F6 INVITE Proxy 1 -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 2 запрашивает у Alice аутентификацию */
F7 407 Proxy Authorization Required Proxy 2 -> Proxy 1
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=838209
Call-ID: [email protected]
CSeq: 2 INVITE
Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F8 ACK Proxy 1 -> Proxy 2
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=838209
Call-ID: [email protected]
CSeq: 2 ACK
Content-Length: 0
/* Proxy 1 пересылает вызов Алисе для аутентификации от Proxy 2 */
F9 407 Proxy Authorization Required Proxy 1 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=838209
Call-ID: [email protected]
CSeq: 2 INVITE
Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F10 ACK Alice -> Proxy 1
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=838209
Call-ID: [email protected]
CSeq: 2 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"
Content-Length: 0
/* Алиса отвечает повторной отправкой INVITE с данными аутентификации
для Proxy 1 и Proxy 2. */
F11 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 3 INVITE
Contact: <sip:[email protected]>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
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 на прокси. */
F12 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 3 INVITE
Content-Length: 0
F13 INVITE Proxy 1 -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 3 INVITE
Contact: <sip:[email protected]>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 2 находит свои учетные данные и авторизует Алису,
пересылая INVITE Бобу. */
F14 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 3 INVITE
Content-Length: 0
F15 INVITE Proxy 2 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 3 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Боб немедленно отвечает на звонок */
F16 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=9103874
Call-ID: [email protected]
CSeq: 3 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F17 200 OK Proxy 2 -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=9103874
Call-ID: [email protected]
CSeq: 3 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F18 200 OK Proxy 1 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=9103874
Call-ID: [email protected]
CSeq: 3 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F19 ACK Alice -> Proxy 1
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>,
<sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=9103874
Call-ID: [email protected]
CSeq: 3 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"
Content-Length: 0
F20 ACK Proxy 1 -> Proxy 2
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44
;received=192.0.2.101
Max-Forwards: 69
Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=9103874
Call-ID: [email protected]
CSeq: 3 ACK
Contact: <sip:[email protected]>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"
Content-Length: 0
F21 ACK Proxy 2 -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44
;received=192.0.2.101
Max-Forwards: 68
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=9103874
Call-ID: [email protected]
CSeq: 3 ACK
Contact: <sip:[email protected]>
Content-Length: 0
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| | |
| INVITE F2 | | |
|--------------->| | |
| INVITE F3 | | |
|--------------->| | |
| INVITE F4 | | |
|--------------->| | |
| INVITE F5 | | |
|--------------->| | |
| INVITE F6 | | |
|--------------->| | |
| INVITE F7 | | |
|--------------->| | |
| INVITE F8 | |
|-------------------------------->| |
| 407 F9 | |
|<--------------------------------| |
| ACK F10 | |
|-------------------------------->| |
| INVITE F11 | |
|-------------------------------->| INVITE F12 |
| 100 F13 |--------------->|
|<--------------------------------| |
| | 180 F14 |
| 180 F15 |<---------------|
|<--------------------------------| |
| | 200 F16 |
| 200 F17 |<---------------|
|<--------------------------------| |
| ACK F18 | |
|-------------------------------->| ACK F19 |
| |--------------->|
| Both Way RTP Media |
|<================================================>|
| | BYE F20 |
| BYE F21 |<---------------|
|<--------------------------------| |
| 200 F22 | |
|-------------------------------->| 200 F23 |
| |--------------->|
| | |
В этом сценарии Alice выполняет вызов Боба через прокси-сервер. Alice настроена для первичного прокси-сервера SIP Proxy 1
и вторичного прокси-сервера SIP Proxy 2
(или может использовать записи DNS SRV для определения местоположения Proxy 1
и Proxy 2
). У Алисы есть действительные учетные данные для обоих доменов. Proxy 1
не обслуживается и не отвечает на сообщения INVITE
(доступен, но не отвечает). Затем Alice завершает вызов Боба, используя Proxy 2
.
Детали сообщения:
F1 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK465b6d
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 INVITE Alice -> Proxy 1
Same as Message F1
F3 INVITE Alice -> Proxy 1
Same as Message F1
F4 INVITE Alice -> Proxy 1
Same as Message F1
F5 INVITE Alice -> Proxy 1
Same as Message F1
F6 INVITE Alice -> Proxy 1
Same as Message F1
F7 INVITE Alice -> Proxy 1
Same as Message F1
/* Алиса отказывается от не отвечающего прокси-сервера */
F8 INVITE Alice -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 2 вызывает Алису для аутентификации */
F9 407 Proxy Authorization Required Proxy 2 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=2421452
Call-ID: [email protected]
CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",
nonce="1ae6cbe5ea9c8e8df84fqnlec434a359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F10 ACK Alice -> Proxy 2
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=2421452
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
/* Алиса отвечает повторной отправкой INVITE с данными
аутентификации. */
F11 INVITE Alice -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected]>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="",
uri="sip:[email protected]",
response="8a880c919d1a52f20a1593e228adf599"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Прокси 2 принимает учетные данные и пересылает INVITE Бобу.
Клиент Алисы готовится к приему данных на порт 49172 из сети.
*/
F12 INVITE Proxy 2 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F13 100 Trying Proxy 2 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Content-Length: 0
F14 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F15 180 Ringing Proxy 2 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F16 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F17 200 OK Proxy 2 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F18 ACK Alice -> Proxy 2
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8g
Max-Forwards: 70
Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 ACK
Content-Length: 0
F19 ACK Proxy 2 -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8g
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 ACK
Content-Length: 0
/* Между Алисой и Бобом устанавливаются потоки RTP */
/* Боб завершает вызов с Алисой. */
F20 BYE Bob -> Proxy 2
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
Route: <sip:ss2.biloxi.example.com;lr>
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F21 BYE Proxy 2 -> Alice
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
Max-Forwards: 69
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F22 200 OK Alice -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F23 200 OK Proxy 2 -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
Alice ALG Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| 180 F6 |
| | 180 F7 |<---------------|
| 180 F8 |<---------------| |
|<---------------| | 200 F9 |
| | 200 F10 |<---------------|
| 200 F11 |<---------------| |
|<---------------| |
| ACK F12 | |
|--------------->| ACK F13 |
| |-------------------------------->|
| RTP Media | Both Way RTP Media |
|<==============>|<===============================>|
| BYE F14 | |
|--------------->| BYE F15 |
| |-------------------------------->|
| | 200 F16 |
| 200 F17 |<--------------------------------|
|<---------------| |
| | |
Alice совершает вызов Bob через ALG (шлюз прикладного уровня) и SIP-прокси. Маршрутизация через ALG выполняется с помощью предварительно загруженного заголовка Route
в INVITE
F1. Обратите внимание, что настройка медиапотока не является сквозной - ALG терминирует оба медиапотока и соединяет их. Это выполняется ALG изменением SDP в INVITE
(F1) и сообщением 200 ОК
(F10), и, возможно, любым 18-кратным сообщением ACK
, содержащих SDP.
В дополнение к обходу брандмауэра этот агент пользователя back-to-Back (B2BUA) может использоваться как часть службы анонимайзера (в которой вся идентифицирующая информация об Alice будет удалена) или для выполнения преобразования кодека мультимедиа, такого как преобразование mu-law в A-law PCM при международном вызове.
Также обратите внимание, что Proxy 2
не записывает Record-Route в этом потоке вызовов.
Детали сообщения:
F1 INVITE Alice -> SIP ALG
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Route: <sip:alg1.atlanta.example.com;lr>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
uri="sip:[email protected]",
response="b3f392f9218a328b9294076d708e6815"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Клиент Алисы готовится к приему данных на порт 49172 из сети. */
F2 INVITE SIP ALG -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
uri="sip:[email protected]",
response="b3f392f9218a328b9294076d708e6815"
Content-Type: application/sdp
Content-Length: 150
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.128
t=0 0
m=audio 2000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying SIP ALG -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
/* SIP ALG prepares to proxy data from port 192.0.2.128/2000 to
192.0.2.101/49172. Proxy 2 uses a Location Service function to
determine where Bob is located. Based upon location analysis the call
is forwarded to Bob */
F4 INVITE Proxy 2 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 150
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.128
t=0 0
m=audio 2000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> SIP ALG
SIP/2.0 100 Trying
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F6 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F7 180 Ringing Proxy 2 -> SIP ALG
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F8 180 Ringing SIP ALG -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F9 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F10 200 OK Proxy 2 -> SIP ALG
SIP/2.0 200 OK
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F11 200 OK SIP ALG -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.128
t=0 0
m=audio 1734 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* ALG готовится проксировать пакеты от 192.0.2.128/
1734 до 192.0.2.201/3456 */
F12 ACK Alice -> SIP ALG
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bhh
Max-Forwards: 70
Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
F13 ACK SIP ALG -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bhh
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
/* Потоки RTP устанавливаются между Алисой и ALG и
между ALG и Bob */
/* Алиса завершает вызов с Бобом. */
F14 BYE Alice -> SIP ALG
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
Max-Forwards: 70
Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 BYE
Content-Length: 0
F15 BYE SIP ALG -> Bob
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 BYE
Content-Length: 0
F16 200 OK Bob -> SIP ALG
SIP/2.0 200 OK
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 BYE
Content-Length: 0
F17 200 OK SIP ALG -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 BYE
Content-Length: 0
Alice Redirect Server Proxy 3 Bob
| | | |
| INVITE F1 | | |
|--------------->| | |
| 302 F2 | | |
|<---------------| | |
| ACK F3 | | |
|--------------->| | |
| INVITE F4 | |
|-------------------------------->| INVITE F5 |
| 100 F6 |--------------->|
|<--------------------------------| 180 F7 |
| 180 F8 |<---------------|
|<--------------------------------| |
| | 200 F9 |
| 200 F10 |<---------------|
|<--------------------------------| |
| ACK F11 | |
|-------------------------------->| ACK F12 |
| |--------------->|
| Both Way RTP Media |
|<================================================>|
| | BYE F13 |
| BYE F14 |<---------------|
|<--------------------------------| |
| 200 F15 | |
|-------------------------------->| 200 F16 |
| |--------------->|
| | |
В этом сценарии Алиса совершает звонок Бобу, используя сначала сервер перенаправления, а затем прокси-сервер. Сообщение INVITE
сначала отправляется на сервер перенаправления. Сервер возвращает ответ 302 Moved Temporarily (F2)
, содержащий заголовок Contact
с текущим SIP-адресом Боба. Затем Алиса генерирует новый INVITE
и отправляет его Бобу через прокси-сервер, и звонок проходит нормально. В этом примере в INVITE
нет SDP, поэтому SDP передается в сообщении ACK
.
Вызов завершается, когда Боб посылает сообщение BYE
.
Детали сообщения:
F1 INVITE Alice -> Redirect Server
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F2 302 Moved Temporarily Redirect Proxy -> Alice
SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=53fHlqlQ2
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Length: 0
F3 ACK Alice -> Redirect Server
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=53fHlqlQ2
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
F4 INVITE Alice -> Proxy 3
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Length: 0
F5 INVITE Proxy 3 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Length: 0
F6 100 Trying Proxy 3 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2 INVITE
Content-Length: 0
F7 180 Ringing Bob -> Proxy 3
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.233
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Length: 0
F8 180 Ringing Proxy 3 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Length: 0
F9 200 OK Bob -> Proxy 3
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.233
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 148
v=0
o=bob 2890844527 2890844527 IN IP4 client.chicago.example.com
s=-
c=IN IP4 192.0.2.100
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F10 200 OK Proxy -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 148
v=0
o=bob 2890844527 2890844527 IN IP4 client.chicago.example.com
s=-
c=IN IP4 192.0.2.100
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* ACK содержит SDP Алисы, поскольку в INVITE его нет */
F11 ACK Alice -> Proxy 3
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bq9
Max-Forwards: 70
Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 ACK
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F12 ACK Proxy 3 -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bq9
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 ACK
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Между Алисой и Бобом устанавливаются потоки RTP */
/* Боб завершает вызов с Алисой. */
F13 BYE Bob -> Proxy 3
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
Max-Forwards: 70
Route: <sip:ss3.chicago.example.com;lr>
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F14 BYE Proxy 3 -> Alice
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.100
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
Max-Forwards: 69
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F15 200 OK Alice -> Proxy 3
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.233
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
;received=192.0.2.100
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
F16 200 OK Proxy 3 -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
;received=192.0.2.100
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 1 BYE
Content-Length: 0
Alice Proxy 2 Bob
| F1 INVITE | |
|------------------->| F2 INVITE |
| F3 100 Trying |------------------->|
|<-------------------| F4 180 Ringing |
| F5 180 Ringing |<-------------------|
|<-------------------| |
| | F6 200 OK |
| F7 200 OK |<-------------------|
|<-------------------| |
| F8 ACK |
|---------------------------------------->|
| Both Way RTP Media Established |
|<=======================================>|
| |
| Bob changes IP address |
| |
| F9 INVITE |
|<----------------------------------------|
| F10 200 OK |
|---------------------------------------->|
| F11 ACK |
|<----------------------------------------|
| New RTP Media Stream |
|<=======================================>|
| F12 BYE |
|---------------------------------------->|
| F13 200 OK |
|<----------------------------------------|
| |
В этом примере показана сессия, в которой медианоситель меняется в середине сессии. Когда IP-адрес Боба меняется во время сессии, Боб посылает повторный INVITE
, содержащий новый контакт и информацию SDP (номер версии увеличивается) на A. В этом потоке прокси не записывает маршрутизацию, поэтому не находится в пути обмена сообщениями SIP после первоначального обмена.
Детали сообщения:
F1 INVITE Alice -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 INVITE Proxy 2 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 2 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F4 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F5 180 Ringing Proxy 2 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F6 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F7 200 OK Proxy 2 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F8 ACK Alice -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b7b
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
/* Между Алисой и Бобом устанавливаются потоки RTP */
/* Боб меняет IP-адрес и шлёт re-INVITE Алисе с новым контактом и SDP */
F9 INVITE Bob -> Alice
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkld5l
Max-Forwards: 70
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 14 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 149
v=0
o=bob 2890844527 2890844528 IN IP4 client.chicago.example.com
s=-
c=IN IP4 192.0.2.100
t=0 0
m=audio 47172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F10 200 OK Alice -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkld5l
;received=192.0.2.100
Max-Forwards: 70
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 14 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 150
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 1000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F11 ACK Bob -> Alice
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkldcc
Max-Forwards: 70
From: Bob <sip:[email protected]>;tag=314159
To: Alice <sip:[email protected]>;tag=9fxced76sl
Call-ID: [email protected]
CSeq: 14 ACK
Content-Length: 0
/* Новый поток RTP установлен между Алисой и Бобом */
/* Алиса завершает вызов с Бобом */
F12 BYE Alice -> Bob
BYE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bo4
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 BYE
Content-Length: 0
F13 200 OK Bob -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bo4
;received=192.0.2.101
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 2 BYE
Content-Length: 0
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| |
| | | 180 F6 |
| | 180 F7 |<---------------|
| 180 F8 |<---------------| |
|<---------------| | |
| CANCEL F9 | | |
|--------------->| | |
| 200 F10 | | |
|<---------------| CANCEL F11 | |
| |--------------->| |
| | 200 F12 | |
| |<---------------| |
| | | CANCEL F13 |
| | |--------------->|
| | | 200 F14 |
| | |<---------------|
| | | 487 F15 |
| | |<---------------|
| | | ACK F16 |
| | 487 F17 |--------------->|
| |<---------------| |
| | ACK F18 | |
| 487 F19 |--------------->| |
|<---------------| | |
| ACK F20 | | |
|--------------->| | |
| | | |
В этом сценарии Алиса прекращает разговор до того, как Боб ответит (отправит ответ 200 OK
). Алиса посылает CANCEL (F9)
, поскольку от Боба не было получено окончательного ответа. Если бы 200 OK
на INVITE
пересекся с CANCEL
, Алиса отправила бы ACK
, а затем BYE
Бобу, чтобы правильно завершить вызов.
Обратите внимание, что сообщение CANCEL
подтверждается сообщением 200 OK
по принципу hop-by-hop, а не end-to-end.
Детали сообщения:
F1 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="",
uri="sip:[email protected]",
response="b00b416324679d7e243f55708d44be7b"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Клиент Алисы готовится к приему данных на порт 49172 из сети. */
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
Max-Forwards: 68
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F6 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F7 180 Ringing Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F8 180 Ringing Proxy 1 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F9 CANCEL Alice -> Proxy 1
CANCEL sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Route: <sip:ss1.atlanta.example.com;lr>
Call-ID: [email protected]
CSeq: 1 CANCEL
Content-Length: 0
F10 200 OK Proxy 1 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 CANCEL
Content-Length: 0
F11 CANCEL Proxy 1 -> Proxy 2
CANCEL sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 CANCEL
Content-Length: 0
F12 200 OK Proxy 2 -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 CANCEL
Content-Length: 0
F13 CANCEL Proxy 2 -> Bob
CANCEL sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 CANCEL
Content-Length: 0
F14 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 CANCEL
Content-Length: 0
F15 487 Request Terminated Bob -> Proxy 2
SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F16 ACK Proxy 2 -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
F17 487 Request Terminated Proxy 2 -> Proxy 1
SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F18 ACK Proxy 1 -> Proxy 2
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
F19 487 Request Terminated Proxy 1 -> Alice
SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
F20 ACK Alice -> Proxy 1
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="",
uri="sip:[email protected]",
response="b00b416324679d7e243f55708d44be7b"
CSeq: 1 ACK
Content-Length: 0
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| |
| | | 486 F6 |
| | |<---------------|
| | | ACK F7 |
| | 486 F8 |--------------->|
| |<---------------| |
| | ACK F9 | |
| 486 F10 |--------------->| |
|<---------------| | |
| ACK F11 | | |
|--------------->| | |
| | | |
В этом сценарии Боб занят и посылает ответ 486 Busy Here
на INVITE
Алисы. Обратите внимание, что ответ не-2xx подтверждается по принципу hop-by-hop, а не из конца в конец. Также обратите внимание, что многие SIP UA не будут возвращать ответ 486
, поскольку они имеют несколько линий и другие функции.
Детали сообщения:
F1 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected];transport=tcp>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="",
uri="sip:[email protected]",
response="702138b27d869ac8741e10ec643d55be"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Клиент Алисы готовится к приему данных на порт 49172 из сети. */
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected];transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F6 486 Busy Here Bob -> Proxy 2
SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F7 ACK Proxy 2 -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
F8 486 Busy Here Proxy 2 -> Proxy 1
SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F9 ACK Proxy 1 -> Proxy 2
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
F10 486 Busy Here Proxy 1 -> Alice
SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F11 ACK Alice -> Proxy 1
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="",
uri="sip:[email protected]",
response="702138b27d869ac8741e10ec643d55be"
Content-Length: 0
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| INVITE F6 |
| | |--------------->|
| | | INVITE F7 |
| | |--------------->|
| | | INVITE F8 |
| | |--------------->|
| | | INVITE F9 |
| | |--------------->|
| | | INVITE F10 |
| | |--------------->|
| | | INVITE F11 |
| | 480 F12 |--------------->|
| |<---------------| |
| | ACK F13 | |
| 480 F14 |--------------->| |
|<---------------| | |
| ACK F15 | | |
|--------------->| | |
| | | |
В этом примере Боб не отвечает на сообщения INVITE
Алисы, повторно передаваемые Proxy 2
. После шестой повторной передачи, Proxy 2
отказывает и посылает Алисе сообщение 480 No Response
.
Детали сообщения:
F1 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
uri="sip:[email protected]",
response="7afc04be7961f053c24f80e7dbaf888f"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Клиент Алисы готовится к приему данных на порт 49172 из сети. */
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F6 INVITE Proxy 2 -> Bob
Resend of Message F4
F7 INVITE Proxy 2 -> Bob
Resend of Message F4
F8 INVITE Proxy 2 -> Bob
Resend of Message F4
F9 INVITE Proxy 2 -> Bob
Resend of Message F4
F10 INVITE Proxy 2 -> Bob
Resend of Message F4
F11 INVITE Proxy 2 -> Bob
Resend of Message F4
/* Proxy 2 отказывает */
F12 480 No Response Proxy 2 -> Proxy 1
SIP/2.0 480 No Response
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F13 ACK Proxy 1 -> Proxy 2
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
F14 480 No Response Proxy 1 -> Alice
SIP/2.0 480 No Response
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F15 ACK Alice -> Proxy 1
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
uri="sip:[email protected]",
response="7afc04be7961f053c24f80e7dbaf888f"
Content-Length: 0
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| 180 F6 |
| | 180 F7 |<---------------|
| 180 F8 |<---------------| |
|<---------------| | 480 F9 |
| | |<---------------|
| | | ACK F10 |
| | 480 F11 |--------------->|
| |<---------------| |
| | ACK F12 | |
| 480 F13 |--------------->| |
|<---------------| | |
| ACK F14 | | |
|--------------->| | |
| | | |
В этом сценарии Боб сначала посылает Алисе ответ 180 Ringing
, указывая, что происходит оповещение. Однако затем Алисе отправляется ответ 480 Unavailable
. Этот ответ подтверждается и передается обратно Алисе.
Детали сообщения:
F1 INVITE Alice -> Proxy 1
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="",
uri="sip:[email protected]",
response="59a46a91bf1646562a4d486c84b399db"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Клиент Алисы готовится к приему данных на порт 49172 из сети. */
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F6 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F7 180 Ringing Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F8 180 Ringing Proxy 1 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]>
Content-Length: 0
F9 480 Temporarily Unavailable Bob -> Proxy 2
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F10 ACK Proxy 2 -> Bob
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
F11 480 Temporarily Unavailable Proxy 2 -> Proxy 1
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F12 ACK Proxy 1 -> Proxy 2
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 ACK
Content-Length: 0
F13 480 Temporarily Unavailable Proxy 1 -> Alice
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
CSeq: 1 INVITE
Content-Length: 0
F14 ACK Alice -> Proxy 1
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:[email protected]>;tag=9fxced76sl
To: Bob <sip:[email protected]>;tag=314159
Call-ID: [email protected]
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="",
uri="sip:[email protected]",
response="59a46a91bf1646562a4d486c84b399db"
CSeq: 1 ACK
Content-Length: 0
Поскольку данный документ содержит примеры установления сеанса SIP, применяются соображения безопасности, изложенные в RFC 3261[1]. RFC 3261 описывает основные угрозы, включая перехват регистрации, выдачу себя за сервер, подделку тела сообщения, модификацию или разрыв сеанса, а также атаки типа "отказ в обслуживании" и "усиленные атаки". Использование дайджеста HTTP, как показано в этом документе, обеспечивает одностороннюю аутентификацию и защиту от повторных атак. Транспорт TLS используется в сценариях регистрации из-за отсутствия защиты целостности в дайджесте HTTP и опасности перехвата регистрации без нее, как описано в RFC 3261[1]. Полное обсуждение недостатков дайджестов HTTP приведено в RFC 3261[1]. Использование TLS и схемы URI Secure SIP (sips) обеспечивает более высокий уровень безопасности, включая двустороннюю аутентификацию. S/MIME может обеспечить сквозную конфиденциальность и защиту целостности тел сообщений, как описано в RFC 3261.
[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.
[2] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with SDP", RFC 3264, April 2002.
[3] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A. and L. Stewart, "HTTP authentication: Basic and Digest Access Authentication", RFC 2617, June 1999.
[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[5] Johnston, A., Donovan, S., Sparks, R., Cunningham, C. and K. Summers, "Session Initiation Protocol (SIP) Public Switched Telephone Network (PSTN) Call Flows", BCP 76, RFC 3666, December 2003.
IETF не занимает никакой позиции в отношении действительности или объема любых прав интеллектуальной собственности или других прав, которые могут быть заявлены как относящиеся к реализации или использованию технологии, описанной в данном документе, или степени, в которой может быть или не быть доступна любая лицензия на основании таких прав; она также не утверждает, что предприняла какие-либо усилия для выявления таких прав. Информация о процедурах IETF в отношении прав на документацию, относящуюся к треку стандартов и стандартам, содержится в документе BCP-11. Копии заявлений о правах, предоставленных для публикации, и любые заверения о лицензиях, которые будут предоставлены, или результат попытки получить общую лицензию или разрешение на использование таких прав собственности исполнителями или пользователями данной спецификации могут быть получены в Секретариате IETF.
IETF приглашает любую заинтересованную сторону довести до ее сведения любые авторские права, патенты или патентные заявки, или другие права собственности, которые могут охватывать технологию, которая может потребоваться для применения настоящего стандарта. Пожалуйста, адресуйте информацию Исполнительному директору IETF.
Этот документ был подготовлен совместными усилиями рабочих групп SIP и SIPPING. Авторы хотят поблагодарить всех, кто читал, просматривал, комментировал или вносил предложения по улучшению этого документа.
Спасибо Rohan Mahy, Adam Roach, Gonzalo Camarillo, Cullen Jennings и Tom Taylor за их подробные комментарии во время окончательного рассмотрения. Спасибо Dean Willis за его ранний вклад в разработку этого документа.
Авторы выражают благодарность Kundan Singh за выполнение проверки синтаксического анализа сообщений.
Авторы выражают благодарность следующим лицам за их участие в рассмотрении данного документа о потоках вызовов: Aseem Agarwal, Rafi Assadi, Ben Campbell, Sunitha Kumar, Jon Peterson, Marc Petit-Huguenin, Vidhi Rastogi и Bodgey Yin Shaohua.
Авторы также хотели бы поблагодарить за помощь следующих лиц: Jean-Francois Mule, Hemant Agrawal, Henry Sinnreich, David Devanatham, Joe Pizzimenti, Matt Cannon, John Hearty, the whole MCI WorldCom IPOP Design team, Scott Orton, Greg Osterhout, Pat Sollee, Doug Weisenberg, Danny Mistry, Steve McKinnon, and Denise Ingram, Denise Caballero, Tom Redman, Ilya Slain, Pat Sollee, John Truetken, и других представителей MCI WorldCom, 3Com, Cisco, Lucent и Nortel.
Все перечисленные авторы активно участвовали в написании большого объема текста данного документа.
Alan Johnston MCI 100 South 4th Street St. Louis, MO 63102 USA
EMail: [email protected]
Steve Donovan dynamicsoft, Inc. 5100 Tennyson Parkway Suite 1200 Plano, Texas 75024 USA
EMail: [email protected]
Robert Sparks dynamicsoft, Inc. 5100 Tennyson Parkway Suite 1200 Plano, Texas 75024 USA
EMail: [email protected]
Chris Cunningham dynamicsoft, Inc. 5100 Tennyson Parkway Suite 1200 Plano, Texas 75024 USA
EMail: [email protected]
Kevin Summers Sonus 1701 North Collins Blvd, Suite 3000 Richardson, TX 75080 USA
EMail: [email protected]
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assignees.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Финансирование функции редактора RFC в настоящее время осуществляется Интернет-сообществом.