Sip ack что это
SIP — Обмен сообщениями
Открывающая строка запроса содержит метод, который определяет запрос, и Request-URI, который определяет, куда должен быть отправлен запрос.
Аналогично, открывающая строка ответа содержит код ответа.
Открывающая строка запроса содержит метод, который определяет запрос, и Request-URI, который определяет, куда должен быть отправлен запрос.
Аналогично, открывающая строка ответа содержит код ответа.
Методы запроса
SIP-запросы — это коды, используемые для установления связи. Чтобы дополнить их, существуют ответы SIP, которые обычно указывают, был ли запрос успешным или неудачным.
Эти запросы SIP, известные как МЕТОДЫ, делают сообщение SIP работоспособным.
МЕТОДЫ можно рассматривать как запросы SIP, поскольку они запрашивают конкретное действие, которое должен выполнить другой пользовательский агент или сервер.
МЕТОДЫ различают на два типа —
МЕТОДЫ можно рассматривать как запросы SIP, поскольку они запрашивают конкретное действие, которое должен выполнить другой пользовательский агент или сервер.
МЕТОДЫ различают на два типа —
Основные методы
Существует шесть основных методов, которые обсуждаются ниже.
ПРИГЛАШЕНИЕ
INVITE используется для запуска сеанса с пользовательским агентом. Другими словами, метод INVITE используется для установления мультимедийного сеанса между пользовательскими агентами.
INVITE может содержать медиа-информацию о вызывающем абоненте в теле сообщения.
Сеанс считается установленным, если сообщение INVITE получило ответ об успешном выполнении (2xx) или был отправлен ACK.
Успешный запрос INVITE устанавливает диалог между двумя пользовательскими агентами, который продолжается до тех пор, пока не будет отправлен BYE для завершения сеанса.
Re-INVITE используется для изменения характеристик сеанса или обновления состояния диалога.
INVITE может содержать медиа-информацию о вызывающем абоненте в теле сообщения.
Сеанс считается установленным, если сообщение INVITE получило ответ об успешном выполнении (2xx) или был отправлен ACK.
Успешный запрос INVITE устанавливает диалог между двумя пользовательскими агентами, который продолжается до тех пор, пока не будет отправлен BYE для завершения сеанса.
Re-INVITE используется для изменения характеристик сеанса или обновления состояния диалога.
ПРИМЕР ПРИМЕР
Следующий код показывает, как используется INVITE.
ДО СВИДАНИЯ
BYE — метод, используемый для завершения установленного сеанса. Это SIP-запрос, который может быть отправлен вызывающим или вызывающим абонентом для завершения сеанса.
Он не может быть отправлен прокси-сервером.
BYE-запрос обычно проходит сквозной маршрут, минуя прокси-сервер.
BYE не может быть отправлено в ожидании INVITE или неустановленного сеанса.
Он не может быть отправлен прокси-сервером.
BYE-запрос обычно проходит сквозной маршрут, минуя прокси-сервер.
BYE не может быть отправлено в ожидании INVITE или неустановленного сеанса.
РЕГИСТР
Запрос REGISTER выполняет регистрацию агента пользователя. Этот запрос отправляется пользовательским агентом на сервер регистратора.
Запрос REGISTER может быть переадресован или проксирован до тех пор, пока не достигнет авторитетного регистратора указанного домена.
Он содержит AOR (адрес записи) в заголовке « Кому» регистрируемого пользователя.
Запрос REGISTER содержит период времени (3600сек).
Запрос REGISTER может быть переадресован или проксирован до тех пор, пока не достигнет авторитетного регистратора указанного домена.
Он содержит AOR (адрес записи) в заголовке « Кому» регистрируемого пользователя.
Запрос REGISTER содержит период времени (3600сек).
ОТМЕНИТЬ
CANCEL используется для завершения сеанса, который не установлен. Пользовательские агенты используют этот запрос для отмены ожидающей попытки вызова, инициированной ранее.
Он может быть отправлен либо пользовательским агентом, либо прокси-сервером.
Он может быть отправлен либо пользовательским агентом, либо прокси-сервером.
База знаний
Протокол SIP
Этот документ описывает Session Initiation Protocol (SIP), протокол контроля и сигнализации уровня приложения для создания, модификации, и завершения сеансов с одним или несколькими участниками. Эти сеансы включают в себя: телефонные вызовы через Интернет, презентация мультимедийных данных, и мультимедийные конференции.
При создании сеансов, используется SIP приглашение с описанием сессии, что позволяет участникам подтвердить совместимость используемых настроек для передачи медиаданных. SIP дает возможность использования таких элементов, как прокси сервер, в функции которого входит помощь в доставке запросов к конечному пользователю, установка подлинности и разграничение доступа пользователей к различным сервисам, поддерживает правила маршрутизацию вызовов, задаваемых провайдерами, а также поддерживает различные возможности, ориентированные на конечных пользователей. Так же в протоколе SIP имеется механизм регистрации, который дает возможность пользователям подключаться из своего текущего местоположения к сервисам, через прокси сервер. Протокол SIP может использовать несколько основных протоколов различного транспортного уровня.
Также, протокол SIP может преодолевать ограничение, связанные с использованием NAT или файрволов. (Обратите внимание на раздел: NAT and VOIP)
Протокол SIP
Принципы протокола SIP
Протокол инициирования сеансов – Session Initiation Protocol (SIP) является протоколом прикладного уровня и предназначается для организации, модификации и завершения сеансов связи: мультимедийных конференций, телефонных соединений и распределения мультимедийной информации. Пользователи могут принимать участие в существующих сеансах связи, приглашать других пользователей и быть приглашенными ими к новому сеансу связи. Приглашения могут быть адресованы определенному пользователю, группе пользователей или всем пользователям.
Протокол SIP разработан группой MMUSIC (Multiparty Multimedia Session Control) комитета IETF (Internet Engineering Task Force), а спецификации протокола представлены в документе RFC 2543]. В основу протокола рабочая группа MMUSIC заложила следующие принципы:
Расширение функций протокола SIP может быть произведено за счет введения новых заголовков сообщений, которые должны быть зарегистрированы в уже упоминавшейся ранее организации IANA. При этом, если SIP,сервер принимает сообщение с неизвестными ему полями, то он просто игнорирует их и обрабатывает лишь те поля, которые он знает.
Для расширения возможностей протокола SIP могут быть также добавлены и новые типы сообщений.
Интеграция в стек существующих протоколов Интернет, разработанных IETF. Протокол SIP является частью глобальной архитектуры мультимедиа, разработанной комитетом Internet Engineering Task Force IETF. Эта архитектура включает в себя также протокол резервирования ресурсов (Resource Reservation Protocol – RSVP, RFC 2205), транспортный протокол реального времени (Real,Time Transport Pro,tocol – RTP, RFC 1889), протокол передачи потоковой информации в реальном времени (Real,Time Streaming Protocol – RTSP, RFC 2326),
протокол описания параметров связи (Session Description Protocol – SDP, RFC 2327). Однако функции протокола SIP не зависят ни от одного из этих протоколов.
Взаимодействие с другими протоколами сигнализации. Протокол SIP может быть использован совместно с протоколом Н.323. Возможно также взаимодействие протокола SIP с системами сигнализации ТфОП – DSS1 и ОКС7. Для упрощения такого взаимодействия сигнальные сообщения протокола SIP могут переносить не только специфический SIP адрес, но и телефонный номер формата Е.164 или любого другого формата. Кроме того, протокол SIP, наравне с протоколами H.323 и ISUP/IP, может применяться для синхронизации работы устройств управления шлюзами; в этом случае он должен взаимодействовать с протоколом MGCP. Другой важной особенностью протокола SIP является то, что он приспособлен к организации доступа пользователей сетей IP телефонии к услугам интеллектуальных сетей, и существует мнение, что именно этот протокол станет основным при организации связи между указанными сетями.
Методы SIP протокола, определенные в SIP RFC.
В протоколе SIP определено несколько методов, используемых при коммуникации.
Расширенные методы SIP протокола из других RFC:
Ответы на SIP сообщения
После приема и интерпретации запроса, адресат (прокси сервер) передает ответ на этот запрос. Содержание ответов бывает разным:
подтверждение установления соединения, передача запрошенной информации, сведения о неисправностях и т.д.
Структуру ответов и их виды протокол SIP унаследовал от протокола НТТР.
Определено шесть типов ответов, несущих разную функциональную нагрузку. Тип ответа кодируется трехзначным числом. Самой важной является первая цифра, которая определяет класс ответа, остальные две цифры лишь дополняют первую. В некоторых случаях оборудование даже может не знать все коды ответов, но оно обязательно должно интерпретировать первую цифру ответа.
SIP-телефония
Вместо вступления…
В последнее время наблюдается повышенный интерес к технологиям IP-телефонии, использование которой позволяет в значительной мере снизить стоимость телефонной связи. При этом становится возможным использование сети Интернет, что позволяет сразу достичь «глобальных масштабов», а необходимость прокладки магистральных коммуникаций попросту отпадает.
Целью данной статьи является поверхностное рассмотрение возможностей IP-телефонии, использующей протокол SIP, для ознакомления с общими принципами ее работы.
Протокол SIP (Session Initiat Protocol, протокол установки соединения) не является первопроходцем в области IP-телефонии. Протокол H.323 уже давно используется для целей IP-телефонии, однако изначально он не разрабатывался для IP-сетей, что снижает «оптимальность» их совместной работы. За годы работы с протоколом H.323 накоплен большой опыт использования, который позволил выявить как его положительные черты, так и недостатки, которые были учтены при разработке протокола SIP.
Протокол H.323 использует двоичный формат. Одним из следствий этого является необходимость стандартизации всех возможностей данного протокола, так как в случае если определенная возможность не поддерживается устройством, то такие устройства из-за двоичного формата не смогут работать друг с другом. SIP-протокол использует текстовый формат сообщений, если одному из устройств не знаком определенный тип сообщения или заголовка, то оно просто игнорируется (как и в HTTP, который по своему формату очень похож формат протокола SIP). К тому же сам протокол SIP значительно проще H.323.
Возможности протокола SIP
Основные преимущества протокола SIP:
1. Масштабируемость — возможность увеличения количества клиентов при расширении сети.
2. Мобильность — возможность получения сервиса вне зависимости от местоположения (как например электронная почта), а каждому пользователю выдается персональный идентификатор, по которому он может быть найден.
3. Расширяемость — возможность дополнения протокола новыми функциями (за счет введения новых заголовков и сообщений). Как уже говорилось выше, если устройству встречается неизвестное ему расширение протокола, оно попросту игнорируется. Так как протокол H.323 использует сообщения двоичного формата, то неизвестные функции могут привести к невозможности предоставления сервиса.
Протокол SIP разрабатывался с расчетом на возможность использования любых транспортов, но, тем не менее, наиболее предпочтительным является использование UDP-пакетов (это позволяет повысить производительность по сравнению с использованием протокола TCP, но требует использования дополнительных механизмов проверки доставки сигнальных сообщений).
Так как телефония с использованием протокола SIP позволяет использовать большое количество разнообразных сервисов (помимо передачи голоса, возможна передача видео, текстовых сообщений, факсов и др.), необходим механизм обмена информацией о том, какие сервисы может использовать вызываемаявызывающая стороны. Для этой цели используется протокол SDP (Session Description Protocol) — протокол описания сессии. Данный протокол позволяет определить какие звуковые (видео и другие) кодеки и иные возможности может использовать удаленная сторона.
Собственно сама передача голоса осуществляется благодаря использованию протокола RTP (Real-time Transport Protocol, протокол транспортировки в реальном времени). Сам протокол SIP непосредственного участия в передаче голосовых, видео и других данных не принимает, он отвечает только за установление связи (по протоколам SDP, RTP и др.), поэтому под SIP-телефонией понимается не передача голоса по протоколу SIP, а передача голоса с использованием протокола SIP. Использование протокола SIP предоставляет новые возможности установления соединений (а также возможность беспроблемного расширения данных возможностей), а не непосредственной передачи голосового и других видов трафика.
Формат адресов используемых протоколом SIP напоминает формат E-Mail-адреса: имя@идентификатор_хоста. В начале адреса ствится приставка «sip:» (пример: sip:user@host.com). В качестве идентификатора хоста может служить его IP-адрес, домен или имя хоста (IP-адрес определяется с использованием DNS, так что в итоге все равно получается обращение по адресу sip: имя@IP-адрес).
Архитектура SIP-сети
Стандартными элементами в SIP-сети являются:
1. User Agent: по протоколу SIP устанавливаются соединения «клиент-сервер». Клиент устанавливает соединения, а сервер принимает вызовы, но так обычно телефонный аппарат (или программный телефон) может как устанавливать так и принимать звонки, то получается что он одновременно играет роль и клиента и сервера (хотя в реализации протокола это не является обязательным критерием) — в этом случае его называют User Agent (UA) или терминал.
2. Прокси-сервер: прокси сервер принимает запросы и производит с ним некоторые действия (например определяет местоположение клиента, производит переадресацию или перенаправление вызова и др.). Он также может устанавливать собственные соединения. Зачастую прокси-сервер совмещают с сервером определения местоположения (Register-сервер), в таком случае его называют Registrar-сервером.
3. Сервер опредления местоположения или сервер регистрации (Register): данный вид сервера служит для регистрации пользователей. Регистрация пользователя производится для определения его текущего IP-адреса, для того чтобы можно было произвести вызов user@IP-адрес. В случае если пользователь переместится в другое место и/или не имеет определенного IP-адреса, его текущий адрес можно будет определить после того, как он зарегистрируется на сервере регистрации. Таким образом клиент останется доступен по одному и тому же SIP-адресу вне зависимости от того, где на самом деле находится.
4. Сервер переадресации: обращается к серверу регистрации для определения текущего IP-адреса пользователя, но в отличие от прокси сервера только «переадресует» клиента, а не устанавливает собственные соединения.
Прокси-серверы в SIP-сети также могут вносить изменения в передаваемые сообщения — это позволяет беспрепятственно преодолевать NAT в случае если прокси-сервер стоит на NAT-маршрутизаторе (также возможна настройка прокси сервера, находящегося за NAT в случае если на последнем невозможно установить прокси сервер — для этого потребуется задать параметры переадресации так, чтобы получился прокси-сервер стал «виртуальным сервером»). Помимо этого прокси-серверы можно объединять в «цепочки», которые позволяют использовать телефонию, даже если конечная точка (UA) находится сразу за несколькими NAT-шлюзами.
Сообщения SIP
Стартовая строка различается в зависимости от того является ли сообщение запросом или ответом (в случае запроса — в ней сообщается тип запроса, адресат и номер версии протокола, а в случае ответа — номер версии протокола, статус и текстовую расшифровку статуса).
В заголовках содержатся сведения об источнике, адресате, пути следования сообщения и др. Этих заголовков может быть достаточно много и это количество может меняться на пути следования пакетов.
Информационные ответы сообщают о стадии выполнения запроса, они не являются завершением запроса. Остальные же классы ответов завершают выполнение запроса.
Пример
Рассмотрим пример процесса установления соединения с использованием SIP-протокола (пример взят из RFC 3261). Данный пример отражает работу базовых функций телефонии и соответственно не затрагивает такие возможности как видеосвязь передача текстовых сообщений и др. — общий принцип работы протокола остается неизменным.
Пользователь Alice (sip:alice@atlanta.com) вызывает пользователя Bob (sip:bob@biloxi.com).
1. Пользователь Alice посылает сообщение INVITE прокси-серверу по умолчанию (atlanta.com) Если бы пользователю Alice был известен IP-адрес пользователя Bob и он мог к нему обратиться напрямую, то запрос INVITE в этом случае мог быть послан непосредственно вызываемому пользователю.
2. Прокси-сервер посылает запрос INVITE серверу вызываемого абонента (biloxi.com).
3. Далее прокси-сервер пользователя Bob при необходимости определяет его текущий IP-адрес и посылает ему сообщение INVITE — у пользователя начинает звонить телефон, о чем сообщается в ответе 180 (Ringing).
4. Если вызываемый пользователь ответил на звонок, то на запрос INVITE высылается ответ 200 (OK).
5. Вызывающий пользователь отправляет сообщение ACK, сообщающее вызываемому о том, что он получил ответ на свой запрос INVITE, им задаются окончательные параметры соединения. На этом этапе все готово к установлению соединения по протоколу RTP (Real-time Transport Protocol).
6. Устанавливается RTP-соединение с заранее согласованными параметрами.
7. Для завершения соединения, завершающим пользователем (кладет трубку) высылается запрос BYE, на которое высылается ответ 200 (OK)
Пока сообщения установления соединения (INVITE) ходят между прокси-серверами и неизвестно доступен ли вызываемый пользователь, в ответ на INVITE посылается ответ 100 (Trying), сообщающий о попытке установления соединения.
Так как прокси-сервер может устанавливать собственные соединения, его использование позволяет вызовам без проблем преодолевать NAT. Также возможно построение нескольких прокси-серверов в одну цепочку, что позволяет преодолевать сразу несколько NAT.
Кодеки
Для передачи звука и видео используются различные алгоритмы сжатия и кодирования данных. Эти алгоритмы называются кодеками. Различные кодеки используют различную ширину полосы пропускания, а также вносят различные задержки и обеспечивают различное качество сервиса. Для звуковых кодеков обычно ширина полосы пропускания составляет от 4-х до 64 кбит/с.
Методика тестирования
Основное направления тестирования SIP-телефонии заключается в рассмотрении качества передачи голоса при ограничении ширины полосы пропускания. Также будет рассматриваться качество передачи голоса при динамическом изменении числа сеансов IP-телефонии и изменении загруженности канала связи. При тестировании IP-маршрутизаторов будет также рассматриваться поведение потоков трафика при установлении сеансов IP-телефонии.
Более четкая методика будет разрабатываться по мере нарастания основательной базы результатов тестирования SIP-оборудования различных производителей.
Заключение
По прогнозам производителей оборудования IP-телефонии, популярность SIP-телефонии будет расти и темпы этого роста будут превосходить темпы роста IP-телефонии в целом, поэтому сами производители возлагают на SIP большие надежды. По тем же прогнозам резкое возрастание интереса к SIP-протоколу (и соответственно оборудованию использующему SIP-протокол) со стороны конечных пользователей придется как раз на 2006 год. По этой причине за выпуск оборудования использующего протокол SIP вплотную взялись многие компании, работающие в области коммуникаций.
IP-Телефония: Сообщения протокола SIP
Сообщения протокола SIP
Запрос INVITE приглашает пользователя принять участие в сеансе связи. Он обычно содержит описание сеанса связи, в котором указывается вид принимаемой информации и параметры (список возможных вариантов параметров), необходимые для приема информации, а также может указываться вид информации, которую вызываемый пользователь желает передавать. В ответе на запрос типа INVITE указывается вид информации, которая будет приниматься вызываемым пользователем, и, кроме того, может указываться вид информации, которую вызываемый пользователь собирается передавать (возможные параметры передачи информации).
В этом сообщении могут содержаться также данные, необходимые для аутентификации абонента, и, следовательно, доступа клиентов к SIP-серверу. При необходимости изменить характеристики уже организованных каналов передается запрос INVITE с новым описанием сеанса связи. Для приглашения нового участника к уже установленному соединению также используется сообщение INVITE.
Запрос АСК подтверждает прием ответа на запрос INVITE. Следует отметить, что запрос АСК используется только совместно с запросом INVITE, т.е. этим сообщением оборудование вызывающего пользователя показывает, что оно получило окончательный ответ на свой запрос INVITE. В сообщении АСК может содержаться окончательное описание сеанса связи, передаваемое вызывающим пользователем.
Запрос CANCEL отменяет обработку ранее переданных запросов с теми же, что и в запросе CANCEL, значениями полей Call-ID, To, From и CSeq, но не влияет на те запросы, обработка которых уже завершена. Например, запрос CANCEL применяется тогда, когда прокси-сервер размножает запросы для поиска пользователя по нескольким направлениям и в одном из них его находит. Обработку запросов, разосланных во всех остальных направлениях, сервер отменяет при помощи сообщения CANCEL.
Запросом BYE оборудование вызываемого или вызывающего пользователя завершает соединение. Сторона, получившая запрос BYE, должна прекратить передачу речевой (мультимедийной) информации и подтвердить его выполнение ответом 200 ОК.
Рис. 6 Пример запроса INVITE
При передаче сообщений протокола SIP, упакованных в сигнальные сообщения протокола UDP, существует вероятность того, что размер запроса или ответа окажется больше максимально допустимого для данной сети, и произойдет фрагментация пакета. Чтобы избежать этого, используется сжатый формат имен основных заголовков, подобно тому, как это делается в протоколе SDP, Ниже приведен список таких заголовков (Таблица 3).
Таблица 3. Сжатые имена заголовков SIP
Сжатая форма имени | Полная форма имени |
---|---|
c | Content-Type |
e | Content- Encoding |
f | From |
i | Call-ID |
m | Contact ( от «moved») |
l | Content-Length |
s | Subject |
t | To |
v | Via |
При написании имен заголовков в сжатом виде сообщение INVITE, показанное ранее на рисунке 6, будет выглядеть следующим образом (рис. 7):
Рис. 7 Пример запроса INVITE с сокращенными заголовками
Таблица 4. Запросы SIP
Тип запроса | Описание запроса |
---|---|
INVITE | Приглашает пользователя к сеансу связи. Содержит SDP-описание сеанса |
АСК | Подтверждает прием окончательного ответа на запрос INVITE |
BYE | Завершает сеанс связи. Может быть передан любой из сторон, участвующих в сеансе |
CANCEL | Отменяет обработку запросов с теми же заголовками Call-ID, То, From и CSeq, что и в самом запросе CANCEL |
REGISTER | Переносит адресную информацию для регистрации пользователя на сервере определения местоположения |
OPTION | Запрашивает информацию о функциональных возможностях терминала |
После приема и интерпретации запроса, адресат (прокси-сервер) передает ответ на этот запрос. Содержание ответов бывает разным: подтверждение установления соединения, передача запрошенной информации, сведения о неисправностях и т.д. Структуру ответов и их виды протокол SIP унаследовал от протокола HTTP.
Определено шесть типов ответов, несущих разную функциональную нагрузку. Тип ответа кодируется трехзначным числом. Самой важной является первая цифра, которая определяет класс ответа, остальные две цифры лишь дополняют первую. В некоторых случаях оборудование даже может не знать все коды ответов, но оно обязательно должно интерпретировать первую цифру ответа.
Финальные ответы кодируются трехзначными числами, начинающимися с цифр 2, 3, 4, 5 и 6. Они означают завершение обработки запроса и содержат, когда это нужно, результат обработки запроса. Назначение финальных ответов каждого типа рассматривается ниже.
На рисунке 8 представлен пример ответа на запрос INVITE:
Рис. 8 Пример SIP-ответа 200 OK
В этом примере приведен ответ пользователя Watson на приглашение принять участие в сеансе связи, полученное от пользователя Bell. Наиболее вероятный формат приглашения рассмотрен нами ранее (рис. 7). Вызываемая сторона информирует вызывающую о том, что она может принимать в порту 5004 речевую информацию, закодированную в соответствии с алгоритмами кодирования PCMU, GSM. Поля From, To, Via, Call-ID взяты из запроса, показанного на рисунке 7. Из примера видно, что это ответ на запрос INVITE с полем CSeq:1.
После того, как мы рассмотрели запросы и ответы на них, можно отметить, что протокол SIP предусматривает разные алгоритмы установления соединения. При этом стоит обратить внимание, что одни и те же ответы можно интерпретировать по-разному в зависимости от конкретной ситуации. В таблицу 5 сведены все ответы на запросы, определенные протоколом SIP.