Нантакет — ваша служба прослушивает UDP или TCP?
Для UDP - то, что вы описываете, - это то, для чего был разработан протокол STUN. Это соответствует вашему определению "какой-то простой команды, и они отправят специальный пинг"
STUN - это протокол, очень похожий на ping (UDP), для сервера, который возвращает клиенту, какой IP-адрес и порт он видит в качестве клиента. Затем клиент может использовать ответ от сервера и сравнить результат с тем, что, по его мнению, является его локально пронумерованным IP-адресом. Если ответ сервера соответствует локально пронумерованному IP-адресу, клиентский хост может самостоятельно определить, что он напрямую подключен к Интернету. В противном случае клиент должен предположить, что он находится за NAT, но для большинства маршрутизаторов вы только что создали сопоставление портов, которое можно использовать для других сценариев подключения P2P.
Кроме того, вы можете использовать атрибут RESPONSE-PORT в запросе привязки STUN для сервер для ответа на другой порт. Это позволит вам эффективно определить, защищены ли вы брандмауэром или нет.
TCP - это становится немного сложнее. STUN можно частично использовать для определения того, находитесь ли вы за NAT. Или просто сделать http-запрос на whatismyip.com и проанализировать результат, чтобы увидеть, есть ли NAT. Но это становится сложно, так как в Интернете нет службы, о которой я знаю, которая бы проверила обратное TCP-соединение с вами.
Учитывая все вышеизложенное, подавляющее большинство пользователей широкополосного доступа, вероятно, находятся за NAT, который также действует как брандмауэр. Либо предоставляется их интернет-провайдером, либо их собственным устройством беспроводного маршрутизатора. И даже если это не так, большинство операционных систем имеют своего рода минимальный брандмауэр для блокировки нежелательного трафика. Таким образом, наличие клиента P2P очень ограничено, поскольку он может работать только с прямыми соединениями.
С учетом сказанного, в Windows (и, вероятно, в других) вы можете запрограммировать установочный пакет вашего приложения, который может зарегистрироваться в брандмауэре Windows, чтобы он не был заблокирован. Но если вы не нацелены на Windows, вам, возможно, придется попросить пользователя вручную исправить его программное обеспечение брандмауэра.
О, бессовестный штекер. Вы можете использовать этот сервер STUN с открытым исходным кодом и клиентскую библиотеку, которая поддерживает всю семантику, описанную выше. Свяжитесь со мной в автономном режиме, если вам нужен доступ к ошеломляющему сервису.
person
selbie
schedule
21.02.2012