Для переговоров о предпочитаемых параметрах соединения используется протокол H.245. При этом используется специальный управляющий канал H.245, который всегда открыт. Каждая из сторон начинает с объявления своих возможностей. Например, может сообщаться о поддержке видео (H.323 может поддерживать видео), конференц-связи, используемых кодеках и т. п. После того как каждая из сторон узнает возможности противоположной стороны, организуются два однонаправленных канала, с которыми связываются определенные кодеки и которым присваиваются определенные параметры. Поскольку на каждой из сторон может быть установлено разное оборудование, вполне возможна ситуация, когда каждый из однонаправленных каналов использует свой кодек. По достижении договоренности по всем вопросам можно начинать передачу данных (по протоколу RTP). Управление производится RTCP, контролирующим перегрузку. Если передаются видеоданные, RTCP занимается синхронизацией звукового и видеоряда. На рис. 7.35 показаны различные виды логических каналов. После того как на одной из сторон вешают трубку, по каналу Q.931 передается сигнал окончания связи, для того чтобы высвободить не требующиеся более ресурсы, после того как звонок завершен.

Рис. 7.35. Логические каналы между звонящим и вызываемым абонентами во время разговора
После разрыва соединения вызывающий ПК должен снова связаться с привратником и послать ему сообщение RAS с запросом освобождения зарезервированной пропускной способности. Впрочем, вместо этого он может осуществить новый звонок.
Мы до сих пор ничего не говорили о качестве обслуживания, как части H.323, а ведь на самом деле это довольно существенный аспект успешной передачи конференций в реальном времени. Дело в том, что QoS не входит в область рассмотрения H.323. Если сеть, по которой передаются данные, способна обеспечить стабильное соединение без джиттера между ПК и шлюзом, значит, нам повезло и качество обслуживания будет хорошим. В противном случае качество будет, увы, плохое. Однако любой телефонный звонок будет лишен перебоев благодаря дизайну телефонной сети.
SIP — протокол установления соединения
Стандарт H.323 был разработан ITU. В интернет-сообществе многим он показался типичным телекоммуникационным продуктом: громоздким, сложным и недостаточно гибким. Было решено организовать специальный комитет IETF для создания более простой и гибкой системы передачи речи поверх IP. Основным результатом деятельности этого комитета стал протокол SIP (Session Initiation Protocol — протокол установления соединения), последняя версия которого описана в RFC 3261 в 2002 году. Протокол оговаривает способ установки телефонных соединений через Интернет, технологию организации систем для видеоконференций и способы создания других мультимедийных соединений. В отличие от H.323, представляющего собой целый набор протоколов, SIP — это единый модуль, способный взаимодействовать с разнообразными интернет-приложениями. Например, номера телефонов определяются в виде URL, то есть на веб-страницах можно размещать гиперссылки, щелкнув по которым пользователь сможет установить телефонное соединение (примерно так же схема mailto позволяет написать электронное письмо и отправить его по указанному в ссылке адресу).
Протокол SIP позволяет устанавливать и двухсторонние соединения (то есть обычные телефонные соединения), и многосторонние (когда каждый из участников может как слушать собеседников, так и говорить), и широковещательные (когда один из участников говорит, а остальные могут только слушать). Во время сеанса связи могут передаваться аудио-, видео- или другие данные. Эта возможность используется, например, при организации сетевых игр с большим количеством участников в реальном времени. SIP занимается только установлением, управлением и разрывом соединений. Для передачи данных также используются другие протоколы, например RTP/RTCP. SIP — это протокол прикладного уровня, работающий поверх TCP или UDP.
Протокол SIP предоставляет разнообразные услуги, включая поиск вызываемого абонента (который может в данный момент быть далеко от своего домашнего компьютера), определение его возможностей, поддержку механизмов установления и разрыва телефонного соединения. В простейшем случае SIP устанавливает сеанс связи между компьютерами звонящего и вызываемого абонентов. Именно этот случай мы сейчас и рассмотрим.
Телефонные номера в SIP представляются в виде URL со схемой sip. Например, sip:[email protected] свяжет вас с пользователем по имени Ilse, хост которого определяется DNS-именем cs.university.edu. SIP URL могут содержать также адреса формата IPv4, IPv6 или реальные номера телефонов.
Протокол SIP является текстовым, он построен по модели HTTP. Одна из сторон посылает ASCII-сообщение, в котором первая строка содержит имя метода, а ниже следуют дополнительные строки, содержащие заголовки для передачи параметров. Многие заголовки взяты из стандарта MIME, что позволяет SIP взаимодействовать с существующими интернет-приложениями. Шесть методов, определяемых базовой спецификацией, перечислены в табл. 7.17.
Для установки сеанса связи звонящий должен либо создать TCP-соединение с вызываемым абонентом и послать по нему сообщение INVITE, либо послать это же сообщение в UDP-пакете. В обоих случаях заголовки, содержащиеся во второй и всех последующих строках, описывают структуру тела сообщения, содержащего информацию о возможностях звонящего, типах мультимедиа и форматах. Если вызываемый абонент принимает звонок, он посылает в качестве ответа трехразрядный код результата, подобный HTTP (группы этих кодов перечислены в табл. 7.13, код 200 означает прием вызова). Следом за строкой с кодом результата вызываемый абонент может также сообщить данные о своих возможностях, типах мультимедиа и форматах.
Таблица 7.17. Методы SIP
Метод
INVITE
ACK
BYE
OPTIONS
CANCEL
REGISTER
Описание
Запрос установления сеанса связи Подтверждение установления сеанса Запрос окончания сеанса Опрос возможностей хоста Отмена запроса
Информирование сервера переадресации о текущем местоположении пользователя
Соединение устанавливается с использованием протокола тройного рукопожатия, звонящий высылает ACK для окончания работы протокола и подтверждения приема кода 200.
Любая из сторон может послать запрос окончания сеанса связи, для этого используется метод BYE. Сеанс считается законченным после получения подтверждения от противоположной стороны.
Метод OPTIONS применяется для опроса возможностей машины. Обычно это делается перед запуском сеанса связи для того, чтобы определить, поддерживается ли тип сеанса, на который рассчитывает вызывающая сторона (например, передача голоса поверх IP).
Метод REGISTER относится к возможности протокола SIP разыскивать пользователя и соединяться с ним, даже если его нет дома. Сообщение, содержащее данный метод, отправляется на поисковый сервер SIP (location server), хранящий данные о том, кто где находится в данный момент. Впоследствии с помощью этого сервера можно попробовать найти абонента. Операция переадресации, используемая при этом, показана на рис. 7.36. На этом рисунке мы видим, что звонящий отправляет сообщение INVITE на прокси-сервер. Это делает возможную переадресацию незаметной. Прокси пытается разыскать абонента и посылает INVITE по найденному адресу. Дальнейшее общение представляет собой коммутацию последовательности сообщений при тройном рукопожатии. Сообщения LOOKUP и REPLY не входят в протокол SIP; на этой стадии может использоваться любой подходящий протокол в зависимости от типа поискового сервера.
SIP обладает еще множеством других возможностей, которые мы здесь не стали описывать подробно. Среди них есть функции ожидания вызова, отображения звонка, шифрования и аутентификации звонящего. Кроме того, есть возможность звонить с компьютера на обычный телефон, если есть доступ к соответствующему шлюзу между Интернетом и телефонной системой.