Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медиатор.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
12.75 Mб
Скачать

3.4.11.Установление соединения с участием сервера переадресации

Рисунок 3‑44

Первоначально запрос INVITE, адресованный User В (UserВ@domainSip.ru), передается на известный адрес сервера переадресации.

Сервер переадресации запрашивает контактный (текущий) адрес пользователя User В у сервера определения местонахождения.

Cервер определения местонахождения сообщает ему этот адрес, например userВ@workstation11.domainsip.ru.

Сервер переадресации в ответе 302 Moved temporarily передает вызывающей стороне текущий адрес вызываемого пользователя, или список текущих адресов вызываемого пользователя и предлагает вызывающему пользователю самому выбрать один из них.

Вызывающая сторона подтверждает прием ответа 302 посылкой запроса ACK.

Теперь User А может связаться непосредственно с абонентом В. Для этого создается новый запрос INVITE с контактным адресом вызываемого пользователя (userВ@workstation11.domainsip.ru).

После завершения обработки поступившего запроса оборудование вызываемой стороны сообщает своему пользователю о входящем вызове, а встречной стороне передает ответ 180 Ringing.

После ответа пользователя User В передается ответ 200 OK, который подтверждается запросом ACK.

На этом фаза установления соединения закончена и начинается процесс передачи мультимедийных данных.

После отбоя любого из абонентов, в нашем случае после отбоя вызываемого абонента, передается запрос BYE.

Сервер агента пользователя А, принявший запрос BYE, дает команду разрушить соединение (прекращение передачи и ожидания пользовательской информации) и передает ответ 200 ОК.

3.4.12.Формат сообщений

Рисунок 3‑45

Протокол SIP – это текстовый протокол, использующий набор символов ISO 10646 в кодировке UTF-8. Запросы и ответы используют один базовый формат сообщения, одинаковый, несмотря на различия в наборе символов и в синтаксисе. Сообщения обоих типов состоят из: стартовой строки, одного или нескольких полей заголовков, пустой строки, обозначающей конец полей заголовков, тела сообщения (необязательно).

Стартовая строка запроса - Request Line

Рисунок 3‑46

Стартовая строка представляет собой начальную строку любого SIP-сообщения.

SIP-запросы характеризуются наличием стартовой строки Request-Line. Сервер определяет тип принятого запроса по названию, указанному в стартовой строке. Request-URI – указывает на пользователя или сервис, к которому адресован данный запрос. Завершается строка символом перевода каретки CRLF.

Стартовая строка ответа - Status Line

Рисунок 3‑47

Характерное отличие SIP-ответов от запросов – это наличие в стартовой строке строки состояния Status-Line. Status-Line содержит: версию протокола и код ответа (Status-Code) со связанной с ним текстовой расшифровкой (Reason-Phrase), разделённые пробелом.

Заголовоки

Рисунок 3‑48

Каждый заголовок состоит из имени заголовка, которое определяет тип заголовка, символа «двоеточие» и значения заголовка. В заголовке могут также присутствовать параметры, в этом случае они представляют собой последовательность пар «параметр=значение», разделённых знаком «;». «-»??

Порядок следования заголовков в сообщении не имеет значения.

Формат значения заголовка зависит от имени заголовка. Это всегда будет последовательность текстовых октетов в кодировке UTF-8 или комбинация символьных форм (tokens), пустого пространства (whitespace), разделительных знаков и строк, заключенных в кавычки.

Заголовки To и Fm

Заголовки To и From содержат списочный адрес (URI) вызываемого и вызывающего пользователя соответственно и, опционально, имя вызываемого и вызывающего пользователя.

Поле заголовка From должно содержать параметр «tag», созданный клиентом UA. Если диалог еще не создан, в поле To параметр «tag» отсутствует.

В заголовках To и From ответа на запрос содержатся те же значения, что и в самом запросе. В ответе на запрос INVITE (кроме ответа 100Trying) вызываемый UA добавляет параметр tag в заголовок To.

Tag заголовка To в совокупности с tag заголовка From и значением заголовка Call-Id идентифицирует диалог между двумя его участниками.

Заголовок Call-ID

Заголовок Call-ID – уникальный идентификатор сеанса связи или всех регистраций отдельного клиента, его значение должно быть одинаково для всех запросов и ответов, передаваемых любым из двух UA в процессе сессии. Значение Call-ID при создании сессии присваивает сторона, которая ее инициирует. Заголовок состоит из буквенно-числового значения, в него может быть также добавлено имя рабочей станции, которая присвоила этот идентификатор. Между ними в таком случае стоит символ «@». Все SIP-агенты должны иметь средства, гарантирующие, что Call-ID, созданный ими, не будет случайно сгенерирован другим UA.

Заголовок Cseq

Заголовок Cseq – уникальный идентификатор запроса, относящегося к одному соединению. Он служит для корреляции запроса с ответом на него. Заголовок состоит из двух частей: порядкового номера запроса и типа запроса. Для запросов вне диалога, запросов, инициирующих диалог, значение порядкового номера выбирается произвольно.

По заголовку CSeq в ответе можно определить, на какой запрос он был отправлен.

Заголовок Contact

Как правило, в заголовке Contact находится текущий контактный адрес пользователя, на который он может принимать входящие сообщения. Заголовок Contact может содержать отображаемое имя (display name), адрес с его параметрами и параметры заголовка.

Заголовки, описывающие характеристики тела сообщения

Заголовки, начинающиеся со слова Content, описывают характеристики тела сообщения.

Content-Type - определяет тип тела сообщения.

Content-Length - указывает размер в байтах тела сообщения (в десятичном виде).

Content-Language- определяет язык, на котором составлено тело сообщения.

Content-Encoding- указывает дополнительные виды кодирования тела сообщения.

Характеристики сессии, такие как тип медиа-информации, используемый кодек или частота дискретизации описываются с помощью протокола описания сессии – Session Description Protocol (SDP). Это SDP-описание переносится SIP-сообщением в теле сообщения, значение заголовка Content-Type в этом случае равно "application/sdp". Если сообщение не содержит тела, то заголовки, описывающие его, также отсутствуют.

Заголовок Via

Поле заголовка Via содержит список элементов сети SIP, через которые запрос на данный момент прошел.

Каждый прокси-сервер добавляет в заголовок Via поле со своим адресом. В конечном результате заголовок отображает весь путь, пройденный запросом. Список нужен для того, чтобы избежать ситуаций, в которых запрос пойдет по замкнутому пути, а также для тех случаев, когда необходимо, чтобы запросы и ответы обязательно проходили по одному и тому же маршруту.

Заголовок Max-Forwards

Заголовок Max-Forwards используется в любом типе SIP-запросов, чтобы ограничить число серверов или шлюзов, через которые проходит запрос. Значение заголовка должно быть целым числом в пределах от 0 до 255, отражающим оставшееся количество пересылок, которое разрешено для сообщения. Это число уменьшается каждым сервером, который пересылает запрос дальше. В качестве первоначального значения рекомендуется брать 70.