Как стать автором
Обновить

SIP URI и URL. Часть 2 (Схема SIP URI)

Время на прочтение3 мин
Количество просмотров41K

Предыдущие статьи по SIP:
  1. Взаимодействие клиентов SIP. Часть 1 (Простое взаимодействие)
  2. Взаимодействие клиентов SIP. Часть 2 (Взаимодействие с использованием Proxy-сервера)
  3. SIP URI и URL. Часть 1 (URI, URL и URN)

В первой части статьи мы разобрались, что такое URL, URN и URN. Пришло время поговорить о URI и URL, используемых в SIP.

Протокол SIP поддерживает несколько URI схем:
  • sip — для SIP
  • sips — для защищенного SIP
  • tel — для телефонных номеров
  • pres — для присутствия
  • im — для мгновенных сообщений
  • xmpp — для Jabber'а
  • h323 — для протокола H.323

Для начала давайте рассмотрим SIP и SIPS URI

SIP и SIPS URI


Поскольку схемы SIP и SIPS URI идентичны, дальше в тексте мы будем говорить только о SIP URI, подразумевая, что все это относится также и к SIPS URI.

Кроме того, договоримся, что написание большими буквами (SIP) будет обозначать протокол, а маленькими (sip) - название схемы.


Как вы помните из предыдущих статей, SIP URI используются в ряде мест в SIP-сообщении, в частности в заголовочных полях To, From, Contact и т.д. Кроме того sip URI, точно также, как и mailto URI могут быть использованы на сайтах в качестве гиперссылок.

В общем случае, схема sip выглядит следующим образом:


Обратите внимание, что URI не должны содержать пробелов или переводов строки.

USER и PASSWORD

Как мы помним из первой части статьи, в схеме URI совокупность user и password называется userinfo. В рамках sip, userinfo завершается знаком "@". Userinfo часть является опциональной и может отсутствовать; знак "@" при этом также должен отсутствовать.

Согласно RFC 3261, user идентифицирует определенный ресурс на хосте, При этом под хостом чаще всего подразумевается домен.

Если хост поддерживает работу с телефонными номерами, то в качестве пользователя может быть указан телефонный номер, с которым мы хотим связаться. Это актуально, например, при использовании SIP trunk.

Password позволяет передать пароль. делать это не рекомендуется, так как в данном случае пароль будет передан в открытом виде.

HOST

Хост, предоставляющий ресурс. Используется или полное доменное имя (FQDN) или IPv4/IPv6-адрес. При этом рекомендуется использовать FQDN везде, где это возможно — это позволит избежать проблем, связанных с изменением IP-адреса хоста.

PORT

Порт, на который следует отправлять запрос. Если данное поле отсутствует, то используется 5060 для SIP и 5061 для SIPS.

Параметры

Параметры воздействуют на запрос, который будет отправлен на URI.

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


Схема sip поддерживает следующие параметры:
  • transport
  • maddr
  • ttl
  • method
  • lr
  • user — не путать с user из userinfo

Поскольку схема URI расширяем, могут встречаться и другие параметры. При этом User Agent должен игнорировать все неизвестные параметры.

transport
Определят протокол, который следует использовать для отправки сообщений. Обычно используются UDP, TCP или SCTP, однако схема позволяет указывать любой поддерживаемый SIP-клиентом протокол транспортного уровня. По умолчанию для SIP используется UDP. Для SIPS должен использоваться любой надежный протокол; по усмолчанию — TCP.

maddr
Определяет адрес сервера, но который следует посылать запросы для данного пользователя. Соответственно перезаписывает значение поля host. В случае, если в URI присутствует msddr, порт и транспорт будут относиться к нему. Обычно в maddr содержится multicast-адрес.

ttl
Определяет TTL (Time-To-Live) UDP multicast-пакета. Должен быть использован только в том случае, если в качестве транспорта используется UDP и maddr содержит multicast-адрес.

user
Не путать с userinfo->user. Поскольку в качестве имени пользователя может быть использован телефонный номер, следует отличать случай, когда "+79211234567" — это номер телефона, с которым нас свяжет хост, от случая, когда та же самая строчка — это имя пользователя на хосте (да, мы вполне можем создать пользователя с именем "+79211234567"). Для этого используют параметр user. По умолчанию user=ip. Это значит, что userinfo->user содержит имя пользователя на хосте. Если же user=phone, то userinfo->user — это номер телефона, с которым нас должен связать хост.

При этом важно учитывать, что данный параметр никаким образом не говорит о возможностях и характеристиках абонента, представленного данным URI. То есть, user=phone не должно нас наталкивать на мысль, что User Agent — это телефон, который не умеет работать с видео-звонками.

method
Определяет метод, который следует использовать в запросе. По умолчанию — INVITE.

lr
Используется при маршрутизации. О нем мы поговорим в отдельной статье.

Заголовки

Заголовки, которые могут быть добавлены в запрос. Это могут быть Subject и Priority.

Ниже приведена таблица использования составных частей SIP URI схемы для различных случаев:


В следующей статье мы рассмотрим схемы tel для телефонных номеров и pres для присутствия.
Теги:
Хабы:
+5
Комментарии0

Публикации

Изменить настройки темы

Истории

Ближайшие события

PG Bootcamp 2024
Дата16 апреля
Время09:30 – 21:00
Место
МинскОнлайн
EvaConf 2024
Дата16 апреля
Время11:00 – 16:00
Место
МоскваОнлайн
Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн