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