Заголовки Via содержат записи обо всех устройствах (прокси, АТС и т.п.), которые прошел начальный запрос на своём пути к получателю. Ответы на запрос получатель должен отправлять на адрес из последнего заголовка Via. На обратном пути к отправителю каждое устройство удаляет заголовок Via со своим адресом, таким образом к отправителю приходит ответ с одним исходным Via. Для statefull маршрутизации используются заголовки Record-Route и Route. Каждый прокси добавляет к начальному запросу заголовок Record-Route со своим адресом. Важна последовательность заголовков, т.к. их порядок определяет путь запроса через сеть.
Для непосредственных ответов (таких как "200 OK") на начальный запрос в рамках одной транзакции используются адреса из заголовков Via в обратном порядке. А вот для маршрутизации последующих сообщений диалога (ACK, BYE, Re-INVITE) берутся адреса из Record-Route. Для этого UAC формирует заголовок Route используя адреса из заголовка Record-Route, полученного с финальным ответом на начальный запрос. Для формирования заголовка Route адреса берутся в обратном порядке, что позволяет проходить прокси в нужной очерёдности. Прокси, получивший сообщение с заголовком Route, пересылает это сообщение на адрес из Route.
Таким образом, использование заголовков Record-Route позволяет сохранить путь запросов через сеть в рамках всего диалога. Что может быть важно для корректной маршрутизации и биллинга.
Про диалоги и транзакции читаем тут.
Комментариев нет:
Отправить комментарий