Заголовок Call-ID – это уникальный идентификатор, объединяющий группу сообщений. Он должен совпадать для всех запросов и ответов, отправляемых любым из двух UA в процессе диалога. При создании нового диалога, заголовок Call-ID должен быть выбран UAC как уникальный идентификатор. Все SIP-агенты пользователя должны иметь средства, чтобы гарантировать, что Call-ID, созданный ими, не будет случайно генерирован другим UA.
При генерации значений Call-ID рекомендуется использовать случайные криптографические идентификаторы (по RFC 1750), их использование обеспечивает некоторую защиту от взлома сессий и уменьшает вероятность возникновения коллизий Call-ID. Значения заголовка Call-ID чувствительны к регистру и должны сравниваться побайтно.
Когда запросы отправляются повторно после получения ответа с кодом ошибки, требующего коррекции запроса, (например, запрос на предоставление отклика аутентификации), эти повторные запросы не рассматриваются как новые и они передаются со старым значением заголовка Call-ID.
|
|
Пример поля заголовка Call-ID:
Call-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6@psuti.ru
Формирование заголовка CSeq
Поле заголовка CSeq (Sequence Command) служит средством для идентификации и упорядочивания транзакций в диалоге. Поле заголовка CSeq содержит порядковый номер и тип запроса. Для запросов вне диалога, кроме REGISTER, значение порядкового номера может быть произвольным. Величина порядкового номера выражается 32-разрядным целым числом и должна быть меньше, чем 231. Клиент может выбирать любой механизм для создания значений заголовка CSeq.
Пример поля заголовка CSeq:
CSeq: 456 INVITE