понедельник, 27 декабря 2021 г.

Диалоги и транзакции SIP.

Транзакция описывает запрос и любое количество ответов на него. Исключение- метод ACK. ACK входит в транзакцию INVITE, если соединение не было установлено, т.е. окончательный ответ не был 2xx. Если соединение успешно установлено, то ACK является отдельной транзакцией. Причина этого- важность доставки ответов 2хх. Ядро UAS берёт на себя ответственность за их доставку, а UAC - за их подтверждение запросами ACK,

Поле branch заголовка VIA содержит идентификатор транзации, он всегда начинается с z9hG4bK.

Via: SIP/2.0/UDP 10.78.1.132:5060;branch=z9hG4bK1f4cf712;rport


Транзакции позволяют разделять последовательные или параллельные вызовы нескольких устройств, зарегистрированных с одним аккаунтом.


Диалог представляет собой взаимодействие UAC-UAS, которое длится некоторое время. Диалог идентифицируется значением поля Call-ID и метками (tag) полей From и To, и является набором транзакций всего соединения. Диалог создается транзакцией INVITE или SUBSCRIBE, модифицируется транзакцией REINVITE и заканчивается транзакцией BYE.


Запросы бывают начальными и последующими. Начальные запросы (например, первый INVITE) легко определяются по отсутствию To-tag и наличию From-tag, ведь метку To-tag ставит UAS. Последующие запросы содержат такой же Call-ID, To-tag и From-tag (например, REINVITE, ACK или BYE). Таким образом, при параллельном или последовательном вызове разных ТА, будут созданы разные диалоги, отличающиеся метками To-tag.



1 комментарий: