Подтвердить что ты не робот

Как работает Skype без переадресации портов?

Я разрабатываю приложение p2p, которое работает на порте 30000. Мой маршрутизатор не является UPnP, поэтому мне нужно перенаправить порт на маршрутизатор. Но Skype другое приложение p2p работает без перенаправления портов на моем компьютере. Когда я проанализировал его с помощью wirehark, я нашел его используя порт UDP 48980, 58544. Я использую С++.

Существует библиотека в python здесь, которая делает это для маршрутизаторов Nat PnP. Возможно ли программно перенаправить порт на маршрутизатор независимо от типа маршрутизатора и операционной системы. Каким должен быть подход, чтобы сделать это на языке С++ или на любом другом языке.

4b9b3361

Ответ 1

Skype работает очень интересно. Из того, что я прочитал (и это было давно), он работает следующим образом:

  • Сервер Skype поддерживает список всех пользователей и IP-адресов.
  • Пользователь Skype A хочет поговорить с пользователем B
  • Пользователь Skype A отправляет сетевой пакет пользователю IP-адрес пользователя и ждет ответа. (пользователь B никогда не получает этот пакет).
  • Пользователь Skype Сообщает серверу комбинации IP/портов, на которой он ожидает ответа
  • Сервер уведомляет пользователя B для отправки ответа пользователю A на указанный порт
  • Соединение выполнено.

Вероятно, это упрощено, но в последний раз я проверил, как это работает. (Кто-то исправит меня, если я ошибаюсь).

Изменить: исправлена проблема с пулями

Ответ 4

Вы должны использовать промежуточный сервер и инициировать связь с клиентской стороны. Как упоминал Йоссариан, с этого момента одна из возможностей - пробивка отверстий UDP. В зависимости от типа приложения (и действительно ли это P2P или нет) вы могли бы поддерживать промежуточный сервер на месте все время.

Ответ 5

Skype использует другие одноранговые узлы в качестве промежуточной точки, когда прямое соединение невозможно.

то есть. Peer A хочет подключиться к одноранговому узлу B, но сверст B имеет все порты закрыты, тогда связь инициируется через одноранговую сеть C с открытыми портами.

Ответ 6

Имейте некоторый опыт в реализации приложений P2P и заставить их работать за NAT-маршрутизаторами.

Skype использует перфорирование отверстий UDP для работы за NAT-маршрутизаторами. Я написал статью и сделал демо-ролик, чтобы помочь другим реализовать аналогичные приложения. Здесь также приведены ссылки на полезные библиотеки, которые выполняют большую часть работы на местах, например libutp.

→ > Пробивка отверстий UDP Демо-видео и полезные Libs.