Я пытаюсь понять, как Skype для бизнеса Online работает на сетевом уровне.
В SBO все серверы находятся где-то в облаке MS . Как клиент, у меня есть подключение к Интернету, поэтому я могу разговаривать с серверами, сигнализировать о своем статусе, инициировать звонки и т. Д.
Но как сервер достигает моего клиента, когда кто-то обращается ко мне, а мой клиент обычно сидит за кем-то Маршрутизатор NAT и / или брандмауэр, который не разрешает входящие соединения?
Будет ли он просто не работать в этом случае, или клиент использует такие методы, как опрос сервера (длинный опрос или аналогичные), поэтому все сетевые подключения всегда инициируются клиентом?
Для общего обзора возможностей подключения я могу порекомендовать эту статью с deeplink в соответствующей части.
Что касается портов, используемых клиентом, вы можете найти здесь хорошая таблица .
Что касается того, как это работает, я не нашел официальной документации от Microsoft, но обычно такие соединения работают следующим образом:
IM push выполняется следующим образом. клиент (Skype для бизнеса) открывает TCP-соединение с сервером обмена сообщениями. Это соединение должно оставаться открытым до тех пор, пока телефон включен. К счастью, соединение TCP не использует абсолютно никакой полосы пропускания, когда оно ничего не передает, поэтому оно не тратит впустую много данных, радиопередатчик может отключиться и т. Д.
Соединение может оставаться открытым бесконечно, однако за NAT, Инфраструктура NAT ведет таблицу открытых соединений, которые она обрабатывает, и отбрасывает соединения, которые неактивны в течение некоторого времени, обычно 10-15 минут. Ни одна из сторон не получает об этом уведомления. Таким образом, это обрабатывается путем отправки пакета проверки активности TCP, который обновляет запись в таблице соединений NAT оператора. Это стоит около 50 байт или около того и должно выполняться каждые несколько минут.
Что касается VoIP, насколько я знаю, используется ICE, вы можете проверить эту действительно хорошую статью Джеффа Шерца.