• Как sip софтфон узнает ip-адрес устройства, на котором установлен?

    @Gansterito
    > или софтфон вообще сам не выполняет запросов на определение ip
    Софтфон должен знать свой IP. Если не считать IP-адреса в заголовке IP-пакета, то еще он встречается в заголовке Contact и в SDP. Что касается IP-пакета, тут все просто - пакет идет с тем source ip, какой висит на исходящем интерфейсе в сторону сервера регистрации, если жестко не задан другой адрес. Адрес в Contact - тут сложней. В справочнике сказано - "Агент пользователя не должен передавать новых сообщений регистрации (запросов, содержащих новых сообщений в заголовке Contact), пока не получит окончательный ответ от сервера регистрации на предыдущий запрос...". Еще: "Запрос Register может включать в себя заголовок Contact, содержащий ноль или более контактых адресов.".
    Какие тут могут быть варианты:
    1) SIP-клиент шлет несколько REGISTER-пакетов с разными адресами в Contact, пока не пройдет регистрация.
    2) SIP-клиент шлет один REGISTER-пакет с несколькими адресами в заголовке Contact.
    Видимо, зависит от реализации клиента.

    Если на пути между клиентом и сервером стоит NAT с функционалом SIP ALG, то заголовок Contact будет подвержен изменению в соответствии с логикой работы этого самого SIP ALG.

    Для определения адреса за NAT (а также тип NAT) SIP-клиент может использовать STUN-сервер (SIP ALG в этом случае уже не нужен и даже может мешать). В этом случае заголовок Contact будет сформирован без локального адреса, а сразу с публичным IP-адресом и портом.
    Ответ написан
    2 комментария