sip uac что это
SIP и Call Manager. Часть 1 Теория
Хотя цикл статей SIP и Call Manager заостряет внимание по работе SIP и CUCM (CUCME), данный материал применим и к другим системам, использующим SIP.
SIP был разработан как альтернатива для H.323, в отличие от которого SIP стал намного проще. SIP базируется на интуитивно понятной логике World Wide Web, его очень просто внедрять. SIP гораздо проще дебагить, поскольку все его внутренние команды производятся прямым текстом.
SIP работает на базе так называемых session invitations которые базируются на модели session invitation/responce. Т.е. одна сторона производит запрос на использование определенной функции или метода, а другая сторона подтверждает либо отклоняет.
Компоненты архитектуры SIP
Как было отмечено ранее, клиенты или участники сессии называются User Agents (UA).
UA может выступать в виде двух ролей:
— User Agent Client (UAC): Клиентское приложение инициирующее запрос SIP.
— User Agent Server (UAS): Серверное приложение которое получает SIP invitation и возвращает отправителю response от имени пользователя.
Один и тот же UA может работать и как UAC, и как UAS, это зависит от того кто инициировал request.
UAC инициирует запрос, а UAS принимает этот запрос.
С точки зрения архитектуры компоненты сети SIP можно разделить на две категории:
SIP Servers
Существует несколько видов SIP серверов:
Примеры SIP Architecture
На следующем рисунке изображены примеры подключений в архитектуре SIP.\
SIP Call Flows: UAC-to-UAS
На рисунке схематично изображен звонок SIP непосредственно от клиента UAC на сервер UAS.
Это самый простой случай, когда SIP клиент и SIP сервер общаются без посредников. Такое возможно если архитектура сети это может позволить. В сложных сетях для связи клиента с сервером необходимо участие SIP сервера-посредника.
SIP Call Flows с использованием Proxy Server
Наличие в сети Proxy Server прозрачно для клиента. Благодаря Proxy Server становится возможным централизованный контроль и управление процессом Call Setup. UAC теперь не должен как-то узнавать координаты UAS. Еще раз обратим внимание: Proxy Server участвует лишь в сигнализациии для Call Setup. Сессия RTP устанавливается между UAC и UAS.
SIP Call Flows с использованием Redirect Server
Redirect Server знает путь до UAS, но вместо того чтобы пересылать INVITE по назначению, Redirect Server возвращает UAC координаты следующего UA к которому нужно обратиться. Redirect Server во многом похож на Proxy server. Redirect Server тесно связан с Location Server, от которого собственно он узнает пути.
Адресация SIP
Для определения IP адреса UAS, UAC выполняет процедуру address resolution.
Address Registration
Для того чтобы принимать звонки endpoint должен зарегистрироваться на Registrar Server. После регистрации информация об UAC помещается в Location Database, которой может воспользоваться Proxy Server, если понадобится связаться с данным UAC.
Address Resolution
Если endpoint производит попытку подключения, она должна в конечном счете получить IP адрес destination endpoint, т.е. из адреса SIP получить IP адрес.
Чаще всего Address Resolution выполняет Proxy Server.
Proxy Server может использовать локальную таблицу хостов, DNS lookup, или обратиться к Location Server.
SIP и кодеки
Перед инициализации потока RTP обоим сторонам необходимо «договориться» о таких параметрах как
— Transport protocol (RTP, порты UDP)
— Type of media (аудио или видео)
— Format of media ( кодеки аудио и видео)
Существуют два метода обмена сообщениями SDP Offer/Answer: Early Offer и Delayed Offer.
При Early Offer session initiator (тот кто звонит) отсылает свой Offer во время первого же Invite.
Cisco gateways поддерживают оба метода, но по умолчанию стоит Early Offer.
При Delayed Offersession initiator шлет только Invite, но Offer отсылает called device (тот кто принимает звонок).
Delayed Offer рекомендуется для SIP trunks. В CUCM есть возможность выбрать тот или иной метод.
Мы рассмотрели основные вопросы теории SIP. В следующих частях мы обсудим прикладные вопросы, а именно настройку SIP на оборудовании Cisco: CUCM, CUCME а также IOS Gateway.
Взаимодействие клиентов SIP. Часть 1
Месяц назад я начал свое знакомство с IP-телефонией, а именно с Lync и Asterisk. И заметил следующую картину: в сети очень много интересных статей по практической стороне вопроса (как и что делать) и очень мало внимания уделено теории (в конце статьи приведены ссылки). Если Вы хотите разобраться с SIP, то извольте либо читать RFC 3261, либо одну из «этих толстых книг». Это, естественно, полезно, но многим хочется в начале изучить некую выжимку, а уж потом бросаться в омут с головой. Эта статья как раз для таких людей.
Чтобы не перегружать читателя, я решил разбить статью на две части. В первой части мы рассмотрим работы протокола SIP при взаимодействии двух клиентов.
Простое взаимодействие клиентов
Взаимодействие клиентов в рамках SIP чаще всего осуществляется в виде диалога.
Диалог – это равноправное взаимодействие двух User Agent (UA) в виде последовательности SIP-сообщений между ними. При этом, существуют запросы, не образующие диалогов. Однако обо всем по-порядку.
Ниже приведен пример простого взаимодействия между двумя устройствами с поддержкой SIP:
Петр хочет начать обмен сообщениями с Иваном, для этого он посылает INVITE-сообщение с данными о типе сессии (простая, мультимедиа и т.д.). Сообщения имеют следующий формат: стартовая строка, одно или несколько полей заголовка, пустая строка, обозначающая конец полей заголовка и необязательное тело сообщения.
Стартовая строка содержит метод, Request-URI и версию SIP (актуальная – 2.0). Request-URI – это SIP-адрес ресурса, которому посылается запрос.
Поля заголовков имеют следующий формат: :
Первая строка начинается с заголовка Via. Каждое SIP-устройство, создающее или пересылающее сообщение, добавляет свой адрес в поле Via (как это происходит, я планирую показать в следующей части статьи). Обычно адрес представляет собой имя хоста, которое может быть разрешено с помощью DNS-запроса. Поле Via содержит версию SIP, знак “/”, пробел, транспортный протокол (UDP, TCP, TLS, SCTP), двоеточие, номер порта и branch – идентификатор транзакции. Ответы на этот запрос будут содержать такой же номер транзакции.
Чаще всего, значение branch начинается с “z9hG4bK”. Это значит, что запрос был сгенерирован клиентом, поддерживающим RFC 3261 и параметр уникален для каждой транзакции этого клиента.
Следующее поле, Max-Forwards, содержит относительно большое целое число. Каждый сервер SIP, который пересылает сообщение, уменьшает это число на единицу. Данное поле обеспечивает простой механизм обнаружение петель (loop).
Следом идут поля From и To, которые описывают отправителя и получателя запроса. Важно, что SIP-запросы маршрутизируются исходя из Request-URI, указанного в стартовой строке (см. выше). Это объясняется тем, что поля From и To могут быть изменены при пересылке. Если используется отображаемое имя (например, Ivan Ivanov), то SIP URI помещается внутрь пары угловых скобок. Параметр tag в поле From генерирует отправляющая сторона. В свою очередь принимающая сторона поместит свой tag в поле To.
Поле Call-ID – идентификатор вызова. Совокупность tag’ов из полей From и To и Call-ID однозначно идентифицируют данный диалог. Это необходимо, так как между клиентами может идти сразу несколько диалогов.
Следующее поле, Cseq, содержит порядковый номер запроса и название метода. В данном случае – INVTITE. Номер увеличивается с каждым новым запросом.
Поля Via, Max-Forwards, To, From, Call-ID и CSeq составляют минимальный необходимый набор полей заголовков SIP-сообщения.
Для сообщения INVITE также необходимо поле заголовка Contact, в котором содержится SIP URI, относящийся к коммуникационному устройству отправляющей стороны. Это поле используется, чтобы из всех устройств, которыми одновременно может пользоваться Петр, ответ был отправлен именно на данное устройство. Обратите внимание на значения полей From и Contact. Первый раз я не заметил разницу:
В сообщении присутствует опциональное поле Subject, то есть тема сообщения. Некоторые SIP-клиенты могут выводить значение этого поля на экран. Для маршрутизации и идентификации диалога поле не используется и может быть произвольным.
Поля Content-Type и Content-Length отвечают за описание тела сообщения. В данном случае будет использоваться Session Description Protocol (SDP). Размер сообщения вычисляется с учетом символов перевода строки:
Детальное описание работы протокола SDP заслуживает отдельной статьи, поэтому ниже приведена только краткая расшифровка:
В ответ на INVITE SIP-клиент Ивана отправляет два сообщения: 180 Ringing и 200 OK. Первое сообщает, что на стороне Ивана SIP-клиент подает звуковой сигнал звонка, второе – подтверждает установку диалога. Разберемся с каждым из них.
Так будет выглядеть сообщение 180 Ringing:
Бледным выделен текст, который не изменился по сравнению с сообщением INVITE.
Обратите внимание на поля заголовков To и From. Несмотря на то, что данное сообщение идет со стороны Ивана, значения полей остаются такими же, как были в первоначальном запросе (от Петра к Ивану). Это объясняется тем, что данные поля определяют направление запроса, а не сообщения.
Строка Via также перекочевала из исходного запроса, в конце строки добавлен параметр received этот параметр содержит IP-адрес, с которого пришел запрос. Обычно это адрес, который может быть получен путем разрешения URI, содержащегося в Via.
Как я и обещал, в поле To добавился tag, идентифицирующий диалог. Все последующие сообщения в рамках диалога будут содержать неизменные значения tag.
Наконец, в поле Contact содержится актуальный адрес Ивана.
Так выглядит сообщение 200 ОК, которое отправил SIP-клиент Ивана:
Думаю, смысл всех полей, относящихся к протоколу SIP теперь ясен.
В ответ на 200 ОК клиент Петра отправляет подтверждение:
Данное сообщение подтверждает, что клиента Петра успешно получил ответ от клиента Ивана. Оба клиента договорились о параметрах меди-сессии, которая будет осуществляться по протоколу RTP.
Обратите внимание, что номер последовательности CSeq все еще равен единице, но в качестве метода уже стоит ACK. Параметр Branch в поле Via содержит новый идентификатор транзакции, так как ACK, отправляемый в ответ на 200 OK считает новой транзакцией.
Теперь давайте рассмотрим, как происходит завершение медиа-сессии. Клиент Петра посылает BYE-запрос для завершение сессии:
Получив запрос на завершение сессии, клиент Ивана посылает подтверждение:
Мы рассмотрели простой вариант работы протокола SIP. Обратите внимание, что в разные моменты времени клиенты Ивана и Петра выступали то в роли сервера, то в роли клиента, поэтому во всех SIP-клиентах должна функционировать как серверная (User Agent Server или UAS), так и клиентская часть (User Agent Client или UAC).
В следующей статье я планирую рассмотреть взаимодействие клиентов SIP с использованием Proxy-сервера и регистрацию клиентов на Proxy-сервере.
Всё, что вы хотели знать о протоколе SIP
Архив номеров / 2007 / Выпуск №5 (54) / Всё, что вы хотели знать о протоколе SIP
SIP предоставляет четыре ключевые функции. Две из них — Name Mapping And Redirection и Capabilities Negotiation — используются во время процедуры установления сессии. Две другие функции — Participant Management и Capabilities Management — во время работы. Name mapping and redirection. SIP транслирует информацию об описательных именах участников сессии (descriptive naming information) в информацию о размещении (location information) в соответствии со службами каталога и иными службами. SIP облегчает персональную мобильность участников, поэтому пользователи могут установить SIP-сессию, перемещаясь, например, со своего рабочего места с подключенным настольным компьютером в автомобиль, и объявляя, таким образом, мобильный телефон или PDA предпочтительным средством связи. Capabilities negotiation. SIP определяет различные характеристики медиаданных всех участников сессии и оговаривает возможности медиасреды, которые будут использоваться во время сеанса связи. Например, если у двух участников сессии имеются видеовозможности, а третий располагает только аудиоаппаратурой, SIP устанавливает, что видеоданные могут использоваться в сессии, но для третьего участника будут передаваться только аудиоданные. Participant management. Во время сеанса связи SIP позволяет участникам конференции приглашать новых участников, отключать или приостанавливать их работу. Capabilities management. Во время сеанса связи SIP осуществляет мониторинг характеристик медиасреды и в случае необходимости выполняет корректировку настроек. Рассмотрим, например, сеанс связи с двумя участниками. У обоих имеются только аудиоустройства. Если новый участник подключается к конференции и у него имеется видеоаппаратура, SIP добавляет передачу видеоданных для нового участника конференции. Компоненты SIPSIP состоит из пяти компонентов: User Agent Client (UAC), User Agent Server (UAS), Proxy Server, Redirect Server и Registrar Server. UAC и UAS — компоненты, устанавливаемые на стороне клиента, тогда как службы proxy, редиректора и регистратора запускаются на сервере. UAC представляет собой приложение, которое инициирует SIP-запрос для UAS. Сообщение SIP — это или запрос от UAC к UAS, или ответ UAS компоненту UAC. В оригинальной спецификации SIP описано шесть возможных типов запросов (или методов), которые может выдать UAC: INVITE, ACK, OPTIONS, BYE, CANCEL и REGISTER. Расширения SIP, описанные в RFC, определяют дополнительные методы — такие, как MESSAGE, INFO и NOTIFY. Например, метод SIP, показанный на Экране 1, демонстрирует использование метода INVITE и универсальный идентификатор ресурса — Request Uniform Resource Identifier (URI) sip:jerry@acme.com. Метод заканчивается указанием номера версии SIP. Когда UAC инициирует SIP-сессию, он определяет протокол, порт и IP-адрес UAS, которому посылается запрос. При отсутствии любой информации о локально настроенном proxy-сервере (об этом подробнее чуть позже), UAC использует данные в URI запроса для определения маршрута SIP-запроса. Данный URI запроса всегда определяет хост, но не всегда — порт и протокол. Если хост через адрес IP указан явным образом, UAC пытается связаться с UAS по этому адресу. Если URI запроса специфицирует полностью определенное доменное имя Fully Qualified Domain Name (FQDN), UAC опрашивает службы DNS для разрешения имен, используя для этого ADDRESS, CNAME или другие данные в ресурсной записи. Реализация операционной системы, в которой размещен UAC, может поддерживать альтернативный механизм для определения имени хоста, например через локальные HOSTS-файлы, WINS, широковещательные пакеты; однако в RFC 2543 об их применении не упоминается. Так или иначе, если локальная операционная система определяет и возвращает имя хоста, UAC в дальнейшем использует это имя в сеансе SIP. Если URI запроса указывает порт, UAC пытается установить соединение с UAS по этому порту. Если URI запроса не указывает порт, UAC соединяется с UDP-портом 5060 по умолчанию. Если URI запроса указывает транспортный протокол (TCP или UDP), UAC использует его. Если URI запроса не указывает транспортный протокол, UAC пытается применить UDP; в случае ошибки UAC пытается задействовать TCP. Если в запросе INVITE указан порт и протокол, то запрос может выглядеть следующим образом: Однако чаще всего приложения используют укороченный формат (указывается только имя хоста), пример приведен на Рисунке 1. UAS представляет собой приложение, которое получает SIP-запросы от UAC и отвечает на эти запросы. UAS может взаимодействовать с пользователем, поэтому вместе с запросом SIP пользователь иногда в той или иной форме получает уведомление от UAS. Так же, как и статус-код HTTP, ответ SIP состоит из трехзначного целого кода возврата и текста. Результирующие SIP-коды распадаются на шесть категорий: 1xx (информационное сообщение), 2xx (успех), 3xx (перенаправление), 4xx (ошибка клиента), 5xx (ошибка сервера) и 6xx (глобальный сбой). В Section 7 в RFC 2543 результирующие коды расписаны полностью. Какова бы ни была природа запроса UAC и итоговое действие UAS, последний посылает UAC ответ. UAS выдает более одного ответа на запрос. Например, когда UAC выдает запрос INVITE участникам конференции, UAS в ответ может послать UAC-инициатору запроса три ответа. Транзакция SIP считается полностью завершенной только тогда, когда UAS исчерпывающе ответил на инициирующий запрос. UAC выдает финальный запрос, в котором используется метод ACK, для получения подтверждения, что на запрос INVITE был дан финальный ответ. Запрос ACK UAC использует только в связке с запросом INVITE — это единственный случай применения ACK. Поскольку SIP — это одновременно и протокол точка-точка, и клиент-серверный протокол, оконечная точка SIP должна быть способна отвечать на запросы сессии SIP и инициировать их. Следовательно, оконечная точка должна обладать функциональностью и UAS, и UAC. Пользовательский агент UA именно таков — в нем присутствует функциональность UAC и UAS. Для UA существует также другое название — SIP-клиент. Proxy-серверДо сих пор мы рассматривали ситуацию, когда соединение UAC и UAS устанавливалось как точка-точка, хотя, строго говоря, данный механизм — клиент-серверный. Однако наличие proxy-серверов в SIP-реализациях — общее правило. Proxy-сервер действует как посредник, который обслуживает запросы и пересылает их дальше — к другим UAC или UAS. По такой методике пользовательский UA маршрутизирует все свои SIP-транзакции через явным образом указанный proxy-сервер. На Экране 2 показан типичный пример внутриорганизационной конфигурации, когда пользователь, инициируя SIP-сессию с другим пользователем внутри той же организации, посылает сообщения по определенному маршруту через proxy-сервер до того, как эти сообщения достигнут целевого SIP-клиента.
Такая внутриорганизационная архитектура может быть расширена до межорганизационной. На Экране 3 показана межорганизационная, или федеративная, архитектура. Пользователи в каждой организации имеют собственные UA, настроенные на соответствующий proxy-сервер, а proxy в свою очередь взаимодействуют друг с другом для рассылки сообщений. Еще один аргумент в пользу применения proxy — это преобразование имен. В случае использования почтовых служб пользователи нередко имеют адрес, который известен внешним клиентам, и внутренний адрес — для корпоративной переписки. Похожая концепция имеет место и для SIP. Proxy-сервер посылает запрос на локализацию службы, скажем Lightweight Directory Access Protocol (LDAP) Directory Service, и преобразует внешний SIP-адрес во внутренний. В дополнение к показанной федеративной архитектуре, на Экране 3 изображено взаимодействие между компонентами SIP, когда задействованы службы преобразования имен. Когда proxy-сервер Acme получает запрос INVITE, сервер «консультируется» с соответствующей службой для выполнения в случае необходимости преобразования имени. В приведенном примере Proxy Acme предлагает адрес jerry@acme.com, а служба размещения (location service) возвращает внутренний SIP-адрес в виде js@nyc.acme.com. Реализация службы размещения никоим образом не завязана на спецификацию SIP. Аналогично и SIP не диктует правила взаимодействия между proxy-сервером и службой размещения. Можно использовать службу размещения, а можно и не использовать. Если решено это делать, то предстоит выбрать тип службы. RTC Server задействует собственную службу размещения (не Active Directory). В случае необходимости служба размещения может использовать множество SIP-адресов пользователей. Например, несколько SIP-адресов может понадобиться в том случае, когда получатель регистрируется в нескольких местах (с разных телефонов и компьютерных терминалов). Когда служба размещения возвращает несколько SIP-адресов, proxy предоставляет запрос INVITE каждому идентифицированному UAS. Серверы proxy пытаются опросить SIP-адрес в последовательном или параллельном режиме до тех пор, пока соединение не будет установлено, отклонено или пользователь не окажется вне зоны обслуживания. Когда proxy-сервер пересылает SIP-запрос, он добавляет свое имя (имя сервера) в начало списка Forwarders в поле Via в заголовке SIP-сообщения. Это поле позволяет возвращать ответы по тому же маршруту, по которому проходил запрос. На «обратном» пути каждый proxy-сервер удаляет свое имя из поля Via после обработки SIP-ответа. Redirect ServerОдна из основных задач SIP — перенаправление запросов. Перенаправление дает пользователям возможность перемещаться, но по-прежнему быть на связи, имея тот же самый SIP-идентификатор. Например, если пользователь jerry@acme.com покинул офис и зарегистрировался с данным SIP-идентификатором в отеле, в котором остановился, SIP-сообщения, пришедшие на адрес jerry@acme.com, будут, в конце концов, маршрутизированы на адрес: room1206@la.hyatt.com. В подобных ситуациях, учитывая тот факт, что на proxy-сервере имеется «привязка» оригинального сообщения SIP к новому адресу SIP, имеет место не совсем оптимальное отслеживание сетевого маршрута. Вместо этого, хорошо было бы иметь сервер-редиректор Acme, который сообщит вызывающей программе, что для установления контакта с получателем нужно использовать другой SIP-адрес. В этом случае серверу-редиректору необходимо предоставить доступ к службе размещения для пользователей Acme, как показано на Экране 4. После того как proxy-сервер получает инициирующий запрос INVITE, сервер посылает запрос серверу-редиректору. Сервер-редиректор взаимодействует со службой размещения, получает новые данные о временных адресах и возвращает ответ SIP/2.0 300 Moved Temporarily. Поле Contact содержит временный адрес. Оригинальная вызывающая программа повторно выдает INVITE, но на этот раз с указанием временного адреса. Чтобы транзакция была выполнена полностью, вызывающая программа выдает запрос ACK серверу-редиректору. (На Экране 4 этот последний шаг не показан.) Хотя proxy и редиректор — это разные компоненты, RTC Server реализует их в составе единого сервера. Сервер, который сочетает в себе функции того и другого, носит название SIP-сервер. Настройки SIP-сервера устанавливают, как будут обрабатываться сообщения SIP для различных получателей (т. е. определяют, будет сообщение направлено proxy-серверу или серверу-редиректору). Registrar ServerПользователи могут информировать proxy-сервер или сервер-редиректор, по какому адресу следует обращаться для установления сеанса связи. Когда пользователю понадобится изменить адрес, SIP-клиент выдает запрос REGISTER. Сервер-распорядитель (Registrar Server) принимает REGISTER и записывает содержащуюся в запросе обновленную информацию. Обычно SIP-сервер использует эти данные для передачи службе локализации, которая направляет запрос на правильный адрес. Клиенты SIP могут контактировать с Registrar Server двумя способами. Они могут напрямую обращаться к серверу, используя данные об адресах в настройках клиента. Или обращение может быть опосредованным — с помощью широковещательного адреса sip.mcast.net (224.0.1.75). При этом запрос регистрации направляется на группу All SIP Servers. SIP-серверы «слушают» обращения по указанному адресу и соответствующим образом обрабатывают поступившие запросы SIP REGISTER.
На Экране 5 показан пример запроса REGISTER. URI запроса специфицирует назначение запроса REGISTER (читайте — Registrar Server) и должен включать только данные об имени хоста и домена — в нем не может содержаться имя пользователя. Поле To идентифицирует адрес SIP пользователя, который будет регистрироваться. Когда пользователь выполняет собственно регистрацию, данные об адресах в поле To и From обычно соответствуют друг другу. Если имеет место регистрация у независимого разработчика (а в этом случае процедура может выполняться с учетом каких-либо иных характеристик пользователя), поле From содержит SIP-адрес данного разработчика. Хотя это и не всегда требуется, запрос REGISTER может включать поле Contact. На примере Экрана 5 видно, что адрес в поле Contact отличается от адреса в поле To. Тогда proxy-сервер или редиректор в дальнейшем станут направлять запросы пользователя, указанного в поле To, по адресу, заданному в поле Contact. Поле Expires указывает время жизни запроса регистрации в секундах. В приведенном примере запрос REGISTER перестает быть актуальным через 12 ч. Однако если клиент не указал значение этого параметра, серверы SIP, как правило, регистрируют пользователя на 1 ч. Пользователь имеет право отменить регистрацию, повторно выдав запрос REGISTER с указанием времени жизни 0 с. Точно так же, как на одном SIP-сервере можно объединить функции proxy-сервера и редиректора, можно добавить на тот же самый сервер функцию регистратора. Сервер RTC воплощает функции proxy, редиректора и регистратора на одном сервере SIP. Итак, я изложил концепцию SIP, как она представлена в RFC 2543. Перед тем как рассматривать конкретные способы реализации SIP, необходимо ясно себе представлять принципы работы SIP. В одной из следующих статей будет рассказано о том, как работают и взаимодействуют продукты SIP Client (Windows Messenger) и SIP Server (RTC Server) производства компании Microsoft. Компоновка сервера RTCОднако разработчики Microsoft пересмотрели свои планы относительно распространения RTC Server и решили компоновать его независимо. На мой взгляд, такое изменение планов не связано со стремлением увеличить доходы корпорации. Ко времени написания статьи лицензионная политика еще не была установлена. Очевидно, однако, что теперь нет никакой возможности воспользоваться лицензией Client Access License (CAL) в качестве платы за доступ к RTC Server. Изменение компоновки теоретически означает большую гибкость при формировании RTC-среды. Краткая история SIPSession Initiation Protocol (SIP) не без оснований следует отнести скорее к телефонной индустрии, нежели к компьютерной. Телефонная индустрия дала начало SIP с целью улучшить обслуживание абонентов, но очень быстро специалисты-компьютерщики адаптировали SIP в качестве протокола, с помощью которого можно было упростить все виды связи в масштабе реального времени. То, что раньше было в сфере влияния обычной телефонии, с появлением Internet-коммуникаций перестало быть таковым. Проект, который со временем стал стандартом SIP, был начат в феврале 1996 г. Самый первый проект IETF, озаглавленный Draft-Ietf-Mmusic-Sip-00, состоял только из одного типа запросов — запроса на установление соединения, Call Setup Request. Между прочим, mmusic — это не название новой поп-группы, это акроним Multiparty Multimedia Session Control. Исправления оригинального проекта привели к опубликованию в декабре 1996 г. Draft-Ietf-Mmusic-Sip-01. По-прежнему для большинства пользователей эта версия проекта оставалась неизвестной, как и ее предшественница. Спустя восемь исправлений и три года работы проект был оформлен как протокол SIP, и теперь пользователи с ним хорошо знакомы. IETF опубликовал проект под названием Draft-Ietf-Mmusic-Sip-12 в январе 1999 г. На этот раз он содержал уже шесть типов запросов, число которых не изменилось и по сей день. С момента публикации Draft-Ietf-Mmusic-Sip-12 до RFC 2543, посвященного SIP и появившегося в марте 1999 г., произошло очень немного изменений. На протяжении последних лет SIP продолжал изменяться. Еще важнее то обстоятельство, что появились новые рабочие группы, которые надеются получить от использования SIP определенные преимущества. Наиболее известная группа — SIP for Instant Messaging and Presence Leveraging Extensions (SIMPLE) Working Group. Эта группа расширила оригинальную спецификацию SIP, и теперь в проект введено описание доставки данных Instant Messaging (IM) через запрос MESSAGE Request. Первоначально этот запрос представлял собой механизм, с помощью которого в сервере Microsoft Real Time Communications (RTC) были реализованы функции IM. Поделитесь материалом с коллегами и друзьями
|