Определение адреса, порта и транспортного протокола для пересылки следующему элементу |
|
Внутренняя политика прокси-сервера может предписывать пересылать запрос на определенный IP-адрес, порт и с использованием транспортного протокола независимо от значений в заголовке Route и поле Request-URI. Такая политика не должна использоваться, если прокси-серверу достоверно не известно, что IP-адрес, порт и тип транспортного протокола соответствуют серверу, придерживающемуся стандартных процедур обработки заголовка Route. Однако такой механизм пересылки запроса на определенном звене сети не является наилучшим; вместо него рекомендуется использовать описанный выше механизм работы с заголовком Route. Если нет возможности воспользоваться им, прокси-сервер приступает к выполнению процедур поиска SIP-сервера, которому следует переслать запрос. Если прокси-сервер модифицировал запрос для его пересылки на strict-router в соответствии с§ 5.5.2, процедуры должны быть применены к значению в поле Request-URI. Если запрос не был изменен, процедуры применяются к первому значению заголовка Route. Выполнение процедур DNS-поиска даст упорядоченные наборы взаимосвязанных величин (адрес, порт, транспортный протокол). Независимо от того, какой тип URI будет использоваться при поиске, если Request-URI определяет SIPS-pecypc, то прокси-сервер будет выполнять процедуры поиска, как если бы исходным адресом для этого был SIPS URI. Прокси-сервер должен попытаться доставить сообщение в соответствии с первым набором взаимосвязанных величин, а в случае неудачи двигаться вниз по списку, производя новые попытки вплоть до получения успешного результата. Для каждого нового набора прокси-сервер форматирует в соответствии с ним сообщение и пересылает запрос, используя новую клиентскую транзакцию. Поскольку каждая попытка приводит к созданию новой транзакции, она представляет новую ветвь. Таким образом, параметр «branch», в поле заголовка Via, помещаемый туда на следующем, 8-м этапе, будет разным при разных попытках. Если клиентская транзакция сообщает о невозможности передать запрос или об окончании времени ожидания окончательного ответа, прокси-сервер продолжает работу, используя следующий в списке набор взаимосвязанных величин. Если список заканчивается, это означает, что запрос не может быть передан этому серверу в списке адресов (target set). Прокси-сервер не помещает ничего в буфер ответов, но в остальном работает так, как если бы сервер передал окончательный ответ с кодом 408 (Request Timeout). |

